记录Debug Assertion Failed! Program: C:\windows\system32\mfc140ud.dll

记录一个问题

新建的一个 mfc的CFormView工程,在状态栏输出当前鼠标的位置。

像这样,先在视图类窗口获取父窗口(框架类窗口),

转换后用框架类窗口对象去调用这个对象内部的状态栏成员变量m_wndStatusBar 。

然后用setwindowText函数去设置显示的内容。

运行发现,鼠标在子窗口一动,程序就死掉了

调试发现,getparent() 这个函数获得的CMainFrame对应的句柄和咱们的框架窗口的句柄不是一个。

 

GetParent()->GetDescendantWindow(AFX_IDW_STATUS_BAR)->SetWindowText(str);

用这个方法也不行。

 

为什么?????无从得知。。。有人知道可以留言解惑,万分感谢!!

解决办法:把GetParent() 换成 AfxGetMainWnd()就行了,或者 采用另外的修改状态栏的方法。

一共 有下面几种方法;

((CMainFrame*)AfxGetMainWnd())->m_wndStatusBar.SetWindowText(str);

((CMainFrame*)GetParent())->SetMessageText(str);

((CMainFrame*)GetParent())->GetMessageBar()->SetWindowText(str);

AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR)->SetWindowText(str);

 

 

——END

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值