您的位置:首页 > 其它

OnSize() 与 OnInitDialog()[设置控件大小]

2011-06-25 16:29 381 查看
今天写了这样的一些代码:

//使控件的大小跟随窗口的大小而变化
//////////////////////////////////////////////////////
void CPlannerDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
m_Calendar.MoveWindow(100,100,200,200,0);
}


但是每次运行都有ASSERT()错误。

本以为是变量与控件的关系没有关联好,就测试了一下,发现并没有问题。

于是在OnInitDialog()于OnSize() 中分别插入了断点,发现程序首先运行到OnSize() ,才到OnInitDialog()。并且在程序运行到OnSize()的时候,m_Calendar还没有被初始化,其hWnd = 0.

于是对程序做了一下这样的改动:

//使控件的大小跟随窗口的大小而变化
//////////////////////////////////////////////////////
void CPlannerDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
static int i = 0;
if(i++)
{
m_Calendar.MoveWindow(100,100,200,200,0);
//m_Calendar是在OnInitDialog()中被初始化的。而程序先调用了OnSize().
}
}


就好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: