zoukankan      html  css  js  c++  java
  • Windows程序窗口置前台的几种方法

    第一种:SetForegroundWindow,这个方法时灵时不灵。有人说,在自己的程序里把自己的窗口之前一般就不灵,而置前其它程序的窗口就灵。我觉得这是有原因的:当一个程序运行这个函数的时候,我们可以想象,如果是用鼠标操作,那么当前窗口实际上正在操作,很可能在瞬间离开后,焦点又回来了,那么看上去更就没有吧其它窗口置前的效果,所以这个函数内部可能做了延迟,略等一下,在这个时间内,当前窗口不会被置前。就是这个时间,函数已经调用完成,所以看上去,自己的窗口并没有置前。

    第二种:SwitchToThisWindow,这个方法很好使,还会把最小化的窗口复原。但是Windows说,这个函数以后可能不支持。但是我觉得可以放心使用,Windows当前一般就那几个版本,程序不会计划运行100年不升级吧。这个函数可以直接链接,但是XP以前的版本可能不行,所以,使用动态加载可能保险点。动态加载代码:

    1. typedef void (WINAPI*PROCSWITCHTOTHISWINDOW)(HWND,BOOL);  
    2.   
    3.     PROCSWITCHTOTHISWINDOW SwitchToThisWindow;     
    4.     HMODULE hUser32 = GetModuleHandle(L"user32");  
    5.     SwitchToThisWindow = (PROCSWITCHTOTHISWINDOW)GetProcAddress(hUser32,"SwitchToThisWindow");  
    6.     SwitchToThisWindow(frame,1);  
    第三种方法:BringWindowToTop,这个函数比上一个功能少点,实质是调用SetWindowPos函数。Windows程序窗口置前台的几种方法
  • 相关阅读:
    Spring入门学习(一)
    Debian环境下vi设置
    Debian 环境下安装Tomcat记录
    Debian安装记录
    [原]Fedora 20的yum配置
    vue中slot以及mate的用法
    Express+Nodejs 下的登录拦截实现
    Node.js 常用Mongoose方法
    Node.js常用express方法
    node、Mongo项目如何前后端分离提供接口给前端
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318835.html
Copyright © 2011-2022 走看看