作者student23489 (雲§淡)
看板C_and_CPP
標題[問題] MFC的滑鼠事件
時間Sun May 24 12:57:19 2020
開發平台(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的介面
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.136.88 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1590296241.A.6BC.html
推 binary: 使用hook呢? 05/24 15:53
→ WPC001: 超過你的視窗... 這已經跟MFC無關了... 直接用hook吧 05/24 16:25
→ WPC001: 參考看看 SetWindowsHookEx() + WH_MOUSE吧... 05/24 16:27
推 Schottky: 一般是用 SetCapture 和 ReleaseCapture 去截收滑鼠事 05/24 20:35
→ Schottky: 件,但這招通常用在拖曳,放開就釋放 capture。 05/24 20:35
→ Schottky: 滑鼠移出視窗以後就屬於別的視窗了,移動事件被你攔截 05/24 20:35
→ Schottky: ,會造成其他視窗根本沒辦法操作,這是你要的效果嗎? 05/24 20:35
→ student23489: 感謝上面三位大大提供意見,我研究一下這些方法 05/25 22:31