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

本文提供了一种方法,使指定名称的目标窗口始终显示在所有其他窗口之上。通过获取当前最前方窗口的标题并将其与目标窗口标题进行比较,若不同则将目标窗口设置为最前方。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

飘飘白云 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.         }
如何设置让一个窗口总在最前(Exaware OnTop和PushPin)软件下载 Windows中打开一个新窗口或切换任务时,原有的活动窗口就会被它所覆盖。不过,像Winamp等软件,却有一个能让自己的操作窗口总在最前的功能,非常实用。其实,只要你安装了像ExaWare OnTop和PushPin这样的免费小软件,也一样可以让任意Windows操作窗口总在最前面,不让其他的窗口挡住它! 1.好用的ExaWare OnTop 下载并安装该软件后,双击桌面上的ExaWare OnTop 图标启动程序,我们看不到它的任何窗口界面,但在系统托盘上可以发现它的图标。单击该图标会弹出一个菜单,在这里列出了当前系统中所有窗口的标题。要想让某个窗口总在最前面,只要将鼠标移到相应的窗口标题项并点击鼠标(左右键均可)即可,如图所示。单击后该窗口标题前面的图标也相应地多了一个方框(如果没有图标则会显示一个对勾),表明该窗口已经设置成功。这时打开该窗口,再打开其他程序窗口,看看它是否一直总在其他窗口前面而不被遮住?怎么样,是不是有种高高在上的感觉?要想取消 OnTop 状态,只要重复一遍上面的操作就可以了。 看到这里你是不是有一个疑问:如果同时将两个窗口设置为总在最前(Always OnTop)的状态,那将会发生什么事情呢?其实也很简单,如果两个(或多个)窗口同时处于总在最前的状态,那说明它们的地位平等,这时先激活谁谁就在上面(和设置前一样看待)。另外还有一个问题需要注意:如果需要退出该软件,建议点击系统托盘上的软件图标并选择菜单中的“Exit and Restore”命令,这样在退出软件的同时可以恢复各个窗口的原始状态,以免给使用带来不便。 2.小巧的PushPin 相对于ExaWare OnTop 来说,PushPin 的体积更为小巧,只有区区的22KB 下载得到的是一个压缩包,由于它是一款绿色软件,我们只要直接将该压缩包解压缩到某个指定的目录下即可运行(主程序文件名为Pushpin.exe),同样看不到主程序窗口,只会发现系统托盘处多了一个图标。要想让某个操作窗口总在最前面,只要在其标题栏上(在任务栏按钮上也可)单击鼠标右键并从弹出的菜单中选择“Always on top”命令即可。要退出程序只需用鼠标右击系统托盘上的软件图标,并从弹出的菜单中选择“Remove”命令即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值