在博文DuiLib笔记,基于WindowImplBase的基础模板的基础上,修改皮肤文件如下

<?xml version="1.0" encoding="utf-8"?>
<Window size="350,250" caption="0,0,0,35" sizebox="6,6,6,6" mininfo="300,200">
<Font id="0" name="宋体" size="17" bold="true" underline="true" italic="true" />
<!--窗口背景色#FFFFFFFF-->
<VerticalLayout bkcolor="#FFFFFFFF">
<!--标题栏高度35,背景色#FF12B7F5-->
<HorizontalLayout height="35" bkcolor="#FF12B7F5">
<Control bkimage="file='Icons/wolf_white_55x30.png'" bkcolor="0xFF000000" float="true" pos="15,3,70,33" />
<!--标题DuiLib演示-->
<Label text="DuiLib演示" textcolor="0xFFFFFFFF" font="0" float="true" pos="75,0,200,35" />
<!--空白区-->
<Control />
<HorizontalLayout width="90">
<!--最小化、最大化等按钮-->
<Button name="minbtn" float="true" pos="5,8,25,28" tooltip="最小化"
normalimage="file='Icons/minimize/minimize_white_20x20.png'" hotimage="file='Icons/minimize/minimize_red_20x20.png'" pushedimage="file='Icons/minimize/minimize_black_20x20.png'" />
<Button name="maxbtn" float="true" pos="35,8,55,28" tooltip="最大化"
normalimage="file='Icons/maximize/maximize_white_20x20.png'" hotimage="file='Icons/maximize/maximize_red_20x20.png'" pushedimage="file='Icons/maximize/maximize_black_20x20.png'" />
<Button name="restorebtn" float="true" pos="35,8,55,28" tooltip="还原" visible="false"
normalimage="file='Icons/restore_down/restore_down_white_20x20.png'" hotimage="file='Icons/restore_down/restore_down_red_20x20.png'" pushedimage="file='Icons/restore_down/restore_down_black_20x20.png'" />
<Button name="closebtn" float="true" pos="65,8,85,28" tooltip="关闭"
normalimage="file='Icons/close/close_white_20x20.png'" hotimage="file='Icons/close/close_red_20x20.png'" pushedimage="file='Icons/close/close_black_20x20.png'" />
</HorizontalLayout>
</HorizontalLayout>
<!--居中的按钮-->
<Button name="button" text="自由不是免费的。" pos="-65,-15,65,15" float="0.5,0.5,0.5,0.5" tooltip="自由不是免费的" />
</VerticalLayout>
</Window>

因为在void WindowImplBase::OnClick(TNotifyUI &msg)里,已对窗口的最小化、最大化等操作做了处理

所以我们只需要把最小化、最大化等按钮的name设置为minbtn、maxbtn、restorebtn、closebtn就行了

当然,如果不喜欢这样的命名风格,可以在WindowImplBase::OnClick里进行修改

启动工程,程序界面如下图

要响应按钮的点击,只需重写WindowImplBase::OnClick

如下

virtual void OnClick(TNotifyUI &msg)
{
const CDuiString &controlName = msg.pSender->GetName();
if (controlName == TEXT("button"))
{
MessageBox(GetHWND(), TEXT("To win, to survive."), TEXT("为了胜利,为了生存。"), MB_ICONINFORMATION);
}
else
{
WindowImplBase::OnClick(msg);
}
}

完整Demo链接:https://pan.baidu.com/s/1M6aYOeuwo96_ME1E6604VA,提取码:4i9a

DuiLib笔记之自定义标题栏以及响应按钮点击事件的更多相关文章

  1. 查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现

    本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956455 在进行Android程序的逆向分析的时候,经常需要通过Androi ...

  2. Objective-C:模拟按钮点击事件理解代理模式

    OC中的协议(Protocol)和和.NET中的接口(Interface)类似,简单来讲,就是一系列方法的列表,其中声明的方法可以被任何类实现.不同的是,在.NET中,如果某个类实现了一个接口,就必须 ...

  3. 【Android】按钮点击事件的常用写法

    学习总结: 最近学习了Android点击事件的常用写法.点击事件会触发监听对象身上的回调,常用写法有以下四种: 方法一:使用匿名内部类. public class MainActivity exten ...

  4. js触发按钮点击事件

    js触发按钮点击事件 博客分类: javascript   模拟JS触发按钮点击功能 <html> <head> <title>usually function&l ...

  5. 按钮点击事件,打开新的Activity

    按钮点击事件,打开新Activity, 打开网页 findViewById(R.id.btnStartBAty).setOnClickListener(new View.OnClickListener ...

  6. Javascript之三种按钮点击事件

    学习Javascript必须要先掌握基本的事件方法和语法,这些都是我们学过的也是最基本的.以前忘了总结,所以现在回顾,综合地总结一下,温故而知新. Javascript有三种按钮点击事件,分别为ale ...

  7. 【转】Android开发20——单个监听器监听多个按钮点击事件

    原文网址:http://woshixy.blog.51cto.com/5637578/1093936 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律 ...

  8. ButtonAddListener监听按钮点击事件

    ButtonAddListener监听按钮点击事件 using UnityEngine; using System.Collections; using UnityEngine.UI; using U ...

  9. js和jquery触发按钮点击事件

    js触发按钮点击事件 function load(){ //下面两种方法效果是一样的 document.getElementById("target").onclick(); do ...

随机推荐

  1. 使用gcc的-finstrument-functions选项进行函数跟踪【转】

    转自:http://blog.csdn.net/jasonchen_gbd/article/details/44044899 版权声明:本文为博主原创文章,转载请附上原博链接. GCC Functio ...

  2. pycharm提示your evalluation license has expired解决方法

    安装pycharm,一段时间后提示your evalluation license has expired:打开pycharm--点击help--register--选中license server, ...

  3. invoke反射

    mark一下使用用法,原理以后在搞: 无参数: import java.text.SimpleDateFormat; import java.util.Date; import java.lang.r ...

  4. html5(历史管理)

    <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...

  5. AC日记——Dishonest Sellers Codeforces 779c

    C. Dishonest Sellers time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  6. ubuntu网络、包管理、工作内容小结

    中国地图 1.配置IP cat /etc/network/interfaces auto lo iface lo inet loopback # The loopback network interf ...

  7. es6系列-变量的解构赋值

    git地址: https://github.com/rainnaZR/es6-study/tree/master/src/destructuring 变量的解构赋值 变量的解构赋值: 数组, 对象, ...

  8. FastDFS 使用经验分享

    原文:http://www.ttlsa.com/fastdfs/fastdfs-experience-sharing/ 应用背景 文件被上传到FastDFS后Storage服务端将返回的文件索引(FI ...

  9. OpenGL超级宝典笔记——深度纹理和阴影 【转】

    目录[-] 光源视角 新型的纹理 深度纹理的大小 首先绘制阴影 然后是光照 投影阴影贴图 阴影比较 之前我们介绍过简单的把物体压平到投影平面来制造阴影.但这种阴影方式有其局限性(如投影平面须是平面). ...

  10. python得到最长递增子串长度及起始位置【转】

    def incSeq(seq): start = 0 for i in xrange(1, len(seq)): if seq[i] < seq[i-1]: yield start, i - s ...