菜单的概要在“Windows编程的基础”中提到了。在这里,对菜单的制作进行更详细的说明。
1.菜单的制作
菜单将数据设置在下面的MENUITEM结构中,用InsertMenuItem函数创建。
typedef struct tagMENUITEMINFO { fMask
UINT cbSize; // 结构体的大小 --
UINT fMask; // 设置、变更用标志 --
UINT fType; // 菜单项目的种类 MIIM_TYPE
UINT fState; // 菜单项目的状态 MIIM_STATE
UINT wID; // 应用程序定义的16位值 MIIM_ID
HMENU hSubMenu; // 副菜单的句柄,如果没有NULL MIIM_SUBMENU
HBITMAP hbmpChecked; // 检查用图像的句柄 MIIM_CHECKMARKS
HBITMAP hbmpUnchecked; // 检查用图像的句柄 MIIM_CHECKMARKS
DWORD dwItemData; // 与项目挂钩的应用程序定义值 MIIM_DATA
LPTSTR dwTypeData; // 以空字符结尾的字符串 MIIM_STRING
UINT cch; // dwTypeData的长度 MIIM_STRING
HBITMAP hbmpItem; // 显示的位图句柄 MIIM_BITMAP
} MENUITEMINFO, *LPMENUITEMINFO;
程序示例及其执行结果如下所示。在程序中写成&X、&A等时,X、A被称为快捷键,按Alt键的话,菜单上的X、A会出现下划线(下划线)。在这个状态下输入X或A的话,会和用鼠标点击那个菜单项目一样。
分离器是分隔线。因为颜色很浅所以不显眼,但是右图上显示了隔断线。
2.层次菜单
在子菜单上再有子菜单也很简单。"Menu 1.
2”中包含儿童菜单“Menu 1.2.1”和“Menu 1.2.2”的程序如下所示。
把“Menu 1.2”设置为与“Menu 1”、“Menu 2”相同的弹出式菜单就可以了。“Menu 1”和“Menu 2”的父菜单的手柄是hMenu,而“Menu 1.2”的父菜单的手柄是hSubMenu1。