新闻资讯
看你所看,想你所想

MenuHelp

很多程序都是有菜单和状态栏,当用鼠标点开来自菜单移动选择各菜单项的时候,会在状态栏显示关于该菜单项的说明。这个功能MFC是封装好的,用向导生成即可,但360百科用API编程就得自己编写代码了,查了一下MSDN,有个MenuHelp函数可以做到。

  • 中文名称 MenuHelp
  • 函数原型 void MenuHelp

函数原型

  void MenuHelp(

 针边行载 UINT uMsg,

  WPARAM wParam,

  LPARAM lParam,

  HMENU h来自MainMenu,

  HINSTANCE hInst,

  HWND hwndStatus,

  LPU360百科INT lpwIDs

  );

基本信息

  前面的参数好理解,关键是最后一个参数lpwIDs,MSDN说远沉类烟木明是一个UINT数组指针,数组元素必须是成对的,第一个是字符串资源ID,第二个是菜单句柄,想想好本云型氧象比较麻烦,得在程序加载菜单后得到每个菜单项的句柄然后填写这个利清义数组?不厌其烦写了代码一试,却满不是那么回事,根本不起作用。于是看了看MFC的源代码,晕,居然没用这个函数,是自己处理的。再找其他SDK写的例程,发现这个数组只有4胞学个元素,两对,第二对是0,0,标志数组结束,第一对中的字符串资源ID在资源中根本广套措六划诗集成有四伟没有,第二个菜单句柄值为0x1100,代码中也没有再对这个数组进行操作了,但却能正常工作,这下更晕了。仔细研究了这个"神奇"的程序,终于知道妒其除四逐降小评之权著了MenuHelp的用法:

  UINT wIDs[] = {MH_BASE,0x1100,0,0}

  这个MH_BASE可以随便定义一个数值,不过必须走都眼胜机保证该值加上菜单命令ID的数值后不能超过0xFFFF。

  然后在资源中加入帮助字符串,该字符串的资源ID必须是MH_BASE加上相应的菜单命令ID。而子菜单的字符串的资量顾伤兵轴卷员从于源ID必须是0x1100加上相应的序号,这个子菜单的帮助字符串是指:比如菜单上一般都会有"文件"这个菜单项,点开"文件"会弹出下拉菜单,显示"打刑太师开","关闭"等,鼠标移到这两个选云级项上在状态栏分别显示"打开文件"和"关闭",而移出汉温眼这两个选项并且下拉菜单未关闭,则会显示这个子菜单的帮助字符串"文件操作"。第二个子菜单比如"编辑"的帮助字符串资源ID就是0x1100+1。

  比如菜单中"打脚密流文开"和"关闭"的命令ID分别为CM_OPEN和CM_CLOSE,就需要在资源中如下定义字符串:

  STRINGTABLE DISCARDABLE

  BEGIN

  MH_BASE + CM_OPEN "打开文件"

  MH_BASE + CM_CLOSE "关闭"

  0x1100 + 0 "文件操作"

  END

  程序中响应WM_MENUSELECT消息格酸行判掉被花成心较,在其中调用Men间皇止引益居迅热足英苏uHelp(WM_MENUS危族存变皮ELECT,wParam鸡现,lParam,GetMenu(hWnd),hInstance,hStatusWnd,wIDs);就可以了。

转载请注明出处安可林文章网 » MenuHelp

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com