DuiLib笔记之自定义标题栏以及响应按钮点击事件
在博文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笔记之自定义标题栏以及响应按钮点击事件的更多相关文章
- 查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956455 在进行Android程序的逆向分析的时候,经常需要通过Androi ...
- Objective-C:模拟按钮点击事件理解代理模式
OC中的协议(Protocol)和和.NET中的接口(Interface)类似,简单来讲,就是一系列方法的列表,其中声明的方法可以被任何类实现.不同的是,在.NET中,如果某个类实现了一个接口,就必须 ...
- 【Android】按钮点击事件的常用写法
学习总结: 最近学习了Android点击事件的常用写法.点击事件会触发监听对象身上的回调,常用写法有以下四种: 方法一:使用匿名内部类. public class MainActivity exten ...
- js触发按钮点击事件
js触发按钮点击事件 博客分类: javascript 模拟JS触发按钮点击功能 <html> <head> <title>usually function&l ...
- 按钮点击事件,打开新的Activity
按钮点击事件,打开新Activity, 打开网页 findViewById(R.id.btnStartBAty).setOnClickListener(new View.OnClickListener ...
- Javascript之三种按钮点击事件
学习Javascript必须要先掌握基本的事件方法和语法,这些都是我们学过的也是最基本的.以前忘了总结,所以现在回顾,综合地总结一下,温故而知新. Javascript有三种按钮点击事件,分别为ale ...
- 【转】Android开发20——单个监听器监听多个按钮点击事件
原文网址:http://woshixy.blog.51cto.com/5637578/1093936 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律 ...
- ButtonAddListener监听按钮点击事件
ButtonAddListener监听按钮点击事件 using UnityEngine; using System.Collections; using UnityEngine.UI; using U ...
- js和jquery触发按钮点击事件
js触发按钮点击事件 function load(){ //下面两种方法效果是一样的 document.getElementById("target").onclick(); do ...
随机推荐
- svn的简单知识
svn的简单知识 一.简介: SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统, 它的设计目标就是取代CVS.互联网上很多版本控制服务已从 ...
- mysql 新增用户并授权
grant all privileges on *.* to 'root'@‘%’ identified by '123456'; *.* 表示所有资源. 刷新权限 flush privileges;
- 关于Redux到底是个什么鬼
原文链接:https://zhuanlan.zhihu.com/p/20641377 我们故事的主人公,小明. 小明大学刚毕业,摆脱了宿舍的集体生活,自己在外面租了个一室一厅的小公寓住. 这是客厅的平 ...
- How to Mount a USB Drive in Ubuntu
Read more : http://www.ehow.com/how_6762235_mount-usb-drive-ubuntu.html Most USB drives will automou ...
- kettle变量使用
公司项目使用kettle重构之前的取数,先研究下日常的使用. 一.建立数据转换,表数据到表输出,其中表输入数据来自其他业务数据库,通过输入sql执行得到数据. 表输入: 表输出: 设置并行4个线程. ...
- SSM整合案例
使用IDEA整合SSM spring核心配置文件:beans_core.xml/applicationContext.xml <?xml version="1.0" enco ...
- XCode 4.3 Unable to load persistent store UserDictionary.sqlite 以及 ios simulator failed to install the application
I have been working on an iOS app for some time, all of a sudden I am getting the following crash ev ...
- Go语言_RPC_Go语言的RPC
一 标准库的RPC RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议.简单的说就是要像调用本地函数 ...
- VC++中MCI播放音频文件 【转】
MCI播放mp3音频文件例程 源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Wi ...
- <LeetCode OJ> 204. Count Primes
Description: Count the number of prime numbers less than a non-negative number, n. 分析: 思路首先:一个数不是合数就 ...