如何让窗口始终保持在最前面

如何让窗口始终保持在最前面

飘飘白云 20090110

 

问题:让目标窗口始终保持在最前面,无论这个窗口是模式的还是模式的。

思路:取得当前最前面窗口的title,如果title不是与目标窗口的title不相同(说明目标窗口不是在最前面),枚举窗口,找到目标窗口,设置它为最前面。

 

代码说话:

  1.         static wchar_t dstWndTitle[] = L"Test window";
  2.         // Get handle of top window.
  3.         HWND topHwnd = ::GetTopWindow(NULL);
  4.         wchar_t wcTitle[MAX_PATH];
  5.         if(topHwnd != NULL){
  6.             // Get title of top window.
  7.             BOOL failed = (::GetWindowText(topHwnd, wcTitle, MAX_PATH) == 0);
  8.             // Fail to get title of current top window or top window isn't target window.
  9.             if ( failed || wcscmp(wcTitle, dstWndTitle) != 0){
  10.                 // Set target window as top window.
  11.                 topHwnd = ::GetNextWindow(topHwnd, GW_HWNDNEXT);
  12.                 while (topHwnd != NULL){
  13.                     if(::GetWindowText(topHwnd, wcTitle, MAX_PATH) != 0){
  14.                         if (wcscmp(wcTitle, dstWndTitle) == 0){
  15.                             ::SetWindowPos(topHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);
  16.                             break;
  17.                         }
  18.                     }
  19.                     topHwnd = ::GetNextWindow(topHwnd, GW_HWNDNEXT);
  20.                 }
  21.             }
  22.         }

你可能感兴趣的:(null,Path)