如何在标题栏上增加控件(按钮)
来源:互联网 发布:山东省网络统计直报 编辑:程序博客网 时间:2024/05/28 23:21
如何在标题栏上增加控件(按钮)
大家在使用某些软件的过程中,有没有注意到有些软件有一些很有趣的东西。比如说在主窗口的标题栏上居然有一个按钮。在Internet中随处可见这样的小控件。按钮怎么可以加入到非客户区(Client)呢?
在这里,最关键的一点就是,大家不要被传统知识误导:真的认为它是一个按钮。有句柄(handle)的控件当然不能放在标题栏上了。有经验的程序员 用Spy++跟踪一下的话,马上就会发现其中的秘密。它并不是一个按钮,只不 过是处理成按钮的样子罢了。
既然知道了所以然,那么我们为什么不能自己来做一个呢,当然没问题,下面我们就用Delphi来实现它,讲注意我的注解。
在具体实例之前,我们应该知道几个关于标题栏的重要的消息:
WM_NCPAINT:重画标题栏消息。我们必须截住它,可以在这里重画按钮;
WM_NCLBUTTONDOWN:在标题栏上按下鼠标左键消息。我们可以截住它,在标题栏上画出按钮按下的样子,并且可以在其中进行自已的单击事件的处理,使得它像一个按钮;
WM_NCLBUTTONUP:在标题栏上释放鼠标左键消息。我们可以截住它,在标题栏上画出按钮弹起的样子;
WM_NCLBUTTONDBLCLK:在标题栏上双击鼠标左键消息。我们可以截住它,当在按钮区域双击时,我们就该使其无效,从而避免窗体执行最大化和还原操作。
WM_NCRBUTTONDOWN:在标题栏上按下鼠标右键消息。我们可以截住它,当在按钮区域双击时,我们就该使其无效,从而避免弹出窗体按制菜单。
WM_NCMOUSEMOVE:在标题栏上移动鼠标消息。我们可以截住它,当鼠标移出按钮区域时,我们就必须画出按钮没有被按下,即凸起时的样子。
WM_NCACTIVATE:当标题栏在激活与非激活之间切换时收到该消息。我们可以截住它,当该窗口处理激活状态时,我们可以做一些事情,比如说将我们的标题栏按钮上的字体变灰或变黑来指示该窗口的当前状态。下面我没有加入该项功能,如果大家感兴趣的话,可以自己完成。
(大家从这里可以发现,标题栏的消息都是WM_NC开头的)
知道了原理之后,相信大家一定可以做出更漂亮的按钮来。
- 如何在标题栏上增加控件(按钮)
- 如何在标题栏上增加按钮
- 如何在标题栏上增加按钮
- 如何在Web控件Button上增加脚本判断
- 如何在标题栏上添加按钮&通过例程分析状态条用法
- 3.32如何在程序清单视图的控件上增加工具提示(ToolTip)?
- android - 自定义标题栏(在标题栏中增加按钮和文本居中)
- android - 自定义标题栏(在标题栏中增加按钮和文本居中)
- android - 自定义标题栏(在标题栏中增加按钮和文本居中)
- android - 自定义标题栏(在标题栏中增加按钮和文本居中)
- android - 自定义标题栏(在标题栏中增加按钮和文本居中)
- 如何在选择屏幕的标准应用工具条上增加自定义按钮
- C# WinForm 中在窗口标题栏上加按钮
- C# WinForm 中在窗口标题栏上加按钮
- C# WinForm 中在窗口标题栏上加按钮
- C# WinForm 中在窗口标题栏上加按钮 [转贴]
- C# WinForm 中在窗口标题栏上加按钮
- C# WinForm 中在窗口标题栏上加按钮
- 一般要使得数据库查询语句性能好点遵循一下原则
- 温馨提醒:2009年考研全年复习备考时间表
- 嵌入式Linux内核移植相关代码分析
- 超牛超高档的AVG游戏推荐——《意识流》导玩
- 明晰C++内存分配的五种方法的区别
- 如何在标题栏上增加控件(按钮)
- SAS9.2安装先睹为快
- 【转】JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)
- 学习了下CSliderCtrl的用法
- 【转】JAVA面试题解惑系列(九)——继承、多态、重载和重写
- 在窗体的非客户区(如标题栏)中添加菜单栏或按钮
- 利用vc 6.0目录下的cl.exe直接编译程序的方法
- 亚洲新古典王子、钢琴圣手马克西姆
- 手动添加消息响应