在SDI程序里面,
我有一个菜单资源IDR_MENU_TEST,如何将这个菜单插入到主菜单里面去?
IDR_MENU_TEST的结构如下
TEST
-Add
-Del我用如下代码将IDR_MENU_TEST插入到主菜单
CMenu* pMenu=AfxGetMainWnd()->GetMenu();
CMenu menu;
menu.LoadMenu(IDR_MENU_TEST);
pMenu->InsertMenu(3,MF_POPUP|MF_BYPOSITION ,(UINT_PTR)menu.Detach(),_TEXT("test"));
合并后的菜单会变成这种结构
File Edit View test Help
-TEST-Add
-Del
而我希望合并之后的结构是这样
File Edit View TEST Help
-Add
-Del
请问如何实现?
在网上搜索了一下,搜索不到好的办法
最笨的办法是通过遍历IDR_MENU_TEST然后一个一个地插上去
我有一个菜单资源IDR_MENU_TEST,如何将这个菜单插入到主菜单里面去?
IDR_MENU_TEST的结构如下
TEST
-Add
-Del我用如下代码将IDR_MENU_TEST插入到主菜单
CMenu* pMenu=AfxGetMainWnd()->GetMenu();
CMenu menu;
menu.LoadMenu(IDR_MENU_TEST);
pMenu->InsertMenu(3,MF_POPUP|MF_BYPOSITION ,(UINT_PTR)menu.Detach(),_TEXT("test"));
合并后的菜单会变成这种结构
File Edit View test Help
-TEST-Add
-Del
而我希望合并之后的结构是这样
File Edit View TEST Help
-Add
-Del
请问如何实现?
在网上搜索了一下,搜索不到好的办法
最笨的办法是通过遍历IDR_MENU_TEST然后一个一个地插上去
解决方案 »
- 32位转8位灰度图转换问题~高手来帮忙!谢!
- 网站改变了CHtmlView程序的Z-order次序
- 求救啊求救啊求救啊求救啊求救啊,
- 引用系统Dll C:\windows\system32\*.dll 能不能不取得这位置的Dll 从exe所在的当前目录读取dll文件?
- VC 群 46195974
- 在COleControl中打开的Popup型对话框,如何接收TAB等键?
- 怎么在程序中操作WLAN无线网卡设备
- 请问诸君有没有小波变换边缘检测方面的vc源码
- 如何在不捕获屏幕内容的情况下,知道屏幕的内容发生变化?
- 是不是把CPen选择进DC就不能更改pen的颜色?
- 画图Onpaint()函数遇到的问题
- 100分求解
CMenu* pMenu=AfxGetMainWnd()->GetMenu();
CMenu menu;
menu.LoadMenu(IDR_MENU_TEST);
CMenu *pMenu = menu->GetSubMenu(0);
pMenu->InsertMenu(3,MF_POPUP|MF_BYPOSITION ,(UINT_PTR)pMenu->Detach(),_TEXT("TEST"));
CMenu menu;
menu.LoadMenu(IDR_MENU_TEST); menu.InsertMenu(3,MF_POPUP|MF_BYPOSITION ,(UINT_PTR)menu.Detach(),_TEXT("TEST"));
CMenu *pMenu = menu->GetSubMenu(3);
pMenu->InsertMenu(0,MF_STRING|MF_BYPOSITION ,(UINT_PTR)pMenu->Detach(),_TEXT("Add"));
pMenu->InsertMenu(1,MF_STRING|MF_BYPOSITION ,(UINT_PTR)pMenu->Detach(),_TEXT("Add"));
pMenu->InsertMenu(1,MF_STRING|MF_BYPOSITION ,(UINT_PTR)pMenu->Detach(),_TEXT("Add"));
这两句的(UINT_PTR)pMenu->Detach()参数应该设置成该菜单项的ID,后面消息响应添加页方便。
问题已经解决.CMenu* pMainMenu=AfxGetMainWnd()->GetMenu();
CMenu menu;
menu.LoadMenu(IDR_MENU_TEST);
CString str;
menu.GetMenuString(0,str,MF_BYPOSITION);
CMenu *pSubMenu = menu.GetSubMenu(0);
pMainMenu->InsertMenu(3,MF_POPUP| MF_BYPOSITION ,(UINT_PTR)pSubMenu->Detach(),str);
menu.Detach();
还有个问题,我有一组ID连续的菜单,我要在菜单弹出来的时候根据某些条件来enable/disable对应的按钮,开始尝试在ON_UPDATE_COMMAND_UI_RANGE里面做对应的事情,但是发现即使你不点TEST菜单, ON_UPDATE_COMMAND_UI_RANGE也会被调用.
有没有专门的消息响应点击TEST的消息啊?
点击TEST就会弹出其对应的子菜单
ON_UPDATE_COMMAND_UI_RANGE消息你是怎么定义的?
消息的ID是连续的吗?
ID都在这范围内,但是不一定是连续的.
CMenu menu;
menu.LoadMenu(IDR_MENU_TEST); menu.InsertMenu(3,MF_POPUP|MF_BYPOSITION ,(UINT_PTR)menu.Detach(),_TEXT("TEST"));
CMenu *pMenu = menu->GetSubMenu(3);
pMenu->InsertMenu(0,MF_STRING|MF_BYPOSITION ,(UINT_PTR)pMenu->Detach(),_TEXT("Add"));
pMenu->InsertMenu(1,MF_STRING|MF_BYPOSITION ,(UINT_PTR)pMenu->Detach(),_TEXT("Add"));
好像是在idle的时候会做这些事情
我知道是什么原因了
应该是因为那菜单跟一些toolbar的ID一样