我會先解釋我爲什麼需要它,因爲我預計第一個迴應將是「你爲什麼需要它?」。我想檢測鼠標光標何時位於屏幕的邊緣,而我不想使用鉤子。因此,我創建了一個像素寬的TOPMOST不可見窗口。如何保持我最上面的窗口?
我使用C++在Win XP,所以創建窗口時(CreateWindowEx(WS_EX_TOPMOST |。WS_EX_TRANSPARENT ...)一切工作正常
不幸的是,如果用戶移動另一個頂層窗口,例如任務欄在我的窗口,我沒有得到鼠標移動
我試圖解決同樣這在建議方案: How To Keep an MDI Window Always on Top
我想檢查我的WM_WINDOWPOSCHANGED最頂層窗口的Z順序先用
case WM_WINDOWPOSCHANGED :
WINDOWPOS* pWP = (WINDOWPOS*)lParam;
尚pWP-> hwnd指向我的窗口和pWP-> hwndInsertAfter爲0,這應該意味着我的窗口是在Z的頂部,即使它被覆蓋任務欄。然後,我嘗試:
case WM_WINDOWPOSCHANGED :
HWND topWndHndl = GetNextWindow(myHandle, GW_HWNDPREV)
GetWindowText(topWndHndl, pszMem, cTxtLen + 1);
我總是會得到「Default IME」窗口位於窗口頂部。即使嘗試使用SetWindowPos()或BringWindowToTop()將窗口置頂,「Default IME」仍保留在頂部。我不知道什麼是「默認輸入法」以及如何檢測任務欄是否在我的窗口之上。
所以我的問題是:如何檢測我的最頂層的窗口不再是頂層的頂層窗口,以及如何保持頂層?
P.S.我知道週期性地將我的窗口帶到頂層作品的「強力」方法,但卻很難看,例如可能會有一些不必要的推論。 (將我的窗口置於頂部將隱藏通知窗口。)
謝謝你的時間和建議!
可能的重複[如何使一個窗口始終停留在頂部.Net?](http://stackoverflow.com/questions/683330/how-to-make-a-window-always-stay-on- top-in-net) – 2010-06-17 22:22:56