很奇怪,m_hMenu为NULL

ashleycoder 2013-09-05 01:33:41

void CFindCameraDlg::PopupRightClickMenu(CPoint pt, CString ip)
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *pSubMenu=menu.GetSubMenu(0);
if(NULL!=pSubMenu)
{
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, pt.x, pt.y, this);
}
menu.Detach();
menu.DestroyMenu();

}



右键弹出菜单,menu==NULL,pSubMenu==NULL
开发工具是VS2005,以前在VC上没什么问题
不知道那错了,大家指点一下!谢谢!
...全文
186 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ashleycoder 2014-01-07
  • 打赏
  • 举报
回复
是菜单属性设置错了!
ashleycoder 2013-09-10
  • 打赏
  • 举报
回复
我用VC6没问题,但VS2005就有问题!
Wonderful_jerry 2013-09-09
  • 打赏
  • 举报
回复
你能 告诉我大概你是要做什么吗? 视类(MFC、Cview)点击右键弹框? 若是这样 你的消息响应函数出错了吧 应该对WM_RBUTTONDOWN进行响应 void CClass6_2View::OnRButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CMenu menu; menu.LoadMenu(IDR_MENU1); CMenu *pSubMenu=menu.GetSubMenu(0); if(NULL!=pSubMenu) { pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x, point.y, this); } menu.Detach(); menu.DestroyMenu(); CView::OnRButtonDown(nFlags, point); } 不过这个代码还有些问题,你应该吧point这个点转换到与视类的相对坐标点 加上这个函数 ClientToScreen(point);在调用TrackPopupMenu之前 不知道回答的对不对,但希望对你有用~~
ashleycoder 2013-09-07
  • 打赏
  • 举报
回复
IDR_MENU1有2个子菜单,登陆和退出!
Ptrtoptr 2013-09-07
  • 打赏
  • 举报
回复
这个嘛,为什么返回为空,是不是没子菜单
哮浪 2013-09-06
  • 打赏
  • 举报
回复
IDR_MENU1没有子菜单项吧!
真相重于对错 2013-09-06
  • 打赏
  • 举报
回复
if(p_SubMenu==NULL) { int errno=GetLastErrorI(); } 看看错误号是多少?
ashleycoder 2013-09-06
  • 打赏
  • 举报
回复
就一个菜单,ID没错
fishion 2013-09-05
  • 打赏
  • 举报
回复
是不是IDR_MENU1这个菜单ID错了?里面没有菜单项了?

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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