一):
获取光标位置 可用 GetCursorPos(&pt)函数
此函数的参数 为保存光标位置信息的指针,此指针指向一个CPoint 类型
具体如下:
CPoint pt;
GetCursorPos(&pt);
二): 此时,获得的鼠标为屏幕坐标,我们首先将其转换为客户坐标
ScreenToClient(&pt);
此时,pt为鼠标相对于对话框客户区的坐标
三): 将其转换为picture控件逻辑坐标
首先,获取picture控件的客户坐标,用来对鼠标坐标做转换比较
CRect rect;
CWnd *pwn=GetDlgItem(IDC_SHOW);
pwn->GetWindowRect(&rect);
ScreenToClient(rect);
然后,进行坐标转换,将鼠标位置与picture原点位置做比较,进而将鼠标位置映射为picture控件逻辑坐标
pt.x=(LONG)(((double)(pt.x-rect.left))/rect.Width()*cx); // cx为逻辑坐标x方向范围
pt.y=-(LONG)(((double)(pt.y-rect.bottom))/rect.Height()*cy); // 注意 前面有个负号, 因为逻辑坐标的y方向是向上的 客户坐标方向相反
这样就成功的将鼠标坐标pt转换为了picture控件的逻辑坐标:>