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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值