首页 > 代码库 > 在父窗口的中间位置显示子窗口 MFC
在父窗口的中间位置显示子窗口 MFC
CRect rect;
GetWindowRect(rect);//该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
//rect获得的坐标为当前窗体的坐标,对于显示器屏幕的最左上角为(0,0)点坐标,向下移动多少就加值多少
//假设要显示的对话框宽320,高140,(320,140),left、right是X轴坐标,left-right则为宽父窗体的宽,同理top、bottom是Y轴的坐标,相减为父窗体的高。left ;top; right;bottom;分别表示该窗口的/左侧/顶部/右侧/底部坐标。
//要在窗体中心显示该对话框,则如下:
CRect rect_sub(rect.left/2 + rect.right/2 - 160,
rect.top/2 + rect.bottom/2 -70,
rect.left/2 + rect.right/2 + 160,
rect.top/2 + rect.bottom/2 +70);
m_SaveDlg.MoveWindow(rect_sub);
m_SaveDlg.ShowWindow(SW_SHOW);
显示完成。
PS:
1、其实还有一种特别简单的函数,直接m_SaveDlg.CenterWindow()就ok了。。。后来才发现的。。。
2、与GetClientRect不同,GetClientRect是获取客户区的坐标,客户区坐标指定客户区的左上角和右下角。由于客户区坐标是相对窗口客户区的左上角而言的,因此左上角坐标为(0,0)。
3、坐标包含两种:屏幕坐标与客户区坐标,屏幕坐标系和窗口客户区坐标系最明显的区别在于坐标原点,屏幕坐标系的坐标原点在整个屏幕的左上角,而窗口客户区坐标系的坐标原点在窗口客户区的左上角,通常这两个点是不重合的。窗口客户区可以参考这个:http://bigchaochao.blog.163.com/blog/static/10366545820113691726384/