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);
posted @ 2012-10-08 10:11  特洛伊人  阅读(6149)  评论(0编辑  收藏  举报