为什么,我GetSubMenu()的结果总是NULL呢?

crazybb1977 2003-10-20 04:54:44
有关CTreeView中的Popup菜单显示的问题,
我用了CTreeView的NM_RCLICK消息,
并写了响应代码,
但是程序报错,跟踪后发现pPopup 为null,

void CInfoEditorDlg::OnRclickTreeList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CMenu menu;
int ii = menu.LoadMenu(IDR_MENU_POPUP);

CMenu* pPopup = menu.GetSubMenu(0);

ASSERT(pPopup);

DWORD pos = ::GetMessagePos();
POINTS point;
point = MAKEPOINTS(pos);

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);

*pResult = 0;
}
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazybb1977 2003-10-21
  • 打赏
  • 举报
回复
明白了,我在第一个菜单下没有子菜单,所以pPopup 为null,
加上一个没有内容的根菜单,并把其他菜单项作为其子菜单,就可以了

不过,POPUP子菜单一定要这样吗?
fingerfox 2003-10-21
  • 打赏
  • 举报
回复
给你的MENU多加几个子项
比如”文件“菜单下有“新建”,“打开”,“关闭”
crazybb1977 2003-10-21
  • 打赏
  • 举报
回复
ii 返回是1,
保证RC里面的菜单制作正确。——如何检查呢?
AlvaChin 2003-10-21
  • 打赏
  • 举报
回复
首先,看看 int ii = menu.LoadMenu(IDR_MENU_POPUP);
的返回结果。
第二,保证RC里面的菜单制作正确。

===================================================
百尺竿头,卧薪尝胆
crazybb1977 2003-10-21
  • 打赏
  • 举报
回复
是在RESOURCES里,INSERT 的
fingerfox 2003-10-20
  • 打赏
  • 举报
回复
IDR_MENU_POPUP怎么做的?

15,979

社区成员

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

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