QQ登陆画面的最小化显示机制(使程序不在任务栏显示)
来源:互联网 发布:高考状元笔记淘宝 编辑:程序博客网 时间:2024/04/28 02:47
2007-05-21 19:17
QQ登陆画面的最小化显示机制(使程序不在任务栏显示)
本页例程下载
怎么使自己的程序不在任务栏显示?去网上找一下答案,关于Delphi的无非是以下一句:
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOWINDOW);
在Application窗口的窗口属性中添加工具窗口属性,这样它就不会在任务栏显示了.在Delphi中,主窗口最小化的时候,实际上应该是隐藏了,只有Application窗口显示出来,这时候在屏幕的左下角就会出现最小化的一个标题栏:
系统菜单的样子:我感觉这样很不好看,这就是标准的Windows中的ToolWindow.QQ的登陆界面在运行时也不出现在任务栏,但是它最小化之后是什么样子呢?系统菜单的样子:这样比ToolWindow风格漂亮的多了,但是这是怎么实现的呢?我们来研究研究.使用VC的Spy++工具找到登陆界面窗口这是一个对话框(#32770)的窗口,试着定位到它的密码框,发现这个编辑框居然是个对话框!怪不得功能这么强大呢:还有"隐身登陆"和"自动登陆"两个复选框居然是Button:不过这不是我们要关注的,下面我们看一写登陆界面窗口的窗口属性:发现登陆界面是有一个父窗口的,也就是说登陆界面不是单独存在的,它很有可能只是一个弹出窗口,点击父窗口的句柄,查看父窗口的属性:这个父窗口是一个不可用的不可见的后台窗口,我们使用ShouWindow函数把它强制显示出来:图中的黑线标识的部分是父窗口句柄,看到左上角那个标题为ChenkIdle的窗口了吧,那个就是父窗口,因为正常使用中它不会显示,所以连背景刷子都没有定义,它的界面是不重新绘制的,它只是一个有标题的父窗口而已.父窗口显示以后,尝试用鼠标去激活它,发现登陆界面窗口在闪烁,登陆界面分明就是一个模态弹出的窗口.父窗口率先启动,然后把登陆界面模态显示出来,自己始终不可见.我们使用Delphi尝试模拟这种效果,首先设计不可见的也不在任务栏显示的父窗口,窗体的大小无关紧要:添加一个Form2为弹出窗口,这个窗口会由Form1弹出来,和QQ登陆界面的地位相同,注意在这个窗口关闭时通知它的父窗口关闭:下面是Form1弹出Form2的问题,直接在Form1的创建过程中弹出Form2这样不行,因为这样的效果会比较像Form2成了Application的主窗体,最小化之后依然是ToolWindow的样子.还容易想到的是在Form1的OnShow中添加代码,但是这样也行不通,因为Form1根本就不会显示出来,它是不可见的.这里我采用了使用定时器的办法,在Form1中添加一个定时器,响应的时间间隔很小,而且只需响应一次就够了.在响应代码中使这个不再有用的定时器无效,然后再弹出Form2:注意在这里Form在动态创建的,首先要把它从工程的自动创建窗体列表中把它删除.这样编译运行我们的程序,最小化它,发现这正是我们想要的效果:多运行几个看看,最小化的小窗口的排列是有序的,这些都由系统自动完成:- QQ登陆画面的最小化显示机制(使程序不在任务栏显示)
- 如何使对话框程序启动以及主窗口最小化时不在任务栏上显示
- 如何使对话框程序启动以及主窗口最小化时不在任务栏上显示
- MFC 使程序不在任务栏显示
- 使运行的窗口不在任务栏显示
- C#WinForm程序不不在任务栏显示的处理方法
- C# WinForm程序中不在任务栏显示的处理方法
- 让程序不在任务栏小按钮显示
- MFC窗口程序启动时最小化到托盘、不在任务栏中显示、显示时在右小角
- 输入法不在任务栏显示
- 如何使Qt应用程序不在系统的任务栏上显示?
- 在VC中实现程序不在任务栏显示按钮, 标题栏与菜单栏的不显示
- 不在任务栏上显示图标
- qt对话框不在任务栏显示
- qt对话框不在任务栏显示
- 让程序运行时不在任务栏显示图标
- MFC让程序运行时不在任务栏显示
- 制作一个不在任务栏及任务列表中显示的幽灵程序
- android 获取手机信息,并且将结果post到服务器和保存到本地
- [LeetCode] Subsets
- linux手工配置ip
- jquery : 获取可视窗体高度
- Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient va
- QQ登陆画面的最小化显示机制(使程序不在任务栏显示)
- 设计模式:模板方法模式(8)C++版
- 修改类属性
- Google前招聘官:获得苹果、谷歌或微软工作的10个建议
- android启动模式对activity的影响
- C++中引用(&)的用法和应用实例
- Python中的getattr()和__getattr__方法
- 无题
- linux oops产生过程之dump_backtrace