Chinaunix首页 | 论坛 | 博客
  • 博客访问: 89308
  • 博文数量: 27
  • 博客积分: 1090
  • 博客等级: 少尉
  • 技术积分: 355
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-07 10:30
文章分类

全部博文(27)

文章存档

2009年(27)

我的朋友

分类: C/C++

2009-09-09 13:38:57

GetClipCursor():
函数功能:该函数检取一个矩形区域的屏幕坐标,光标被限制在该矩形区域之内。

GetWindowRect

ClipCursor: 
函数功能;该函数把光标限制在屏幕上的一个矩形区域内,
如果调用SetCursor或用鼠标设置的一个随后的光标位置在该矩形区域的外面,
则系统自动调整该位置以保持光标在矩形区域之内。

GetCursorPos 

ScreenToClient

新建和撤销光标(CreateCursor、LoadCursorFromFile、DestroyCursor)
 
设置和获取光标(SetCursor、GetCursor)
 
设置和获取光标位置(SetCursorPos、GetCursorPos)
 
设置和获取光标活动范围(ClipCursor、GetClipCursor) 

显示光标(ShowCursor)
 
设置系统光标(SetSystemCursor) 

RECT rcClip; 光标活动的新区域          // new area for ClipCursor
RECT rcOldClip;    光标先前的活动区域    // previous area for ClipCursor
GetClipCursor(&rcOldClip); 记录光标可以活动的区域
GetWindowRect(hwnd, &rcClip); 得到窗口坐标
ClipCursor(&rcClip); 将当前光标活动范围设置为rcClip活动范围
ClipCursor(&rcOldClip); 恢复为以前的活动范围

GetWindowRect() 得到的是在屏幕坐标系下的RECT(即以屏幕左上角为原点)
GetClientRect() 得到的是在客户区坐标系下的RECT(即以所在窗口左上角为原点,
去掉了标题栏计算,仅仅是个大小,返回值的左上角永远为0,0) 
ScreenToClient() 就是把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标。

GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。
GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。  
ClientToScreen把客户区坐标系下的RECT坐标转换为屏幕坐标系下的RECT坐标.
ScreenToClient把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标.     我们对同一个窗口先GetWindowRect取得一个RECT,再用ScreenToClient转换到客户坐标系。然后GetClientRect取得一个RECT,再用ClientToScreen转换到屏幕坐标系。显然,GetWindowRect取得的矩阵不小于GetClientRect取得的矩阵。因为前者包含了非客户区,而后包括了客户区。   
对GetWindowRect取得的矩阵ScreenToClient后,矩阵的大小没有变小,(-3,-29)是窗口的左上角的坐标,相对窗口客户区左上角。   
对GetClientRect取得的矩阵ClientToScreen后,矩阵也没有变大,新得到的矩阵是窗口客户区在屏幕坐标系上的RECT。
阅读(1191) | 评论(0) | 转发(0) |
0

上一篇:VC中OnPaint()的工作原理

下一篇:硬件信息

给主人留下些什么吧!~~