Delphi如何在Form的标题栏绘制自定义文字
Delphi中Form窗体的标题被设计成绘制在系统菜单的旁边,如果你想要在标题栏绘制自定义文本又不想改变Caption属性,你需要处理特定的Windows消息:WM_NCPAINT.。
WM_NCPAINT消息在需要重绘边框时发送到窗口,应用程序可以利用该消息绘制自己的窗口边框。
注意,同时你也要处理窗口激活或失去焦点的WM_NCACTIVATE消息,如果不处理,当窗口失去焦点时,自定义绘制的文本会消失。
type
    TCustomCaptionForm = class(TForm)
    private
      procedure WMNCPaint(var Msg: TWMNCPaint) ; message WM_NCPAINT;
      procedure WMNCACTIVATE(var Msg: TWMNCActivate) ; message WM_NCACTIVATE;
      procedure DrawCaptionText() ;
    end;
...
implementation
procedure TCustomCaptionForm .DrawCaptionText;
 const
    captionText = 'delphi.about.com';
 var
    canvas: TCanvas;
 begin
    canvas := TCanvas.Create;
    try
      canvas.Handle := GetWindowDC(Self.Handle) ;
      with canvas do
      begin
        Brush.Style := bsClear;
        Font.Color := clMaroon;
        TextOut(Self.Width - 110, 6, captionText) ;
      end;
    finally
      ReleaseDC(Self.Handle, canvas.Handle) ;
      canvas.Free;
    end;
 end;
procedure TCustomCaptionForm.WMNCACTIVATE(var Msg: TWMNCActivate) ;
 begin
    inherited;
    DrawCaptionText;
 end;
procedure TCustomCaptionForm.WMNCPaint(var Msg: TWMNCPaint) ;
 begin
    inherited;
    DrawCaptionText;
 end;
Delphi如何在Form的标题栏绘制自定义文字的更多相关文章
- delphi如何在form显示出来后处理指定的事件(例如自动登录)
		
最近写一个delphi客户端,遇到一个自动登录问题,已经解决了思路如下: 1.在Form的oncreate事件中读取用户配置文件,检查及处理是否保存了用户密码,是否自动登录,如果需要自动登录, 自动登 ...
 - WPF绘制自定义窗口
		
原文:WPF绘制自定义窗口 WPF是制作界面的一大利器,下面就用WPF模拟一下360的软件管理界面,360软件管理界面如下: 界面不难,主要有如下几个要素: 窗体的圆角 自定义标题栏及按钮 自定义状态 ...
 - Android开发-取消程序标题栏或自定义标题栏
		
注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 在Android开发中,跟据需要我们有时候需要自定义应用程序的标题栏或者取消程序的标题栏,下面本菜鸟在此记录与分享一下自己使用的方法 ...
 - UE4 Tutorial - Custom Mesh Component 用于绘制自定义网格的插件CustomMeshComponent
		
UE4 中用于绘制自定义网格的插件CustomMeshComponent. 转载: UE4 Tutorial - Custom Mesh Component Over the last few w ...
 - 如何在magento后台增加一个自定义订单状态
		
magento后台订单状态(order status)只有Pending.Processing.On Hold.Closed.Canceled.Pending Payment 等等,如何在magent ...
 - Android中使用ListView绘制自定义表格(2)
		
上回再写了<Android中使用ListView绘制自定义表格>后,很多人留言代码不全和没有数据样例.但因为项目原因,没法把源码全部贴上来.近两天,抽空简化了一下,做了一个例子. 效果图如 ...
 - 如何在ASP.NET Core中自定义Azure Storage File Provider
		
文章标题:如何在ASP.NET Core中自定义Azure Storage File Provider 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p ...
 - [Xcode 实际操作]九、实用进阶-(19)重写父类的绘图方法,使用图形上下文绘制自定义图形
		
目录:[Swift]Xcode实际操作 本文将演示如何使用图形上下文,绘制自定义图形. 使用快捷键[Command]+[N]创建一个新的类文件. (在项目文件夹[DemoApp]上点击鼠标右键[New ...
 - CAD绘制自定义实体(com接口)
		
在cad使用过程中,用户可以绘制自定义实体.点击此处下载演示实例. 调用DrawCustomEntity函数,绘制一个自定义实体对象. 下面代码绘制一个自定义实体,C#代码实现如下: private ...
 
随机推荐
- Web安全测试-WebScarab
			
[功能] WebScarab是一个用来分析使用HTTP和HTTPS协议的应用程序框架.其原理很简单,WebScarab可以记录它检测到的会话内容(请求和应答),并允许使用者可以通过多种形式来查看记录. ...
 - Windows修改默认远程端口号3389
			
1.打开注册表:运行-regedit: 2.HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Wds\Repwd\ ...
 - NEERC Southern Subregional 2011
			
NEERC Southern Subregional 2011 A - Bonnie and Clyde solution 双指针搞搞就好. 时间复杂度:\(O(n)\) B - Building F ...
 - Android 常用动画之RotateAnimation
			
前两天接到任务做一个UI,有用到动画,于是抽空看了下Android动画相关知识. Android Animation共有四大类型,分别是 Alpha 透明度动画 Scale 大小伸 ...
 - tortoise svn 忽略bin、obj等文件夹
			
项目空白处右击 =>TortoiseSVN => Properties => New => Other => svn:global-ignores value => ...
 - h5手势密码开发(使用jq)
			
直接上代码: 目录结构: 本次开用到的技术jq,以及引入的jq插件jquery.gesture.password.min.js index.html <!DOCTYPE html> < ...
 - Zookeeper集群搭建以及python操作zk
			
一.Zookeeper原理简介 ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. Zookeeper设计目 ...
 - jenkins 2:用ssh agent插件在pipeline里实现scp和远程执行命令
			
昨晚测试成功了. 现在ssh agent的认证,已不支持明文用户密码,而只能用加密方式实现. 所以我先在jenknis和nginx服务器之后,实现ssh免密码rsa证书登陆. 私钥放jenkins,公 ...
 - 再议mysql 主从配置
			
1.创建用户: grant replication slave,replication client on *.* to repl@'192.168.1.%' IDENTIFIED By 'p4ssw ...
 - Storm常用操作命令及WordCount
			
Storm常用操作命令 1.任务提交命令:storm jar [jar路径] [拓扑包名.拓扑类名] [拓扑名称] storm jar /export/servers/storm/examples/s ...