(转)无焦点显示窗口解决方法
原文鏈接:http://blog.csdn.net/abcpanpeng/archive/2009/12/29/5099580.aspx
1、不同線(xiàn)程的處理方法
如何在2K/xp下使窗口獲取焦點(diǎn)
在2K/XP下我們可以用 AttachThreadInput 和SetForegroundWindow來(lái)有效的獲取焦點(diǎn)。
//捕捉并設(shè)置當(dāng)前焦點(diǎn)窗口為我們的窗口
AttachThreadInput(
??? GetWindowThreadProcessId(
??????? ::GetForegroundWindow(),NULL),
??? GetCurrentThreadId(),TRUE);
//置我們的為焦點(diǎn)窗口
SetForegroundWindow();
SetFocus();
//釋放thread
AttachThreadInput(
??? GetWindowThreadProcessId(
??????? ::GetForegroundWindow(),NULL),
??? GetCurrentThreadId(),FALSE);
2、同線(xiàn)程下的窗口無(wú)焦點(diǎn)彈出的方法在windows的窗口系統(tǒng)中,popup窗口的焦點(diǎn)是與它的活動(dòng)狀態(tài)密切相關(guān)的。只要使???? popup窗口不獲得活動(dòng)狀態(tài),popup窗口就不會(huì)自動(dòng)獲得焦點(diǎn)。具體方法如下:???? 1.?? 在創(chuàng)建popup窗口時(shí)不要有WS_VISIBLE風(fēng)格,然后調(diào)用SetWindowPos函數(shù)顯示???? 創(chuàng)建的窗口,參數(shù)uFlag取值SWP_SHOWWINDOW???? and???? SWP_NOACTIVATE,這樣就可以保證???? 窗口在創(chuàng)建是不會(huì)得到活動(dòng)狀態(tài),也就不會(huì)獲得焦點(diǎn)。???? 2.?? 響應(yīng)WM_MOUSEACTIVATE消息,返回MA_NOACTIVATE表示窗口在鼠標(biāo)點(diǎn)擊時(shí)不需要???? 獲得活動(dòng)狀態(tài),這樣就可以保證在鼠標(biāo)點(diǎn)擊時(shí)窗口不會(huì)自動(dòng)獲得焦點(diǎn)。???? 至于鼠標(biāo)輸入的響應(yīng),本就與窗口是否獲得焦點(diǎn)無(wú)關(guān),不會(huì)受到影響。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/abcpanpeng/archive/2009/12/29/5099580.aspx
總結(jié)
以上是生活随笔為你收集整理的(转)无焦点显示窗口解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用服务器传输xml文件格式,XML技术上
- 下一篇: 如何提高数据分析思维能力?