动态创建菜单时出错 afxwin1.inl 1023

代码很简单,如下,写在 view 层的 OnChar 事件中

 CMenu cmu;
   cmu.CreateMenu();
   GetMenu()->AppendMenu(MF_POPUP,(UINT)cmu.m_hMenu,_T("电话本"));
   cmu.Detach();

 

以前按书上写是可以的,结果这里报错 提示 assert 失败  afxwin1.inl 1023

报错时,点击重试,进入报错的地点,发现是这么一句:

_AFXWIN_INLINE BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem)
 { ASSERT(::IsMenu(m_hMenu)); return ::AppendMenu(m_hMenu, nFlags, nIDNewItem, lpszNewItem); }

 

看来是ASSERT(::IsMenu(m_hMenu)) 失败,那么就是 菜单无效

 

综合以前的代码发现,以前是写在frame层的,这个是view层的,一想,菜单属于frame层,不属于view层,所以GetMenu() 获取不到东西。明白了错误所在,改下代码就ok了,如下,添加 GetParent():

GetParent()->GetMenu()->AppendMenu(MF_POPUP,(UINT)cmu.m_hMenu,_T("电话本"));


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值