阿杰 发表于 2009-8-24 22:15:51

【分享】vc 使窗口置顶 在最前面

<p>bool SetWindowTop(CWnd* pWnd)<br/>{<br/>if(!pWnd)<br/>{<br/>&nbsp;&nbsp; return false;<br/>}<br/>if(pWnd-&gt;GetExStyle()&amp;WS_EX_TOPMOST)<br/>{<br/>&nbsp;&nbsp; return true;<br/>}<br/>else<br/>{<br/>&nbsp;&nbsp; int i= pWnd-&gt;SetWindowPos(&amp;CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);<br/>&nbsp;&nbsp; if (i==0)<br/>&nbsp;&nbsp;&nbsp; return false;<br/>&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp; return true;</p>
<p>}<br/>}</p>
<p>//取消窗口置顶<br/>CancelWindowTop(CWnd* pWnd)<br/>{<br/>if(pWnd)<br/>{<br/>&nbsp;&nbsp; int x=pWnd-&gt;SetWindowPos(&amp;CWnd::wndNoTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);<br/>&nbsp;&nbsp; if(x==0)<br/>&nbsp;&nbsp;&nbsp; return false;<br/>&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp; return true;<br/>}<br/>else<br/>{<br/>&nbsp;&nbsp; return false;<br/>}<br/>}</p>

阿杰 发表于 2009-8-24 23:24:21

<p>//这段代码没测试</p>
<p>&nbsp;</p>
<p><font face="Verdana">//vc 显示窗口到最前面的代码</font></p>
<p><font face="Verdana">typedef BOOL(WINAPI *AllowSetForegroundWindowFn_t)(DWORD dwProcessId);</font></p>
<p><font face="Verdana">HMODULE hModule = NULL;<br/>AllowSetForegroundWindowFn_t pProcAddress = NULL;<br/>hModule = GetModuleHandle("User32");<br/>if (hModule != NULL)<br/>{<br/>&nbsp; pProcAddress = (AllowSetForegroundWindowFn_t)GetProcAddress(hModule, <br/>&nbsp;&nbsp;&nbsp; "AllowSetForegroundWindow");<br/>}</font></p>
<p><font face="Verdana">if (pProcAddress != NULL)<br/>{<br/>&nbsp; if (pProcAddress( - 1))<br/>&nbsp; {<br/>&nbsp;&nbsp;&nbsp; SetForegroundWindow(Hwnd);<br/>&nbsp; }<br/>}</font></p>
<p><font face="Verdana">if (IsIconic(Hwnd))<br/>{<br/>&nbsp; ShowWindow(Hwnd, SW_RESTORE);<br/>}</font></p>
[此贴子已经被作者于2009-8-24 23:25:17编辑过]
页: [1]
查看完整版本: 【分享】vc 使窗口置顶 在最前面