MENUITEMINFO结构包含关于一个菜单项信息

typedef struct tagMENUITEMINFO {
    UINT    cbSize; 
    UINT    fMask; 
    UINT    fType; 
    UINT    fState; 
    UINT    wID; 
    HMENU   hSubMenu; 
    HBITMAP    hbmpChecked; 
    HBITMAP    hbmpUnchecked; 
    DWORD   dwItemData; 
    LPTSTR  dwTypeData; 
    UINT    cch;

HBITMAP     hbmpItem;
} MENUITEMINFO, FAR *LPMENUITEMINFO;

成员
cbSize

结构的大小,字节

fMask
        检索或设置,这个成员可以使用一个或多个以下值.

MIIM_CHECKMARKS 检索或设置hbmpChecked和hbmpUnchecked成员

MIIM_DATA 检索或设置dwItemData成员

MIIM_ID 检索或设置wID成员

MIIM_STATE 检索或设置fState成员

MIIM_SUBMENU 检索或设置hSubMenu成员

MIIM_TYPE 检索或设置fType和dwTypeData成员

fType 
       菜单项类型.这个成员可以使用一个或多个这些值
 
     MFT_BITMAP  使用一个位图显示菜单项.dwTypeData低位字是该位图的句柄.并且cch被忽视.

MFT_MENUBARBREAK  放置菜单项在新行上(适用于菜单栏)或在新列内(适用于下拉菜单,子菜单,快捷菜单).对于下拉菜单,子菜单,或快捷菜单,用垂直线分隔以前的列和新的列

MFT_MENUBREAK  放置菜单项在新行上(适用于菜单栏)或在新列内(适用于下拉菜单,子菜单,快捷菜单).对于下拉菜单,子菜单,或快捷菜单,这个列不被垂直线分开

MFT_OWNERDRAW  分配责任到那个窗体菜单绘制自己的菜单项.在菜单第一次显示之前窗体收到一条WM_MEASUREITEM消息,和菜单项必须更新时收到一条WM_DRAWITEM消息。如果该值被指定,则dwTypeData成员包含一个应用程序定义的值。

MFT_RADIOCHECK  如果hbmpChecked成员是NULL ,显示选中的菜单项使用一个单选按钮来代替一个复选标记

MFT_RIGHTJUSTIFY  向右对齐菜单项和所有后来的项,如果菜单项在菜单栏内这个值才是唯一有效的

MFT_RIGHTORDER  Windows 95, Windows NT 5.0,和随后的:指定那个级联菜单从右至左(默认的是左

至右).这是支持习惯右至左的语言,比喻阿拉伯语的和希伯来语。

MFT_SEPARATOR 指定那个菜单项是一个分隔条.一个分隔条菜单项显示为一条水平分隔线.

dwTypeDate和cch成员被忽视. 这个值在一个下拉菜单,子菜单,或快捷菜单才是有效的

MFT_STRING     用一个文本字符串显示菜单项.dwTypeData成员指示一个以NULL结尾的字符串,并且cch

成员是字符串的长度

MFT_BITMAP, MFT_SEPARATOR, and MFT_STRING 任何一个值都不能相互组合使用,只有在设置了fMask为

MIIM_TYPE时才能使用fType。

fState
         菜单项的状态.这个成员可以是一个或多个的这些值:
 
         MFS_CHECKED 复选的菜单项.至于更多关于菜单项选中的信息,看hbmpChecked成员.
 
         MFS_DEFAULT  指定默认的菜单项。一个菜单仅仅只可以包含一个默认的菜单项,用粗体显示。
 
         MFS_DISABLED菜单项无效并变灰使得它不能被选择.等效于MFS_GRAYED.
 
         MFS_ENABLED  激活菜单项使它可以被选择。这是默认的状态.

MFS_GRAYED菜单项无效并变灰使得它不能被选择.等效于MFS_DISABLED.
 
         MFS_HILITE 菜单项高亮显示。
 
         MFS_UNCHECKED 取消复选菜单项.至于更多关于菜单项unchecked信息,看hbmpUnchecked成员变量

MFS_UNHILITE 移除菜单项的高亮显示,这是默认状态.

使用fState前应设置了fMask的MIIM_STATE标记。

wID
           应用程序定义的16位的值用来标识菜单项, 只有在设置了fMask的MIIM_ID时才能使用
 
hSubMenu
          菜单项相关联的下拉菜单或子菜单的的句柄。如果菜单项不是一个打开的下拉菜单或子菜单,那这个成员是NULL, 该项只有在设置了fMask的MIIM_SUBMENU时才能使用

hbmpChecked
         菜单项被选中时显示在一侧的位图的句柄.如果这个成员是NULL,使用一个默认的位图.如果为fType指定了

MFT_RADIOCHECK,这个默认的图片是子弹一样的图片。否则它是复选标记,该项只有在设置了fMask的MIIM_CHECKMARKS时才能使用。

hbmpUnchecked

菜单项没有被选中时显示在一侧的位图的句柄.如果这个成员是NULL,没有位图被使用,该项只有在设置了fMask为MIIM_CHECKMARKS时才能使用。

dwItemData 
             应用程序定义的菜单项相关联的值,该项只有在设置了fMask的MIIM_DATA时才能使用。

dwTypeData 
             菜单项的内容,它的具体意义依赖于fTYPE值,并且它只能在fMask设置了MIIM_TYPE标记时才能被使用;

要检索一个MFT_STRING类型的菜单项,首先要得到该字符串的大小,通过设置MENUITEMINFO结构的dwTypeData值为空并调用函数GetMenuItemInfo得到的cch值就是字符串的大小,然后分配一个字符串大小的缓冲区,把指向缓冲区的指针存赋给dwTypeData并再次调用GetMenuItemInfo函数用字符串来填充缓冲区。如果检索其它类型的菜单项,GetMenuItemInfo函数会赋给dwTypeData一个类型由fType成员指定的值。当使用SetMenuItemInfo函数时,dwTypeData必须包含一个类型由fType成员指定的值,该项只有在设置了fMask成员的MIIM_STRING标记时才能使用。

cch
         当检索一个MFT_STRING类型菜单项的信息时,为菜单项文本(TCHAR)的长度。这个成员只能在当设置了fMask成员的MIIM_TYPE标记时使用,否则为0。当菜单项的内容由函数SetMenuItemInfo设置时,这个成员将被忽略。

在调用GetMenuItemInfo之前,程序必须由dwTypeData设置该成员为缓冲区的长度。 如果要检索的菜单项类型为MFT_STRING(由fType成员指定),这时GetMenuItemInfo设置cch为被检索字符串的长度。如果检索的是其它类型的菜单项,GetMenuItemInfo设置cch的值为0。

该项只有在设置了fMask成员的MIIM_STRING标记时才能使用。

hbmpItem

菜单项上显示位图的句柄,它可能是以下标记中的一个,该项只有在设置了fMask成员的MIIM_BITMAP标记时才能使用。

HBMMENU_CALLBACK

一个由拥有该菜单的窗口绘制的位图。应用程序必须处理WM_MEASUREITEM和WM_DRAWITEM消息。

HBMMENU_MBAR_CLOSE

菜单栏的关闭按钮

HBMMENU_MBAR_CLOSE_D

禁用菜单栏的关闭按钮

HBMMENU_MBAR_MINIMIZE

菜单栏的最小化按钮

HBMMENU_MBAR_MINIMIZE_D

禁用菜单栏的最小化按钮

HBMMENU_MBAR_RESTORE

菜单栏的还原按钮

HBMMENU_POPUP_CLOSE

子菜单的关闭按钮

HBMMENU_POPUP_MAXIMIZE

子菜单的最大化按钮

HBMMENU_POPUP_MINIMIZE

子菜单的最小化按钮

HBMMENU_POPUP_RESTORE

子菜单的还原按钮

HBMMENU_SYSTEM

Windows图标或是在dwItemData中由窗口指定的图标。

备注:

一个菜单可以用用文本和位图两种方式中的一种方式显示菜单项,而不能同时使用。
        MENUITEMINFO 结构体可以被GetMenuItemInfo, InsertMenuItem, and SetMenuItemInfo 函数使用

MENUITEMINFO结构的翻译(转)相关推荐

  1. 重磅更新!YoloV4最新论文与源码!权重!结构!翻译!

    今年初 YOLO 之父Joseph Redmon宣布推出CV界,引起轩然大波,大家纷纷猜测YOLO是否不会再出v4版,退出历史舞台. 今天,YOLOv4重磅发布,作者为俄罗斯开发者 Alexey Bo ...

  2. 编译原理——数组结构的翻译

    我们在这篇文章中只讨论静态数组的翻译,也就是在编译之前就已经确切知道大小的数组.并且我们把数组的下界定为1,也就是说数组下标是从1开始逐渐增长的. A(1,1) A(1,2) A(1,3) A(1,4 ...

  3. CVPR 2019 | INIT:针对实例级的图像翻译

    作者丨薛洁婷 学校丨北京交通大学硕士生 研究方向丨图像翻译 研究动机 近年来关于图像翻译的研究越来越多,其中比较经典的有监督模型包括 Pix2Pix, BicycleGAN 等,无监督模型包括 Cyc ...

  4. ResNet之残差结构的理解

    ResNet 论文 2015年提出的ResNet 2016年改进后的ResNet 博客 本人实现的2015-2016的ResNet网络复现 深度学习-残差resnet网络原理详解 ResNet详解-- ...

  5. 论文翻译-基于深度残差收缩网络的故障诊断 Deep Residual Shrinkage Networks for Fault Diagnosis

    深度残差收缩网络是深度残差网络的一种改进,针对的是数据中含有噪声或冗余信息的情况,将软阈值化引入深度残差网络的内部,通过消除冗余特征,增强高层特征的判别性.以下对部分论文原文进行了翻译,仅以学习为目的 ...

  6. 【学英语玩程序】科技英语翻译总结

    图片来源:作者绘制 余光中先生曾在"怎样改进英式中文?──论中文的常态与变态"这篇文中批评了英式中文,大家不妨通过以下链接阅读. https://www.translators.c ...

  7. 常用英语翻译与技巧总结

    常用翻译技巧总结 个人认为,翻译题很重要!考研是个充实自己的过程,只要你还需要英语,就离不开翻译,所以大家应该引起足够重视. 首先个人推荐一本书,XDF唐静老师的<拆分与组合翻译法>,我听 ...

  8. 科技英语翻译计算机化考试,科技英语的翻译技巧

    摘要: 本文分析和探讨了科技英语翻译的若干特点和翻译规律,如词类转换.名词化结构的使用.省略与补充等.掌握这些科技英语的翻译技巧是非常必要的. 关键词: 科技英语 翻译 技巧 科技英语(English ...

  9. 网络七层结构是干啥的?看这篇文章就够了

    前言 "物理层.数据链路层.网络层.传输层.会话层.表示层和应用层",今天我们的目标就是把这些个玩意,翻译成"人话",保证你一看就懂,一学就废~ 网络七层结构, ...

最新文章

  1. linux 命令行选项
  2. 战神引擎修改服务器时间,修改战神引擎手游进入游戏公告内容教程
  3. 跟我学Windows7的33个技巧(二)
  4. ASP.NET Core技术研究-全面认识Web服务器Kestrel
  5. Codeforces Round #734 (Div. 3) (A-D1)
  6. mysql语句1=1_mysql - “where 1 = 1”语句
  7. 西游中算命先生袁守诚泄露了天机,为何却是泾河龙王被砍头?
  8. 16 张图教你如何从 0 到 1 构建一个稳定、高性能的 Redis 集群!
  9. arcore与unity_Android ARCore –与相机的距离
  10. webpack-internal:///./node_modules/vue/dist/vue.esm.js:629 [Vue warn]: Invalid prop: type check fail
  11. [转载] LINUS:利用二级指针删除单向链表
  12. Kafka从上手到实践 - Kafka集群:启动Kafka集群 | 凌云时刻
  13. matlab数字图像处理-找不同
  14. Lua 斗地主算法实现
  15. String intern方法
  16. 故障恢复控制台的启动方法
  17. fpga时序相关—set_input_delay和set_output_delay
  18. 华硕ASUS 笔记本 改WIN7 BIOS 设置详解
  19. 炉石传说外 挂记(序)
  20. Spark高级分析与机器学习笔记

热门文章

  1. 【错误记录】Groovy 函数拦截调用 invokeMethod 导致栈溢出 ( java.lang.StackOverflowError )
  2. 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )
  3. 【Android 逆向】IDA 工具使用 ( 同步指定的 IDA View 视图 | Hex View 数据格式 | 过滤设置 )
  4. 【错误记录】Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )
  5. 【Flutter】Dart 数据类型 Map 类型 ( 创建 Map 集合 | 初始化 Map 集合 | 遍历 Map 集合 )
  6. 【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )
  7. 【数据挖掘】基于层次的聚类方法 ( 聚合层次聚类 | 划分层次聚类 | 族间距离 | 最小距离 | 最大距离 | 中心距离 | 平均距离 | 基于层次聚类步骤 | 族半径 )
  8. 【数据挖掘】基于密度的聚类方法 - DBSCAN 方法 ( DBSCAN 原理 | DBSCAN 流程 | 可变密度问题 | 链条现象 | OPTICS 算法引入 | 聚类层次 | 族序概念 )
  9. 【网站建设】Linux上安装MySQL - 12条命令搞定MySql
  10. [题解] 2019牛客暑期多校第三场H题 Magic Line