在VC编程中,有时候我们需要将我们的程序在任务栏上的显示隐藏起来,我试过几种方法,下面我介绍一下我知道的三种方法。

  第一种方法是设置窗口WS_EX_TOOLWINDOW扩展样式,通过在OnInitDialog函数中添加如下代码:

  ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);

  ModifyStyleEx函数原型如下:

    BOOL ModifyStyleEx(
        DWORD dwRemove,
        DWORD dwAdd,
        UINT nFlags = 0 );

  第一个参数是要被去掉的扩展样式,如果设为0或NULL,则不去除任何样式;第二个参数类似,设置要添加的扩展样式;第三个参数默认为0,表示不调用SetWindowPos函数,如果设为true或非0,表示之后会调用SetWindowPos函数。上述代码为窗口添加了WS_EX_TOOLWINDOW样式,同时去掉了WS_EX_APPWINDOW样式,你可理解为这个窗口被设置成工具窗口,类似工具条。运行后效果如下:


通过这种方式隐藏程序在任务栏中的显示存在几个问题,第一个是程序的标题栏因为WS_EX_TOOLWINDOW样式的关系变窄了,和普通的程序标题有所区别;第二个问题是在按下alt+tab键进行程序切换时,在任务候选列表中找不到这个程序。

  第二种方法比较复杂,各位看官可以参考VC知识库的这篇文章《如何隐藏显示在任务栏中的对话框程序》。这种方法提到几点:第一、创建对话框时必须将它作为某个不可见框架窗口的子窗口;第二、这个不可见窗口的扩展式样必须设置 WS_EX_TOOLWINDOW;第三、保证对话框的扩展式样没有设置 WS_EX_APPWINDOW;对比第一种方法,区别是这里用了两个具有父子关系的窗口来实现这种效果,我应用这种方法隐藏了程序在任务栏中的显示,而且这里显示的窗口标题栏是正常的样式。但也发现一个问题,在按下alt+tab键进行程序切换时,在任务候选列表中显示的程序图标不是程序原来设置的图标,另我发现打开QQ登录界面按下alt+tab键看到的也是这种情况,(注:新版本QQ2011已修正,另如果什么都不做,只去掉WS_EX_APPWINDOW样式,也可以隐藏程序在任务栏中的显示,但按下alt+tab组合键后,切换程序列表中将找不到你的窗口程序)如下图:

  第三种方法很简单,在资源里添加一个Dialog,添加一个对应的窗口类,在主对话框的OnInitDialog中添加这两句代码:
  CSkyLoginDlg m_SkyLoginDlg;

  m_SkyLoginDlg.DoModal();    // show login dialog

效果如下:


用这种方法达到隐藏任务栏图标的目标,而且按下alt+tab键在任务候选列表中显示正常。为使这个子窗口关闭整个程序跟着退出,可以在最后m_SkyLoginDlg.DoModal();后添上OnCancel()函数。

  以上三种方法都是目前我用过的,能隐藏任务栏图标的,各位朋友有好的方法欢迎跟贴交流分享一下。

注:本文转载自 https://blog.csdn.net/lonelyrains/article/details/40195085

C++隐藏任务栏图标的更多相关文章

  1. FireMonkey隐藏任务栏图标

    FMX(FireMonkey)可以轻松实现很多VCL无法或难以实现的特效,所以将FMX程序作为界面,打包入DLL由VCL程序调用,是一个不错的方案.为了程序的完整性,你不想看见FMX程序在任务栏上显示 ...

  2. C# 隐藏窗口标题栏、隐藏任务栏图标

    //没有标题 this.FormBorderStyle = FormBorderStyle.None; //任务栏不显示 this.ShowInTaskbar = false;

  3. Delphi2007中正确调用SetWindowLong隐藏程序任务栏图标

    http://terony.blog.sohu.com/71347192.html‍ Delphi2007中正确调用SetWindowLong隐藏程序任务栏图标 标签: Delphi2007 SetW ...

  4. Win10如何隐藏Windows Defender任务栏图标

    导读 Windows 10 至发布以来就内置集成了 Windows Defender 安全防护应用,但有许多用户平常压根儿就没注意到它的存在.微软为了使安全防护功能更加明显,Windows 10 周年 ...

  5. C#:实现托盘(任务栏图标与托盘图标互斥)

    实现托盘(任务栏图标与托盘图标互斥),并且在点击任务栏图标时实现的最小化与点击最小化按钮分离. 具体如下: 1.向窗体上添加如下控件:MenuStrip menuStrip1, NotifyIcon ...

  6. ubuntu gnome桌面隐藏顶栏

    注意:ubuntu 14.04.5默认的为unity桌面,有多点触发,没有自带Tweak Tool工具.需安装gnome 桌面,可参见我的另一随笔. 环境: ubuntu 14.04.5 gnome ...

  7. delphi XE4 隐藏程序在任务管理器和隐藏任务栏

    最新处理方法,偶然发现delphi下有个ShowMainForm属性,只要在Application.Initialize;后面加上Application.ShowMainForm := false;就 ...

  8. iOS 滑动隐藏导航栏-三种方式

    /** 1隐藏导航栏-简单- */    self.navigationController.hidesBarsOnSwipe = YES; /** 2隐藏导航栏-不随tableView滑动消失效果 ...

  9. Win7任务栏图标大小调整为等宽

    打开注册表,找到HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics,新建DWORD,输入MinWidth,大图标设为56,小图标设定为36: 参 ...

随机推荐

  1. Node.js_express_服务器渲染页面 ejs

    服务器渲染页面 ejs 高效的 js 模版引擎 将数据提前渲染到页面上, 再将渲染好的页面返回响应给浏览器 提高首页加载速度 SEO 提前处理,提高加载速度 下载 ejs 包 npm install ...

  2. 【C++ 实验六 继承与派生】

    实验内容 1. 某计算机硬件系统,为了实现特定的功能,在某个子模块设计了 ABC 三款芯片用于 数字计算.各个芯片的计算功能如下: A 芯片:计算两位整数的加法(m+n).计算两位整数的减法(m-n) ...

  3. 解析数学表达式 代码解析AST语法树

    2019年2月20日09:18:22 AST语法树自己写代码解析的话就比较麻烦,有现成的库可以解析PHP,就像webpack就是自己解析js的语法代码,编译成各种版本的可用代码 github http ...

  4. java_基础_类加载

    类加载:Java命令的作用是启动虚拟机,虚拟机通过输入流,从磁盘上将字节码文件(.class文件)中的内容读入虚拟机,并保存起来的过程就是类加载. 类加载特性 :      *在虚拟机的生命周期中一个 ...

  5. Windows 安装JDK

    Windows 安装JDK jdk为java开发工具,jre为java运行环境,安装一个jdk版本会把两个一起装 步骤: 1.在官网下载jdk:http://www.oracle.com/techne ...

  6. type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是: system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ,一般来说,得保证查询至少达到range级别,最好能达到ref。 作者:高

    MySQL EXPLAIN详解 - 简书 https://www.jianshu.com/p/ea3fc71fdc45 type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是: syst ...

  7. 2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践 一.实验说明 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),vei ...

  8. Redis之基本使用

    基本介绍 Redis是一种key-value存储形式的非关系型数据库,也是一个强大的内存型存储系统,但是它比传统的Memcached 更灵活,支持更多的数据类型,同时也可以持久化. 支持的数据类型 先 ...

  9. Java安装及基础01

    Java特性: (1)java语言是面向对象的语言 (2)编译一次,到处运行(跨平台) (3)高性能 配置环境变量: JAVA命名规则: (1)常量命名规则:每个字母都大写(POEPLE_PRE_NO ...

  10. vue 基础的一些字眼及路由

    每个框架都有一些自己的写法和一些字眼 摘自 vue 官网 v-bind 缩写 <!-- 完整语法 --> <a v-bind:href="url">...& ...