mfc hittest 使用方法

来源:互联网 发布:假面骑士exaid知乎 编辑:程序博客网 时间:2024/06/02 03:55

1.背景
HitTest为命中测试的意思。在使用MFC编写程序的时候,在树形视图以及列表视图中通常会涉及到需要获得鼠标当前位置所对应的元素。这种通过光标坐标位置来获得相应元素项的操作我们称之为命中测试。

2.相关函数
API函数::GetMessagePos() :可以获得当前光标的坐标信息,GetMessagePos()函数
会返回一个4字节DWORD类型的值
API函数GetCursorPos() : 该函数检取光标的位置,以屏幕坐标表示

HitTest() :HitTest()方法会返回一个HTREEITEM类型变量,如果HitTest()方法返
回NULL,则表示当前光标位置坐标处没有相对应的树形视图元素
CPoint :点的类
LOWORD() :宏可提取低二字节值 注:低两个字节包含了屏幕中X坐标值
HIWORD() :宏可提取高二字节值 注:高两个字节包含了屏幕中Y坐标值
ScreenToClient() :屏幕坐标转换到客户区坐标
this :表示当前类
3.用法
一.GetMessagePos
返回值:返回值给出光标位置的X,y坐标。X坐标在低位整数,y坐标在高位整数

DWORD pos = GetMessagePos();CPoint pt(LOWORD(pos),HIWORD(pos));ScreenToClient(pt);HTREEITEM hSelItem = this->HitTest(pt);//获得当前坐标位置对应的树形视图元素if(hSelItem == NULL){    return FALSE;}

二.GetCursorPos
该函数检取光标的位置,以屏幕坐

CPoint point;GetCursorPos(&point);ScreenToClient(&point);HTREEITEM hItem = this->HitTest(point);if (hItem == NULL){return FALSE;}:int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)  {  this->}//这里 this 就是 CTestViewint CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)  {  this->}
原创粉丝点击