在父窗体的中间位置显示子窗体 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/