Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从HMENU获取菜单ID?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我试图覆盖WM_HelP消息我的对话窗口,当用户按下F1键。 该窗口有几个button,通过TrackPopupMenu显示上下文菜单,以及主菜单(顶部)。因此,这个窗口中不止一个菜单

我可以在处理WM_HelP时捕获菜单消息,但是我需要知道哪个上下文菜单发送了这个消息:

BOOL CMyDialog::OnHelpInfo(HelPINFO* pHelpInfo) { if(pHelpInfo->iContextType == HelPINFO_MENUITEM) { HMENU hMenu = (HMENU)pHelpInfo->hItemHandle; //How to get menu ID from HMENU? } //... }

所以我需要find一种方法从HMENU获取菜单资源ID – 这是用来创build它的:

如何从HMENU获取菜单ID?

以编程方式将应用程序添加到所有configuration文件Windows防火墙(Vista +)

GetResults()方法和await关键字之间的区别

无法在Windows上运行buildr

在Windows c ++应用程序中获取主线程的控制权

如何让netlib-java使用原生英特尔MKL库LAPACK实现?

任何想法如何做到这一点?

知道是否可以检索内存地址的值

是否有一个简单的Bugzilla / Trac客户端供非软件人员使用?

构buildgradle项目时找不到tools.jar

函数上进行互斥

什么是Windows中最好的内联文件比较器?

你必须“有点暴躁”。 你可以从上到下接近它。 做一个这样的功能

BOOL IsMenuItemIDInMenu(Uint nR_551_11845@enuID,Uint nR_551_11845@enuItemID) { //checks if 'nMenuItemID' belongs to 'nMenuID' BOOL bRes = falSE; if(nMenuID && nMenuItemID) { HMENU hMenu = ::LoadMenu(GetmoduleeHandle(NULL),MAKEINTresourcE(nMenuID)); if(hMenu) { //Look for it bRes = __searchForMenuItem(hMenu,nMenuItemID); //Free menu ::Destroymenu(hMenu); } } return bRes; } BOOL __searchForMenuItem(HMENU hMenu,Uint nR_551_11845@enuItemID) { ASSERT(hMenu); int nCnt = ::GetMenuItemCount(hMenu); if(nCnt != -1) { for(int i = 0; i < nCnt; i++) { //Is it a submenu HMENU hSubMenu = ::GetSubMenu(hMenu,i); if(!hSubMenu) { Uint nID = ::GetMenuItemID(hMenu,i); if(nID != -1 && nID == nMenuItemID) { //Found it return TRUE; } } else { //Process submenu if(__searchForMenuItem(hSubMenu,nMenuItemID)) { //Found it in submenu return TRUE; } } } } return falSE; }

然后,当您按下F1时突出显示菜单ID,请查看它属于哪个菜单

if(pHelpInfo->iContextType == HelPINFO_MENUITEM) { if(IsMenuItemIDInMenu(IDR_MENU_1,pHelpInfo->iCtrlId)) { } else if(IsMenuItemIDInMenu(IDR_MENU_2,pHelpInfo->iCtrlId)) { } }

大佬总结

以上是大佬教程为你收集整理的如何从HMENU获取菜单ID?全部内容,希望文章能够帮你解决如何从HMENU获取菜单ID?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: