11.4.2 CRectTracker类的常用成员函数
该类有7个常用的成员函数,如表11.3所示。
表11.3 CRectTracert成员函数
|
函 数 名< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
说 明 |
|
Draw |
显示矩形 |
|
GetTrueRect |
返回矩形的宽度和高度,包括改变大小句柄 |
|
HitTest |
返回与CRectTracker对象关联的光标当前位置 |
|
NormalizeHit |
规范化一个单击测试代码 |
|
SetCursor |
根据光标在矩形上方的位置来设置光标 |
|
Track |
支持用户操作矩形 |
|
TrackRubberBand |
支持用户“橡皮筋”似的拉伸选择 |
1.Draw()函数
Draw()函数用于绘制橡皮筋区域的边框及边框内部区域,橡皮筋显示的样式完全取决于该函数的实现,函数原型如下:
- void Draw(CDC* pDC )
参数pDC指向将要绘制区域的设备上下文环境。
GetTrueRect()函数用于获取橡皮筋区域,函数原型如下:
- void GetTrueRect( LPRECT lpTrueRect )
参数lpTrueRect是指向橡皮筋区域的指针。
HitTest()函数判断一点与橡皮筋区域的关系,函数原型如下:
- int HitTest( CPoint point )
参数point就是将要进行判断的点,这个函数的返回值非常重要,根据返回值可以判断点与橡皮筋区域的具体位置关系。返回值与位置的关系如表11.4所示。
表11.4 HitTest()函数的返回值
|
值 |
十 进 制 值 |
说 明 |
|
CRectTracker::hitNothing |
–1 |
点不在橡皮筋区域内 |
|
CRectTracker::hitTopLeft |
0 |
点在橡皮筋区域边框的左顶点上 |
|
CRectTracker::hitTopRight |
1 |
点在橡皮筋区域边框的右顶点上 |
|
CRectTracker::hitBottomRight |
2 |
点在橡皮筋区域边框的右底点上 |
|
CRectTracker:hitBottomLeft |
3 |
点在橡皮筋区域边框的左底点上 |
|
CRectTracker:hitTop |
4 |
点在橡皮筋区域的上边框上 |
|
CRectTracker:hitRight |
5 |
点在橡皮筋区域的右边框上 |
|
CRectTracker:hitBottom |
6 |
点在橡皮筋区域的底边框上 |
|
CRectTracker:hitLeft |
7 |
点在橡皮筋区域的左边框上 |
|
CRectTracker:hitMiddle |
8 |
点在橡皮筋区域内 |
2.SetCursor()函数
SetCursor()函数改变鼠标经过橡皮筋区域时的光标形状,函数原型如下:
- BOOL SetCursor(
- CWnd* pWnd,
- UINT nHitTest
- )
函数的第1个参数pWnd是光标所在窗体的指针。第2个参数nHitTest是触发这个函数时当前鼠标坐标点与橡皮筋区域的关系值(即用鼠标坐标点调用HitTest()函数的返 回值)。
3.Track()函数
Track()函数是实现橡皮筋的关键。当调用这个函数后会捕获鼠标,直到用户释放鼠标左键、按下Esc键或按下鼠标左键。函数原型如下:
- BOOL Track(
- CWnd* pWnd, //橡皮筋所在区域的窗体指针
- CPoint point, //鼠标光标在设备上下文环境中的客户区的坐标
- BOOL bAllowInvert = FALSE, //是否允许橡皮筋区域沿X方向或Y方向翻转
- CWnd* pWndClipTo = NULL //将要剪切的窗体指针
- );
其余两个函数NormalizeHit()及TrackRubberBand(),与本实例并无关系,感兴趣的读者可以查阅相关资料。