dialog 创建菜单问题

jinlingzwp 2009-10-10 05:38:27
用的如下方法创建的菜单
SHMENUBARINFO mbi;
ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
mbi.cbSize = sizeof(SHMENUBARINFO);
mbi.hwndParent = m_hWnd;
mbi.nToolBarId = IDR_MENU1;
mbi.hInstRes = AfxGetApp()->m_hInstance;
mbi.nBmpId = 0;
mbi.dwFlags |= SHCMBF_HMENU|MF_BYPOSITION;
SHCreateMenuBar(&mbi);
现在想给菜单的某些项加选中状态,即选中某一项,前面会有一个点!
请教怎么弄啊,试了几种方法都不行。。愁
...全文
137 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ProgrammerNO1 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jinhaijian 的回复:]
带有SHCMBF_HMENU属性的不能用SHCMBM_GETSUBMENU来得到HMENU.
用TB_GETBUTTONINFO
C/C++ code
TBBUTTONINFO tbbi= {0};
tbbi.cbSize=sizeof(tbbi);
tbbi.dwMask= TBIF_LPARAM| TBIF_BYINDEX;
SendMessage(SHFindMenuBar(hWnd), TB_GETBUTTONINFO,1, (LPARAM)&tbbi);
HMENU hMenu= (HMENU)tbbi.lParam;
CheckMenuItem(hMenu,0, MF_BYPOSITION| MF_CHECKED );
[/Quote]

确实 ,受益了,要用TB_GETBUTTONINFO
jinlingzwp 2009-10-12
  • 打赏
  • 举报
回复
谢谢LS,问题已经解决,
不过CheckMenuItem(hMenu, 0, MF_BYPOSITION | MF_CHECKED );
要改为CheckMenuItem(hMenu, 0, MF_CHECKED );
才可以!
jinhaijian 2009-10-12
  • 打赏
  • 举报
回复
带有SHCMBF_HMENU属性的不能用SHCMBM_GETSUBMENU来得到HMENU.
用TB_GETBUTTONINFO

TBBUTTONINFO tbbi = {0};
tbbi.cbSize = sizeof(tbbi);
tbbi.dwMask = TBIF_LPARAM | TBIF_BYINDEX;
SendMessage(SHFindMenuBar(hWnd), TB_GETBUTTONINFO,1, (LPARAM)&tbbi);
HMENU hMenu = (HMENU)tbbi.lParam;
CheckMenuItem(hMenu, 0, MF_BYPOSITION | MF_CHECKED );
jinlingzwp 2009-10-12
  • 打赏
  • 举报
回复
LS的方法用过了,不行啊,是不是还有哪里需要注意的,请指教!
jinhaijian 2009-10-10
  • 打赏
  • 举报
回复
hMenuMB = (HWND)SHFindMenuBar(hWnd);
hMenu = (HMENU) SendMessage(hMenuMB, SHCMBM_GETSUBMENU,0,IDM_VIOUS);
EnableMenuItem(hMenu,1, MF_BYPOSITION | MF_GRAYED);
ProgrammerNO1 2009-10-10
  • 打赏
  • 举报
回复
假如使你某个menuitem变灰,弄过吧,怎么弄呀,呵
ProgrammerNO1 2009-10-10
  • 打赏
  • 举报
回复
他乡遇知音,呵呵

7,659

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧