如何在对话框控件中使用快捷菜单

shw586 2005-11-13 06:40:18
我在使用MFC编一个对话框程序,遇到一个问题百思不得其解:我向对话框添加了一个树状控件(CTreeCtrl),我想在控件中右击条目时显示一个快捷菜单,以增加、删除或修改条目内容,但是没有响应。我的方法如下:
void CbookmanageDlg::OnContextMenu(CWnd *pWnd,CPoint pos)
{
if (pWnd->m_hWnd==m_CtlTree.m_hWnd)
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *pContextMenu = menu.GetSubMenu(0);
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,pos.x,pos.y,pWnd);

}
}
然后在CbookmanageDlg中声明消息映射,将菜单命令映射到CbookmanageDlg成员函数上,但在实际运行中,只有对话框的其他位置右击才会处理菜单命令,而在控件中则没有响应,这倒底是什么原因啊?恳请各位高手指点,不胜感激!
...全文
104 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
njchf 2005-11-13
  • 打赏
  • 举报
回复
不必用子类,楼主你改一下TrackPopupMenu最后一个参数,改成this
这是我正在用的代码,肯定没问题
if (pWnd->GetDlgCtrlID() == IDC_Tree)
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MenuTreeExpand));

CMenu * pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);

pPopup->TrackPopupMenu (TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, this);
}
shw586 2005-11-13
  • 打赏
  • 举报
回复
To DentistryDoctor(My heart will fly,in the sky.) :
难道没有直接的办法吗?要这样的话难道要用一次就要派生一个类,多麻烦啊
DentistryDoctor 2005-11-13
  • 打赏
  • 举报
回复
派生CTreeCtrl,在子类中处理。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧