2011-04-19 36 views
0

我怎麼會做一個按鈕,將改變它的位置上MouseMove事件光標是否足夠接近MFC按鈕的中心?MFC無法點擊按鈕(從光標上的MouseMove出走)

+0

聽起來很煩人。 :) – 2011-04-19 21:07:48

+0

當用戶將按鈕按到窗口邊框或角落時,你會怎麼做? – 2011-04-20 12:41:12

回答

2

WM_MOUSEMOVE不傳遞到按鈕(而不是捕捉到,但你不希望出現這種情況)。所以你必須在父對話框中處理WM_MOUSEMOVE。如果你希望你的按鈕是一個自包含的控件,你必須在創建按鈕時創建父窗口的子類。

子類,在此背景下,意味着:
- 您檢索和存儲用的getParent(父的窗口過程地址) - > GetWindowLong(GWL_WNDPROC)
- 你把它與調用SetWindowLong()
設置爲你的程序 - 在這個過程中,你可以按照你想要的方式處理WM_MOUSEMOVE之後,調用父進程的前一個窗口proc。

1

的WM_MOUSEMOVE座標將是相對於屏幕,但你可能會想相對於包含它的窗口的按鈕位置跟蹤。使用父窗口上的ScreenToClient方法進行轉換,然後可以比較座標以查看它是否接近。然後使用MoveWindow移動按鈕。

0

如果您追蹤鼠標光標位置,您可以確定光標何時接近或進入按鈕窗口矩形。然後,您可以使用SetWindowPos()函數在父窗口客戶區中重新定位按鈕窗口。如果光標不在它