MFC笔记2

今天遇到一个很久很久很久之前碰到的MFC问题,开始的时候有些烦闷,代码都是一样的,但却有两个对话框在我打开的时候,老是提示错误信息-> Debug Assertion Failed! File:winocc.cpp Line:279

 

经过调试及栈回溯,找到了问题的原因。

我在对话框中使用了OnSize消息,由于想使窗口在获得OnSize消息的时候自动将对话框中的控件对齐,因此在代码内定义了一个自动对齐控件的函数,这个函数直接在OnSize消息内使用了。

但是在第一次打开对话框的时候,MFC首先处理的是OnSize消息,之后才会处理OnInitDialog消息,在这种情况下,由于第一次使用自定义函数的时候窗口初始化还没有完全成功,于是MFC就提示了错误信息。

简单的处理办法是:

BOOL bFirst;

 

bFirst = TRUE;

 

在OnSize消息内:

void CShellDlg::OnSize(UINT nType, int cx, int cy)
{
 CDialog::OnSize(nType, cx, cy);
 
 // TODO: Add your message handler code here
 if (bFirst == FALSE)
 {
  Resize();
 }
}

 

在OnInitDialog消息内:

bFirst = FALSE;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值