MFC中Dialog中添加菜单!

最近找了本VC++的实例编程书看,照着上面的例子写,遇到了如题的问题,在Dialog中添加Menu的方法我会的。。。。就是编辑一个menu,然后将dialog中memu的... 最近找了本VC++的实例编程书看,照着上面的例子写,遇到了如题的问题,在Dialog中添加Menu的方法我会的。。。。就是编辑一个menu,然后 将dialog中memu的属性改成为我自己编辑的那个ID就行了,但是奇怪的是这么做之后程序的执行结果还是没有显示我定义的那个菜单,我用的是 VS2010,建立的是MFC程序,后来我随便新建了一个简单的win32程序,弄了个界面和菜单,照着上面的方法添加,结果没有问题,结果就是我的这个 MFC程序添加不了,不知道有没有人遇到和我一样的问题?因为小弟刚开始学习这个,所以不是很懂,望高手指点!! 展开
 我来答
tattackor
推荐于2017-09-29 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:898万
展开全部
1、添加菜单资源 在resourceview视图中右击选择insert,添加一个菜单资源IDR_MENU1,同时设定好响应的菜单项,例如:
菜单1 菜单2
子菜单1(ID_MENUITEM1) 子菜单3(ID_MENUITEM3)
子菜单2(ID_MENUITEM2) 子菜单4(ID_MENUITEM4)
2、在对话框中添加该菜单
先增成员变量HMENU m_hMenu1;然后在初始化函数OnInitDialog()添加一下代码:m_hMenu1=LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU1));//导入资源,创建菜单::SetMenu(this->GetSafeHwnd(),m_hMenu1);//添加到对话框
3、添加子菜单响应函数
点击菜单View-->ClassWizard,在message map选项卡中选择我们要响应的菜单ID_MENUITEM1,然后选择COMMAND消息,双击添加到member functions中,提示命名,命名后在member functions双击该函数,
4、编写响应动作
在3里面添加的响应函数中,CAboutDialog dlg;dlg.DoModal();//注意先创建该对话框资源并实体化为类,在主对话框CPP文件包含关于对话框的头文件。
5、注销资源
在对话框的OnDestroy函数中添加一下代码: DestroyMenu(m_hMenu1);
匿名用户
2013-03-30
展开全部
System Menu属性设置了true没有?如果不行的就用函数来加载菜单// 头文件添加CMenu m_menu; OnInitDialog中添加:m_menu.LoadMenu(MAKEINTRESOURCE(IDR_MENU1));SetMenu(&m_menu);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
相思丶猫2C
2013-03-29 · TA获得超过1198个赞
知道小有建树答主
回答量:1432
采纳率:50%
帮助的人:959万
展开全部
那试试用代码:
成员变量
CMenu mm;
OninitDialog中
mm.LoadMenu(ID_XXX);
SetMenu(&mm);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
89694278
2013-03-31 · TA获得超过502个赞
知道答主
回答量:133
采纳率:0%
帮助的人:73万
展开全部
CMenu::LoadMenu
BOOLLoadMenu(LPCTSTRlpszResourceName);
BOOLLoadMenu(UINTnIDResource);
Return Value
Nonzero if the menu resource was loaded successfully; otherwise 0.
Parameters
lpszResourceName
Points to a null-terminated string that contains the name of the menu resource to load.
nIDResource
Specifies the menu ID of the menu resource to load.
Remarks
Loads a menu resource from the application’s executable file and attaches it to the CMenu object.
Before exiting, an application must free system resources associated with a
menu if the menu is not assigned to a window. An application frees a menu by
calling the DestroyMenu member
function.
Example
// CMainFrame::OnReplaceMenu() is a menu command handler for CMainFrame
// class, which in turn is a CFrameWnd-derived class. It loads a new
// menu resource and replaces the SDI application window's menu bar with
// this new menu. CMainFrame is a CFrameWnd-derived class.
void CMainFrame::OnReplaceMenu()
{
// Load the new menu.
m_NewMenu.LoadMenu(IDR_SHORT_MENU);//先定义了再LOAD
ASSERT(m_NewMenu);

// Remove and destroy the old menu
SetMenu(NULL);
::DestroyMenu(m_hMenuDefault);

// Add the new menu
SetMenu(&m_NewMenu);

// Assign default menu
m_hMenuDefault = m_NewMenu.GetSafeHmenu(); // or m_NewMenu.m_hMenu;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式