为什么是这样??

羊小丸子 2007-11-13 12:52:19
我写了一个程序, 创建一个 MFC EXE menu2,,然后给CMenu2View类添加 WM_CHAR的相应函数 ,想在接收回车的时候进行添加菜单的操作。结果却出了错误,大家给我看看 。
void CMenu2View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CMenu *pcmenu;
int i;
if(nChar == 0x0d)
{
pcmenu =GetParent()->GetMenu();
i = IsMenu(pcmenu->m_hMenu); }

CView::OnChar(nChar, nRepCnt, nFlags);
}

我想调用pcmenu->AppendMenu()函数,但是这个函数中会进行判断 :assert(::IsMenu(m_hMenu)),所以assert失败,报错,我把它写出来 ,i 的值为0,可是,我明明定义了一个 CMenu的指针,为什么会出错呢 ??

...全文
105 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iyranly 2007-11-16
  • 打赏
  • 举报
回复
Afx是全局的函数,它能保证程序正常。
比如AfxMessageBox()和MessageBox()一样,不管你在程序哪里使用AfxMessageBox()都可以,但是你用MessageBox()可能会说"没有指定wnd"
羊小丸子 2007-11-16
  • 打赏
  • 举报
回复
可是为什么呢,yxz_lp告诉我一声啊,为什么我那样子会出错??谢谢啦
yxz_lp 2007-11-14
  • 打赏
  • 举报
回复
pcmenu =GetParent()-> GetMenu(); //改成 pcmenu =AfxGetMainWnd()->GetMenu();
qeq2008 2007-11-14
  • 打赏
  • 举报
回复
单步调看在哪里出错
羊小丸子 2007-11-13
  • 打赏
  • 举报
回复
有父窗口啊,而且pcmenu-> m_hMenu的地址是0x0000ff00,这是一个view,那他的父窗口应该是mainframe.
youyifang 2007-11-13
  • 打赏
  • 举报
回复
GetParent(),你当前的窗口有没有父窗口,没有的话,用这个函数可是会返回错误的?
oyljerry 2007-11-13
  • 打赏
  • 举报
回复
GetParent()-> GetMenu();
返回失败了...

15,978

社区成员

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

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