[問題] MFC的滑鼠事件

看板C_and_CPP作者 (雲§淡)時間4年前 (2020/05/24 12:57), 編輯推噓2(207)
留言9則, 4人參與, 4年前最新討論串1/2 (看更多)
開發平台(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

05/24 15:53, 4年前 , 1F
使用hook呢?
05/24 15:53, 1F

05/24 16:25, 4年前 , 2F
超過你的視窗... 這已經跟MFC無關了... 直接用hook吧
05/24 16:25, 2F

05/24 16:27, 4年前 , 3F
參考看看 SetWindowsHookEx() + WH_MOUSE吧...
05/24 16:27, 3F

05/24 20:35, 4年前 , 4F
一般是用 SetCapture 和 ReleaseCapture 去截收滑鼠事
05/24 20:35, 4F

05/24 20:35, 4年前 , 5F
件,但這招通常用在拖曳,放開就釋放 capture。
05/24 20:35, 5F

05/24 20:35, 4年前 , 6F
滑鼠移出視窗以後就屬於別的視窗了,移動事件被你攔截
05/24 20:35, 6F

05/24 20:35, 4年前 , 7F
,會造成其他視窗根本沒辦法操作,這是你要的效果嗎?
05/24 20:35, 7F

05/24 20:40, 4年前 , 8F
MSDN 的說明: https://bit.ly/3bTUesB
05/24 20:40, 8F

05/25 22:31, 4年前 , 9F
感謝上面三位大大提供意見,我研究一下這些方法
05/25 22:31, 9F
文章代碼(AID): #1UoVwnQy (C_and_CPP)
文章代碼(AID): #1UoVwnQy (C_and_CPP)