VC6.0 MFC 自己写菜单的问题
我新建了一个对话框类型的程序,然后新建了个菜单menu,加入了一些菜单项,请问改如何,到哪里添加我想要的代码?打开classwizard好像要让我新建一个class?...
我新建了一个对话框类型的程序,然后新建了个菜单menu,加入了一些菜单项,请问改如何,到哪里添加我想要的代码?打开classwizard好像要让我新建一个class?
展开
展开全部
看到这个问题的时候,我不知道从哪里开始说,不是问题的答案太复杂,而是我不知道楼主对MFC了解多少,从哪里开始写才能让你看到之后有恍然大悟的感觉。亦或是你只要答案。
我先给你介绍大概的步骤吧,
1.创建菜单资源之后,添加菜单项(最好改下ID编号,默认的编号可能就是ID_345612之类的,改的简明些,编程习惯很重要,如ID_父菜单_子菜单)。
2.(以在对话框内右击弹出菜单为例) 在右击事件中添加以下代码:
void CBaiduDlg::OnRButtonUp(UINT nFlags, CPoint point) //右击弹起
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CMenu menu;
menu.LoadMenu(IDR_MENU1);
//载入事先定义的菜单
CMenu* pMenu=menu.GetSubMenu(0);
CPoint pos;
GetCursorPos(&pos);
pMenu-> TrackPopupMenu
(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
pos.x,pos.y,AfxGetMainWnd());
CDialog::OnRButtonUp(nFlags, point);
}
3.在消息映射区添加代码:
BEGIN_MESSAGE_MAP(CBaiduDlg, CDialog)
//以下为添加的代码,ID_WORLD_YOU 为子菜单的ID,Hello_World 为响应函数(自定义)
ON_COMMAND(ID_WORLD_YOU,&CBaiduDlg::Hello_World)
END_MESSAGE_MAP()
4.最后在响应函数中添加响应代码就可以了。
void CBaiduDlg::Hello_World()
{
AfxMessageBox(L"Hello World!!!");
}
这里面扯到的东西挺多的,CMENU类,MFC的消息映射制,ON_COMMAND,ON_MESSAGE,ON_NOTIFY之间的区别,这些东西也不是三言两语就能解释清楚,还望楼主,好好学习,天天向上,不懂就问。
我先给你介绍大概的步骤吧,
1.创建菜单资源之后,添加菜单项(最好改下ID编号,默认的编号可能就是ID_345612之类的,改的简明些,编程习惯很重要,如ID_父菜单_子菜单)。
2.(以在对话框内右击弹出菜单为例) 在右击事件中添加以下代码:
void CBaiduDlg::OnRButtonUp(UINT nFlags, CPoint point) //右击弹起
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CMenu menu;
menu.LoadMenu(IDR_MENU1);
//载入事先定义的菜单
CMenu* pMenu=menu.GetSubMenu(0);
CPoint pos;
GetCursorPos(&pos);
pMenu-> TrackPopupMenu
(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
pos.x,pos.y,AfxGetMainWnd());
CDialog::OnRButtonUp(nFlags, point);
}
3.在消息映射区添加代码:
BEGIN_MESSAGE_MAP(CBaiduDlg, CDialog)
//以下为添加的代码,ID_WORLD_YOU 为子菜单的ID,Hello_World 为响应函数(自定义)
ON_COMMAND(ID_WORLD_YOU,&CBaiduDlg::Hello_World)
END_MESSAGE_MAP()
4.最后在响应函数中添加响应代码就可以了。
void CBaiduDlg::Hello_World()
{
AfxMessageBox(L"Hello World!!!");
}
这里面扯到的东西挺多的,CMENU类,MFC的消息映射制,ON_COMMAND,ON_MESSAGE,ON_NOTIFY之间的区别,这些东西也不是三言两语就能解释清楚,还望楼主,好好学习,天天向上,不懂就问。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
双击那个GUI部件应该就行啊...
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询