【分享】vc 使窗口置顶 在最前面
<p>bool SetWindowTop(CWnd* pWnd)<br/>{<br/>if(!pWnd)<br/>{<br/> return false;<br/>}<br/>if(pWnd->GetExStyle()&WS_EX_TOPMOST)<br/>{<br/> return true;<br/>}<br/>else<br/>{<br/> int i= pWnd->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);<br/> if (i==0)<br/> return false;<br/> else<br/> return true;</p><p>}<br/>}</p>
<p>//取消窗口置顶<br/>CancelWindowTop(CWnd* pWnd)<br/>{<br/>if(pWnd)<br/>{<br/> int x=pWnd->SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);<br/> if(x==0)<br/> return false;<br/> else<br/> return true;<br/>}<br/>else<br/>{<br/> return false;<br/>}<br/>}</p> <p>//这段代码没测试</p>
<p> </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/> pProcAddress = (AllowSetForegroundWindowFn_t)GetProcAddress(hModule, <br/> "AllowSetForegroundWindow");<br/>}</font></p>
<p><font face="Verdana">if (pProcAddress != NULL)<br/>{<br/> if (pProcAddress( - 1))<br/> {<br/> SetForegroundWindow(Hwnd);<br/> }<br/>}</font></p>
<p><font face="Verdana">if (IsIconic(Hwnd))<br/>{<br/> ShowWindow(Hwnd, SW_RESTORE);<br/>}</font></p>
[此贴子已经被作者于2009-8-24 23:25:17编辑过]
页:
[1]