[問題] MFC的滑鼠事件

作者: student23489 (雲§淡)   2020-05-24 12:57:19
開發平台(Platform): (Ex: Win10, Linux, ...)
win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
Visual Studio 2019
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
MFC
問題(Question):
目前有個問題是要抓滑鼠所在位置的座標
小弟是使用OnMouseMove這個函式,發現只能抓取視窗內滑鼠座標,無法抓到視窗外
(如桌面)的滑鼠位置
想請問一下有什麼辦法能實現嗎? 因為剛接觸MFC不太了解
以下是我的程式碼
void CmouseMoveCurPosDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CString str;
ClientToScreen(&point);
str.Format(_T(X: %04d, Y: %04d), point.x, point.y);
dc.TextOutW(10, 10, str);
CDialogEx::OnMouseMove(nFlags, point);
}
會選MFC是因為公司要開發內部使用的視窗程式,而主管要求使用MFC,因為他比較熟悉
MFC的介面
作者: binary   2020-05-24 15:53:00
使用hook呢?
作者: WPC001 (好悶, 迷惘~~)   2020-05-24 16:25:00
超過你的視窗... 這已經跟MFC無關了... 直接用hook吧參考看看 SetWindowsHookEx() + WH_MOUSE吧...
作者: Schottky (順風相送)   2020-05-24 20:35:00
一般是用 SetCapture 和 ReleaseCapture 去截收滑鼠事件,但這招通常用在拖曳,放開就釋放 capture。滑鼠移出視窗以後就屬於別的視窗了,移動事件被你攔截,會造成其他視窗根本沒辦法操作,這是你要的效果嗎?MSDN 的說明: https://bit.ly/3bTUesB
作者: student23489 (雲§淡)   2020-05-25 22:31:00
感謝上面三位大大提供意見,我研究一下這些方法

Links booklink

Contact Us: admin [ a t ] ucptt.com