C++隐藏任务栏图标
在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++隐藏任务栏图标的更多相关文章
- FireMonkey隐藏任务栏图标
FMX(FireMonkey)可以轻松实现很多VCL无法或难以实现的特效,所以将FMX程序作为界面,打包入DLL由VCL程序调用,是一个不错的方案.为了程序的完整性,你不想看见FMX程序在任务栏上显示 ...
- C# 隐藏窗口标题栏、隐藏任务栏图标
//没有标题 this.FormBorderStyle = FormBorderStyle.None; //任务栏不显示 this.ShowInTaskbar = false;
- Delphi2007中正确调用SetWindowLong隐藏程序任务栏图标
http://terony.blog.sohu.com/71347192.html Delphi2007中正确调用SetWindowLong隐藏程序任务栏图标 标签: Delphi2007 SetW ...
- Win10如何隐藏Windows Defender任务栏图标
导读 Windows 10 至发布以来就内置集成了 Windows Defender 安全防护应用,但有许多用户平常压根儿就没注意到它的存在.微软为了使安全防护功能更加明显,Windows 10 周年 ...
- C#:实现托盘(任务栏图标与托盘图标互斥)
实现托盘(任务栏图标与托盘图标互斥),并且在点击任务栏图标时实现的最小化与点击最小化按钮分离. 具体如下: 1.向窗体上添加如下控件:MenuStrip menuStrip1, NotifyIcon ...
- ubuntu gnome桌面隐藏顶栏
注意:ubuntu 14.04.5默认的为unity桌面,有多点触发,没有自带Tweak Tool工具.需安装gnome 桌面,可参见我的另一随笔. 环境: ubuntu 14.04.5 gnome ...
- delphi XE4 隐藏程序在任务管理器和隐藏任务栏
最新处理方法,偶然发现delphi下有个ShowMainForm属性,只要在Application.Initialize;后面加上Application.ShowMainForm := false;就 ...
- iOS 滑动隐藏导航栏-三种方式
/** 1隐藏导航栏-简单- */ self.navigationController.hidesBarsOnSwipe = YES; /** 2隐藏导航栏-不随tableView滑动消失效果 ...
- Win7任务栏图标大小调整为等宽
打开注册表,找到HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics,新建DWORD,输入MinWidth,大图标设为56,小图标设定为36: 参 ...
随机推荐
- js JQuery 获取元素和遍历
用户名<input class="yonghu" type="text" id="user" name="u" / ...
- 通过mycat实现mysql的读写分离
mysql的主从配置沿用上一篇博客的配置:https://www.cnblogs.com/MasterSword/p/9434169.html mycat下载地址:http://www.mycat.i ...
- express 随笔
#express 1.使用Express 应用生成器 npm install express-generator -g 2.创建一个命名为 myapp 的应用 express myapp 3.安装所有 ...
- 数据可视化——阿里云解决方案DataV
数据可视化——阿里云解决方案DataV https://help.aliyun.com/document_detail/53844.html?spm=a2c4g.11186623.6.579.37fd ...
- 《ABCD组团队》第二次作业
ABCD组:二手车价格预测系统 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.c ...
- RF - selenium - 常用关键字 - 示例
1. 打开浏览器 Open Browser http://www.baidu.com chrome 2. 关闭浏览器 Close Browsers Close All Browser 3. ...
- git 远程
git remote add origin [远程仓库地址]
- uboot - the bootloader of linux
[转载]https://blog.csdn.net/kernel_yx/article/details/53045424 最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移 ...
- Windows下配置node和npm
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Node.js 的使用包管理器 ...
- [zw]薰衣草/紫花苜蓿+桑椹/(黑红蓝)霉等植物
有趣的问题 为什么越长大觉得时间过得越快? 另参考,讨论的比较深刻 为何人随着年龄的增大觉得时间过得越来越快? 小时候,你会花上十分钟去观察一只蚂蚁的活动. 小时候,走路上碰到一只鸟儿你都会新奇不已. ...