vc CMenu Popup菜单的使用问题?

来源:百度知道 编辑:UC知道 时间:2024/06/11 15:49:41
CMenu menu;
menu.CreatePopupMenu();
menu.InsertMenu(0, MF_BYPOSITION , ID_MENU_NEW_MEMBER, _T("数据库配置"));
menu.InsertMenu(1, MF_BYPOSITION , ID_MENU_NEW_MEMBER, _T("系统配置"));
menu.InsertMenu(2, MF_BYPOSITION|MF_SEPARATOR);
menu.InsertMenu(3, MF_BYPOSITION , ID_MENU_NEW_MEMBER, _T("登陆"));
menu.InsertMenu(4, MF_BYPOSITION|MF_SEPARATOR);
menu.InsertMenu(5, MF_BYPOSITION , ID_MENU_NEW_MEMBER, _T("退出"));
menu.InsertMenu(6, MF_BYPOSITION|MF_SEPARATOR);

选中其中一个子菜单项,点击触发消息...

怎么样才能做到?

比如我选择"退出", 就会执行相应的函数...
hanjiangying,谢谢你的回答,但是似乎你这么做法,实现不了...

我这个菜单是这样形成的:
点击一个按钮后,执行上面的代码,产生下拉菜单;当点击其中的菜单项时,我怎么去响应这个鼠标点击呢?

添加消息映射和消息函数即可:步骤如下:
(1)、在工程的cpp的消息映射中添加如下代码:
BEGIN_MESSAGE_MAP(CXXXView, CEditView)
//{{AFX_MSG_MAP(CVCProjectInfoView)
.......
ON_COMMAND(ID_MENU_NEW_EXIT, OnExit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
注意,ON_COMMAND()里面的ID必须添加在资源中,打开资源面板的“String Table”就能添加,而且该菜单项的ID不能和其他菜单项相同,想你上面的代码里的ID全部相同,这样就不能区分到底该响应那个菜单项的消息了;OnExit是函数名
(2)、在工程类的头文件中添加消息函数说明,找到类似于
afx_msg void OnEditCut();的语句,照着他的形式写就可以了,例如添加退出的函数声明:afx_msg void OnExit(); 注意有参数的话必须写明,这你应该知道吧!
(3)、回到工程类的cpp文件中,添加菜单消息函数的实现代码,例如:
void CXXXXView::OnExit()
{
AfxGetMainWnd()->SendMessage(WM_CLOSE);//关闭窗口
}

菜单向窗口发送的WM_COMMAND消息
捕捉此WM_COMMAND消息即可