如何让窗口始终保持在最前面
飘飘白云 20090110
问题:让目标窗口始终保持在最前面,无论这个窗口是模式的还是模式的。
思路:取得当前最前面窗口的title,如果title不是与目标窗口的title不相同(说明目标窗口不是在最前面),枚举窗口,找到目标窗口,设置它为最前面。
代码说话:
- staticwchar_tdstWndTitle[]=L"Testwindow";
- //Gethandleoftopwindow.
- HWNDtopHwnd=::GetTopWindow(NULL);
- wchar_twcTitle[MAX_PATH];
- if(topHwnd!=NULL){
- //Gettitleoftopwindow.
- BOOLfailed=(::GetWindowText(topHwnd,wcTitle,MAX_PATH)==0);
- //Failtogettitleofcurrenttopwindowortopwindowisn'ttargetwindow.
- if(failed||wcscmp(wcTitle,dstWndTitle)!=0){
- //Settargetwindowastopwindow.
- topHwnd=::GetNextWindow(topHwnd,GW_HWNDNEXT);
- while(topHwnd!=NULL){
- if(::GetWindowText(topHwnd,wcTitle,MAX_PATH)!=0){
- if(wcscmp(wcTitle,dstWndTitle)==0){
- ::SetWindowPos(topHwnd,HWND_TOPMOST,0,0,0,0,SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE);
- break;
- }
- }
- topHwnd=::GetNextWindow(topHwnd,GW_HWNDNEXT);
- }
- }
- }