zoukankan      html  css  js  c++  java
  • PADS在注册表中的菜单栏数据

    位于

    [HKCUSoftwareMentor GraphicsPADS9_5PADS LayoutWorkspacesENUDefaultBCGToolBar-593980]

    下的二进制数据项:Buttons。

     字符串的表达 

    该二进制数据记录字符串时,在字符串数据头部增加1byte用来记录长度。

    05,26,46,69,6c,65

    首位05即表示接下来这个字符串的长度为5byte,“&File”。

     菜单项的表达 

    记录菜单的数据长度不定,结构如下。

    0b,00,00,00, // CommandId 菜单的命令id,特殊值:FF FF FF FF为分隔线;00 00 00 00为拥有子菜单的菜单项。当commandId查找不到对应的command时,该菜单项会变成不可用。这是自定义菜单异常的常见情况。
    00,00,00,00, // MenuItemType 通常都是全零,分隔线和最近使用的Macros,此处为00 00 04 00。
    ae,00,00,00, // IconId 若菜单有图标,这里会存放图标信息,否则为FF FF FF FF。
    04,26,4e,65,77, // Text 菜单显示的文字。
    00,00,00,00,00,00,00,00, // IsCustomed PADS的菜单项此处全零。自定义的菜单都为01 00 00 00 00 00 00 00。
    00,00,00,00,01,00,00,00, // IconType 有图标值 00 00 00 00 01 00 00 00;没图标为 10 00 00 00 00 00 00 00 
    01,00,00,00,00,00,00,00, // 未知,始终为该值
    00,00,00,00,01,00,00,00, // 未知,始终为该值
    00,00 // 子菜单的个数

    菜单项之间的分隔

    01,80,// 01 80 表示接下来还有菜单项,00 00 表示菜单项描述结束。

    如果把最后一个菜单之前的分隔标记01 80替换为 00 00的话:

    1. 启动PADS后最后一个菜单会消失掉,因为解析到此就结束了;最后一个菜单不会被加载到PADS界面中;

    2. 在关闭PADS后,因为关闭时PADS会使用当前的UI重新写入注册表,因此原先位于 00 00 之后的二进制数据会全部被删掉。最后一个菜单的数据也就无法恢复了。

    Buttons 数据开始的部分 

    00,20,00,00,01,00,00,00,07,00, // 未知
    ff,ff,01,00, // 未知
    16,00, // 字符串长度,这里用了 2byte记录长度,而不是1byte。
    43,42,43,47,50,54,6f,6f,6c,62,61,72,4d,65,6e,75,42,75,74,74,6f,6e, // CBCGPToolbarMenuButton

    Buttons数据结束的部分 

    最后一个菜单项的数据结束后,会有2byte 0表示其后再无menuitem。然后才是

    00,00 // 表示后续没有菜单项了
    
    00,00, // 未知
    08,4d,65,6e,75,20,42,61,72,  // Menu Bar
    6d,00,00,00 // 未知
  • 相关阅读:
    数据库面试题
    网络编程_TCP协议_客户端与服务端
    29-街道最短路径问题(哈曼顿距离)
    60-安慰奶牛(最小生成树)
    20-集合问题(并查集)
    59-算法训练 操作格子 (线段树)
    58-最小乘积(基本型)
    11-vector的使用
    20-取石子动态规则(hdu2516 斐波那契博弈)
    19-格子游戏(hdu2147博弈)
  • 原文地址:https://www.cnblogs.com/mumuliang/p/4309110.html
Copyright © 2011-2022 走看看