(转)无焦点显示窗口解决方法
原文鏈接:http://blog.csdn.net/abcpanpeng/archive/2009/12/29/5099580.aspx
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窗口的焦點是與它的活動狀態密切相關的。只要使???? popup窗口不獲得活動狀態,popup窗口就不會自動獲得焦點。具體方法如下:???? 1.?? 在創建popup窗口時不要有WS_VISIBLE風格,然后調用SetWindowPos函數顯示???? 創建的窗口,參數uFlag取值SWP_SHOWWINDOW???? and???? SWP_NOACTIVATE,這樣就可以保證???? 窗口在創建是不會得到活動狀態,也就不會獲得焦點。???? 2.?? 響應WM_MOUSEACTIVATE消息,返回MA_NOACTIVATE表示窗口在鼠標點擊時不需要???? 獲得活動狀態,這樣就可以保證在鼠標點擊時窗口不會自動獲得焦點。???? 至于鼠標輸入的響應,本就與窗口是否獲得焦點無關,不會受到影響。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/abcpanpeng/archive/2009/12/29/5099580.aspx
總結
以上是生活随笔為你收集整理的(转)无焦点显示窗口解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用服务器传输xml文件格式,XML技术上
- 下一篇: 如何提高数据分析思维能力?