CDialog的问题,在线等 我做了个类继承了CDialog,调用函数dlg.DoModal();进行显示时是正确的,但在DEBUG模式下点击鼠标右键的时候就会报一个断言失败。ASSERT(m_hMenu != NULL);可能是我没有做弹出菜单,我现在想禁用这个CDialog的弹出菜单,怎么解决。在release下没有问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你调试一下WM_RBUTTONUP消息的响应过程,看看哪行代码引起这个错误。 你是不是把InitDialog里面自动生成的东西删除了? 不是,再给点关键信息.你右键单击响应的函数. 查看一下WM_RBUTTONUP、WM_CONTEXTMENU这两个消息处理函数你在Debug模式下,当出现断言错误时,点击重试,就可以看到出现断言代码的位置如果是在MFC的源码中的断言,你可以在通过查看Call Stack查看是从程序什么地方调用的。 报错的地方是afxwin1.inl:_AFXWIN_INLINE CMenu* CMenu::GetSubMenu(int nPos) const { ASSERT(::IsMenu(m_hMenu)); return CMenu::FromHandle(::GetSubMenu(m_hMenu, nPos)); }是不是因为我这个话面没有做子menu啊?是不是要加以个右键事件啊? void CBWMP810NDlg::OnContextMenu(CWnd* /*pWnd*/, CPoint point){ CMenu cMenu;#ifdef _DEBUG cMenu.GetSubMenu(0) ->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);#endif}我的程序主要就是这里出了问题,这个代码是别人写的我也不太清除,能不能给我解释一下啊,我发现把#ifdef _bebug 到#endif注释掉后程序就没问题了。 这是快捷菜单的响应函数,如果你把#ifdef_debuge和#endif去掉后可以 ,说明程序在开始没有define debuge,你在头文件的头部加上#define _DEBUGE 就ok了中间的代码是加载菜单的,可以到msdn去查 关于内存中16进制转换成字符串显示的问题,,让我崩溃 工具栏中的某个按钮变灰,即不可用,菜单的某项变灰不可用,请问如何实现,谢谢了 有关于extern win2000下拨号成功后是否会广播某消息? 关于拨号? 帮帮忙,拜托! 为什么输出的 XML 文件里,<CurtTitle> 是空的? 求助!!!LSB算法分析 如何使MFC单文档文字输出显示在视图客户区 如何实现STD (SAVE TO DISK) 功能 ado 操作结束后都要释放哪些指针?为何我的一个指针释放不成功?帮忙看看 (高分求解)SNMP的trap发送工具
不是,再给点关键信息.你右键单击响应的函数.
如果是在MFC的源码中的断言,你可以在通过查看Call Stack查看是从程序什么地方调用的。
_AFXWIN_INLINE CMenu* CMenu::GetSubMenu(int nPos) const
{ ASSERT(::IsMenu(m_hMenu)); return CMenu::FromHandle(::GetSubMenu(m_hMenu, nPos)); }
是不是因为我这个话面没有做子menu啊?是不是要加以个右键事件啊?
{
CMenu cMenu;#ifdef _DEBUG
cMenu.GetSubMenu(0)
->TrackPopupMenu(
TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x, point.y, this);
#endif
}
我的程序主要就是这里出了问题,这个代码是别人写的我也不太清除,能不能给我解释一下啊,我发现把#ifdef _bebug 到#endif注释掉后程序就没问题了。