ModifyMenu的用法
关于这个API,MSDN讲得实在有点晦涩,这里总结一下。
假设要更改以下菜单的Disable Sampling项文本为EnableSampling
- 首先应该获取submenu父菜单的句柄,假设submenu的资源ID号为IDR_MENU2,使用以下代码:
1 hMenu = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MENU2)); 2 hMenu = GetSubMenu(hMenu, 0);
- 然后,因为submenu父菜单的起始索引为0,所以Disable Sampling的索引为5,因为根据索引(编号)来修改菜单,所以ModifyMenu这个API的第三个参数uFlags应该包括MF_BYPOSITION,又因为需要修改的是菜单文本,uFlags应该包括MF_STRING。
- ModifyMenu的第四个参数(uIDNewItem)允许修改菜单的ID号(菜单资源标示符),由于菜单ID号是跟菜单命令(WM_COMMAND)相关联的,修改菜单ID号会影响菜单命令的正常执行, 所以这里不需要修改菜单的ID号,第四个参数应该填写在资源编辑器中创建菜单时输入的ID号。
所以,将Disable Sampling菜单项的文本修改为Enable Sampling的代码应该如下所示:
1 char *pszMenuText = "Enable Sampling"; 2 ModifyMenu(hMenu, 5, MF_STRING | MF_BYPOSITION, 3 ID_SUBMENU_DISABLESAMPLING, pszMenuText);