首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

MFC对话框EDIT控件如何实现在edit内点击鼠标右键,弹出自定义的菜单而非系统自带的菜单

2013-12-21 
MFC对话框EDIT控件怎么实现在edit内点击鼠标右键,弹出自定义的菜单而非系统自带的菜单!如题!新手求教,能给

MFC对话框EDIT控件怎么实现在edit内点击鼠标右键,弹出自定义的菜单而非系统自带的菜单!
如题!
新手求教,能给出具体代码最好!
我是这样做的:重载了CEdit函数 添加WM_CONTEXTMENU消息
具体代码:
void MyEdit::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU2));

CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup);
CWnd* pWndPopupOwner = this;

while (pWndPopupOwner->GetStyle() & WS_CHILD)
pWndPopupOwner = pWndPopupOwner->GetParent();

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,
pWndPopupOwner);
}
但到了ASSERT(pPopup);会中断。
求高手们帮我改下,或者给出能出能实现的代码也行!先谢谢各位!
[解决办法]
这个不负责吧


void CPopMenuDlg::OnContextMenu(CWnd* pWnd, CPoint point) 
{
// TODO: Add your message handler code here

CMenu* m_tempmenu = m_menu.GetSubMenu(0);
m_tempmenu->TrackPopupMenu(TPM_LEFTBUTTON
[解决办法]
TPM_LEFTALIGN,point.x,point.y,this);

}


menu 为自绘的菜单的对象
[解决办法]
添加鼠标右键消息映射

CMenu menu_process;
menu_process.LoadMenu(IDR_MENU2);
CMenu * m_tempmenu = menu_process.GetSubMenu(0);
m_tempmenu->TrackPopupMenu(TPM_LEFTALIGN 
[解决办法]
TPM_RIGHTBUTTON,pt.x,pt.y,this);

[解决办法]
查下CMenu* pPopup = menu.GetSubMenu(0);这句是否有GetLastError,查下IDR_MENU2是否具有popup属性

热点排行