关于ClientToScreen、ScreenToClient、GetClientRect和GetWindowRect四个函数之间的关系
来源:互联网 发布:unity3d如何导入模型 编辑:程序博客网 时间:2024/05/22 04:51
对于这四个函数,想必有部分人还不知道其真正的原理吧.今天我也着实总结下:
GetClientRect和GetWindowsRect两者之间的关系:
GetClientRect的CRect是相对它的窗口的客户区的原点而言的,即它的左上角坐标总是(0,0),大小总是客户区的长宽。
GetWindowRect得到的CRect则是相对于屏幕坐标而言的,它的左上角坐标就是窗口在屏幕上的左上角坐标,它的大小就是整个窗口的大小。
ClientToScreen和ScreenToClient两者之间的关系:
ClientToScreen,可以把一个CPoint对象或CRect对象的坐标从客户区坐标系(以客户区左上角为原点)变换为屏幕坐标系(以屏幕左上角为原点)。
如:
// 把对话框的大小变成客户区的大小
void CAboutDlg::OnButton1()
{
//1.通话GetClientRect来获取窗体的矩形区域
CRect myRect;
GetClientRect(&myRect);//取得客户区的大小
ClientToScreen(myRect);//转换为屏幕坐标
MoveWindow(myRect.left, myRect.top,
myRect.Width(), myRect.Height());//MoveWindow使用的是屏幕坐标
}
ScreenToClient,则可以把一个CPoint对象或CRect对象的坐标从屏幕坐标系变换为客户区坐标系。
例如:
CPoint pos( ::GetMessagePos() ); //::GetMessagePos() 得到发生事件时鼠标屏幕坐标 ScreenToClient(&pos);//把它转换为客户区坐标以便随后在绘图时使用
另外,我们经常需要对对话框进行拉伸.在其拉伸的过程中总会牵涉到一些控制的摆放问题,这里我给出我的一点经验:
首先使用以下语句就可以得到控件相对于客户端的位置(这个位置前面已经说得很清楚了)
m_value.GetWindowRect(LPRECT);//获取窗体的矩形区域
ScreenToClient(LPRECT);//从屏幕转为客户端
m_value.MoveWindow(LPRECT);
在获取对话框的大小.计算一下控件距对话框的某一边的长宽度.
每当对话框拉伸的话,在onSize里面将控件的相对于对话框的大小调解下.(这里主要注意不变量,一般是控件的大小不变,只改变位置).
- 关于ClientToScreen、ScreenToClient、GetClientRect和GetWindowRect四个函数之间的关系
- GetClientRect,GetWindowRect,ClientToScreen,ScreenToClient这四个函数的理解
- GetClientRect , GetWindowRect ,ClientToScreen和ScreenToClient的疑问
- GetClientRect , GetWindowRect ,ClientToScreen和ScreenToClient的疑问
- GetWindowRect,GetClientRect,ClientToScreen 和ScreenToClient
- GetWindowRect、GetClientRect、ClientToScreen、ScreenToClient
- ClientToScreen ScreenToClient GetWindowRect GetClientRect
- GetWindowRect、GetClientRect、ScreenToClient、ClientToScreen的区别
- GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
- GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
- GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
- MFC的坐标转换GetClientRect/GetWindowRect/ClientToScreen/GetCursorPos/ScreenToClient
- MFC的坐标转换GetClientRect/GetWindowRect/ClientToScreen/GetCursorPos/ScreenToClient
- VC++中的GetWindowRect,GetClientRect,ScreenToClient , ClientToScreen();
- GetWindowRect再ScreenToClient和GetClientRect的探究
- MFC GetWindowRect, GetClientRect和ScreenToClient
- GetWindowRect()和GetClientRect() 及ScreenToClient
- GetWindowRect, GetClientRect, ScreenToClient的区别
- Eclipse集成配置Resin
- Handler相关的面试题
- java 调用web服务的方法
- Matlab中滤波器的设计(FDAT)
- ejabberd分析(五)+订阅/添加好友
- 关于ClientToScreen、ScreenToClient、GetClientRect和GetWindowRect四个函数之间的关系
- 详解SQL Server STUFF的用法
- 深入分析linux内核及其应用(热力推荐!!)
- javascript DOM的学习
- PHP链接MSSQL
- FLASH嵌入C#中除去右键菜单
- hdu 1030
- 浅析git原理
- 几个提高iOS开发效率的开源类库及工具