MFC 程序,当窗口最小化的时候再点开时,在OnSize()函数中得到的cx,cy怎么是0

voidCAGRIEMDlg::OnSize(UINTnType,intcx,intcy){CDialog::OnSize(nType,cx,cy);m_menu.rcM... void CAGRIEMDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
m_menu.rcMain.right=cx+3;

CWnd *pWnd=NULL;
pWnd = GetDlgItem(IDC_infotab);
if(pWnd)
{
CRect rect;
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);
rect.left=rect.left*cx/rcWindow.Width();
rect.right=rect.right*cx/rcWindow.Width();
rect.top=rect.top*cy/rcWindow.Height();
rect.bottom=rect.bottom*cy/rcWindow.Height();
CString a,b,c,d;
a.Format("%d",rect.right);
b.Format("%d",rect.left);
c.Format("%d",rect.bottom);
d.Format("%d",rect.top);
MessageBox(a+", "+b+" ,"+c+" ,"+d);
pWnd->MoveWindow(rect);
}
GetWindowRect(&rcWindow);
}
最小化到托盘后,再点显示后,会弹出两次我打印的那句话
MessageBox(a+", "+b+" ,"+c+" ,"+d);第一次是窗口的大小,然后是0,0,0,0;把MessageBox弹出的对话框关掉后窗口的控件就没有了、。
展开
 我来答
相思丶猫2C
2012-11-14 · TA获得超过1198个赞
知道小有建树答主
回答量:1432
采纳率:50%
帮助的人:977万
展开全部
CRect rect;
pWnd->GetWindowRect(&rect);
如ls所述。在窗口还未显示时,GetWindowRect得到的rect的left和top是等于0的。
你可以用GetClientRect得到窗口大小。
更多追问追答
追问
试了,还是不行。
追答
void CMFCDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);

TRACE("%d,%d \r\n",cx,cy);
}
我测试的情况:最小化时,cx = cy = 0。
还原时,cx,cy均ok
百度网友483b014
2012-11-14 · TA获得超过197个赞
知道小有建树答主
回答量:394
采纳率:0%
帮助的人:235万
展开全部
最小化的时候应该是0,再点开应该恢复了。
更多追问追答
追问
但是我的控件都没有显示出来,而且我把坐标位置的值打印出来看了,都是0
追答
你应该设置断点跟一下。是在OnSize()里面打印信息吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式