GetCursorPos() 与GetMessagePos()的区别

1. GetCursorPos()函数原型:BOOL GetCursorPos(LPPOINT lpPoint);函数功能:该函数检取光标的位置, 以屏幕坐标表示.参 数:IpPoint:POINT结构指针, 该结构接收光标的屏幕坐标.返 回 值:如果成功, 返回值非零; 如果失败, 返回值为零. 若想获得更多错误信息, 请调用GetLastError函数.2. GetMessagePos()函数原型:DWORD GetMessagePos(VOID)函数功能:该函数返回表示屏幕坐标下光标位置的长整数值. 此位置表示当上一消息由GetMessage取得时鼠标占用的点.返 回 值:返回值给出光标位置的X, y坐标. X坐标在低位整数, y坐标在高位整数.备注:(1)如前所述,X坐标在返回值的低位整数,y坐标在高位整数(都表示有符号值,因为在多显示器的系统里可取得负值)。(2)如果返回值赋给了一个变量,,可用MAKEPOINT宏从返回值取得POINT结构。(3)也可用GET_X_LPARAM或GET_Y_LPARAM宏来抽取X,y坐标,取得的坐标为屏幕坐标,并不是客户区坐标。注意:不要用LOWORD或HIWORD宏来抽取鼠标位置的x,y坐标,因为在多显示器的系统里将返回不正确的结果。多显示器的系统里可取得负的x, y坐标,但LOWORD和HIWORD将坐标当作无符号量。二者区别:

要得到光标的当前位置而不是上一个消息发生时的位置,调用函数GetCursorPos。

判断鼠标击中RECT区域的方法:先getwindowrect()得到得是屏幕坐标再screentoclient()转化为客户区坐标

然后ptinrect()判断

例如:对话框中有一个webBrowser控件,怎样判定鼠标点击的位置是否落在webBrowser控件内?

方法I: getwindowrect()screentoclient()ptinrect()方法2:CPoint pntCursor;if (GetCursorPos(&pntCursor)){if (this == WindowFromPoint(pntCursor)){int flag = 1;}}方法3:把控件属性中的"Notify"勾上,然后在PreTranslateMessage中if(pMsg->hwnd==GetDlgIte(IDC_WEBBROWER1)->m_hWnd){…}

那我想明天可以是我的来世。

GetCursorPos() 与GetMessagePos()的区别

相关文章:

你感兴趣的文章:

标签云: