大神,请教这个函数哪里有错?编译都没问题,就是运行一段时间后,报错。

CHINAHEAO 2014-02-23 03:04:42
void CMygameDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
/////////////////////////////////////////////////////////////////下为添加的为控件随对话框变化而变化的函数

CWnd *pWnd;
pWnd = GetDlgItem(IDC_EXPLORER1); //获取控件句柄
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);//将变化后的对话框大小设为旧大小

////////////////////////////////////////////////////////////////////上为添加的为控件随对话框变化而变化的函数
// TODO: Add your message handler code here

}
...全文
117 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CHINAHEAO 2014-02-26
  • 打赏
  • 举报
回复
可以了,大神,加了一句话在函数里最上头 if(nType==0)return;
buyong 2014-02-25
  • 打赏
  • 举报
回复
引用 2 楼 CHINAHEAO 的回复:
错误已经发现,但是不知道怎么更改,当对话框最小化后m_rect.Width()函数的值就是0,而现在他又作为被除数,错误就出现在这儿。请大神给个方法。
if(m_rect.Width() == 0) return; ...your code
CHINAHEAO 2014-02-25
  • 打赏
  • 举报
回复
错误已经发现,但是不知道怎么更改,当对话框最小化后m_rect.Width()函数的值就是0,而现在他又作为被除数,错误就出现在这儿。请大神给个方法。
ysnis 2014-02-23
  • 打赏
  • 举报
回复
错误可能在别处

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧