無焦點顯示窗口解決方法
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
1、不同線程的處理方法
如何在2K/xp下使窗口獲取焦點
在2K/XP下我們可以用 AttachThreadInput 和SetForegroundWindow來有效的獲取焦點。
//捕捉并設置當前焦點窗口為我們的窗口 AttachThreadInput( GetWindowThreadProcessId( ::GetForegroundWindow(),NULL), GetCurrentThreadId(),TRUE); //置我們的為焦點窗口 SetForegroundWindow(); SetFocus(); //釋放thread AttachThreadInput( GetWindowThreadProcessId( ::GetForegroundWindow(),NULL), GetCurrentThreadId(),FALSE);
2、同線程下的窗口無焦點彈出的方法
在windows的窗口系統中,popup窗口的焦點是與它的活動狀態密切相關的。只要使RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
popup窗口不獲得活動狀態,popup窗口就不會自動獲得焦點。具體方法如下:
1. 在創建popup窗口時不要有WS_VISIBLE風格,然后調用SetWindowPos函數顯示
創建的窗口,參數uFlag取值SWP_SHOWWINDOW and SWP_NOACTIVATE,這樣就可以保證
窗口在創建是不會得到活動狀態,也就不會獲得焦點。
2. 響應WM_MOUSEACTIVATE消息,返回MA_NOACTIVATE表示窗口在鼠標點擊時不需要
獲得活動狀態,這樣就可以保證在鼠標點擊時窗口不會自動獲得焦點。
至于鼠標輸入的響應,本就與窗口是否獲得焦點無關,不會受到影響。