我设置了MFC对话框的大小改变时控件的大小也随之改变,但我最小化后,再次点击时就出现错误:应用程序发生异常错误,我该怎么解决呢?
void CTestDevDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
for (int i=IDC_BTTEST;i<=IDC_STATIC4 ;i++) //因为是对话框中的控件,所以这里用了循环
{ CWnd *pWnd;
pWnd =GetDlgItem(i); //获取ID为i的空间的句柄,因为“确认”ID为1,“取消”ID为2
if(pWnd) //判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建 {
CRect rect; //获取控件变化前的大小 pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
//cx/m_rect.Width()为对话框在横向的变化比例 rect.left=rect.left*cx/m_rect.Width();//调整控件大小
rect.right=rect.right*cx/m_rect.Width();
rect.top=rect.top*cy/m_rect.Height();
rect.bottom=rect.bottom*cy/m_rect.Height();
pWnd->MoveWindow(rect);//设置控件大小
}
}
GetClientRect(&m_rect);// 将变化后的对话框大小设为旧大小,这句应该错了,我该如何修改
}
void CTestDevDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
for (int i=IDC_BTTEST;i<=IDC_STATIC4 ;i++) //因为是对话框中的控件,所以这里用了循环
{ CWnd *pWnd;
pWnd =GetDlgItem(i); //获取ID为i的空间的句柄,因为“确认”ID为1,“取消”ID为2
if(pWnd) //判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建 {
CRect rect; //获取控件变化前的大小 pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
//cx/m_rect.Width()为对话框在横向的变化比例 rect.left=rect.left*cx/m_rect.Width();//调整控件大小
rect.right=rect.right*cx/m_rect.Width();
rect.top=rect.top*cy/m_rect.Height();
rect.bottom=rect.bottom*cy/m_rect.Height();
pWnd->MoveWindow(rect);//设置控件大小
}
}
GetClientRect(&m_rect);// 将变化后的对话框大小设为旧大小,这句应该错了,我该如何修改
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货