关于对话框的OnSize的问题
对话框为WS_POPUP的,Border为Resizing
有最大化按钮,窗口在创建的时候是先发WM_INITDIALOG消息还是先发WM_SIZE消息啊?
我在窗口中有个Group Box控件,想使他随窗口大小的改变而改变自己的大小来适应窗口。在窗口类中定义了一个CRect m_rectDlgClient;并在OnInitDialog()中
GetClientRect(&m_rectDlgClient);
然后在OnSize函数中加入
void CXXXDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
CRect rect;
if ((m_rectDlgClient.Width() != 0) && (m_rectDlgClient.Height() != 0) && (nType != SIZE_MINIMIZED))
{
GetDlgItem(IDC_GROUPBOX)->GetWindowRect(&rect);
ScreenToClient(&rect);
rect.SetRect(rect.left,rect.top,rect.right+cx-m_rectDlgClient.Width(),rect.bottom);
GetDlgItem(IDC_GROUPBOX)->MoveWindow(&rect);
}
if (nType != SIZE_MINIMIZED)
{
GetClientRect(&m_rectDlgClient);
}
}
为什么我在Debug模式下面运行就是正常的,而在Release模式下运行的时候说
内存不能读啊?在这一句GetDlgItem(IDC_GROUPBOX)->GetWindowRect(&rect);
的时候出错。。。
而把窗口风格改成Overlapped就可以正常运行,Popup的对话框和Overlapped的对话框有什么区别吗?
我在Release下在OnInitDialog和OnSize函数中设置断点时,程序是先在OnSize中先断的,请问大家是怎么回事啊?
能不能给一个关于对话框的OnSize处理的例程,谢谢大家了