Duilib自定义控件响应指定命令(转载)
转载:http://blog.csdn.net/panxianzhan/article/details/50772893
转载:http://www.cnblogs.com/duguxue/p/3922686.html
转载:http://blog.csdn.net/fighton/article/details/76110371
duilib在UIManager.h里的EVENTTYPE_UI枚举里定义了很多控件命令,如字符输入、双击、鼠标离开等等,然而这些事件不是在所有控件上都会得到处理,所以当我们有需要响应这些事件而对应的原生控件又没有处理时,那就要自己派生一个控件去处理这个的事情了。方法很简单:继承需要的控件,然后覆盖它的虚函数virtual void DoEvent(TEventUI& event),调用SendNotify函数,把要处理的事件告诉UIManager。这样控件所在的对话框就能收到对应该事件的消息。
下面举个例子,让CHorizontalLayoutUI响应鼠标进入事件,效果如下:
第一步:自定义新控件,继承CHorizontalLayoutUI
class CHorizontalLayoutUIEx : public CHorizontalLayoutUI
{
public:
virtual void DoEvent(TEventUI& event); //覆盖处理UI事件的虚函数
const static CDuiString controlLabel;
};
第二步:实现DoEvent()函数,转发UIEVENT_MOUSEENTER通知
void CHorizontalLayoutUIEx::DoEvent( TEventUI& event )
{
if( event.Type == UIEVENT_MOUSEENTER )
{
//告诉UIManager这个消息需要处理
m_pManager->SendNotify(this, DUI_MSGTYPE_MOUSEENTER);
return;
} //其他事件用父类方法处理
__super::DoEvent(event);
}
第三部:在使用该控件的界面类响应上一步通知的消息
头文件声明:
class MainDlg: public WindowImplBase
{
public:
DUI_DECLARE_MESSAGE_MAP(); //声明<消息,响应函数>映射
void OnMouseEnter(TNotifyUI& msg); //声明鼠标进入响应函数
}
cpp实现:
//定义<消息,响应函数>映射关系
DUI_BEGIN_MESSAGE_MAP(MainDlg,WindowImplBase)
DUI_ON_MSGTYPE(DUI_MSGTYPE_MOUSEENTER,OnMouseEnter)
DUI_END_MESSAGE_MAP() //鼠标进入响应函数实现
void MainDlg::OnMouseEnter( TNotifyUI& msg )
{
CDuiString controlName = msg.pSender->GetName();
if ( controlName == _T("optALayout") || controlName == _T("optBLayout") ||
controlName == _T("optCLayout") || controlName == _T("optDLayout"))
{
CHorizontalLayoutUI* layout = dynamic_cast<CHorizontalLayoutUI*>(msg.pSender);
layout->SetBorderColor(0xFF58A1CC); //设置描边颜色
layout->SetBorderSize(); //设置描边宽度
CControlUI* deleteBtn = layout->FindSubControl(_T("delete"));
deleteBtn->SetVisible(true);
}
}
Duilib自定义控件响应指定命令(转载)的更多相关文章
- MongoDB整理笔记の指定命令和指定文件
MongoDB shell 不仅仅是一个交互式的shell,它也支持执行指定javascript 文件,也支持执行指定的命令片断.有了这个特性,就可以将MongoDB 与linux shell 完美结 ...
- type---显示指定命令的类型
type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令. 命令类型: alias:别名. keyword:关键字,Shell保留字. function:函数,Shell函数. bui ...
- Windows应急响应和系统加固(2)——Windows应急响应的命令使用和安全检查分析
Windows应急响应的命令使用和安全检查分析 1.获取IP地址: ·ipconfig /all,获取Windows主机IP地址信息: ·ipconfig /release,释放网络IP位置: ·ip ...
- dig命令(转载)
dig命令使用大全(linux上域名查询) 可以这样说,翻译本篇文档的过程就是我重新学习DNS的过程,dig命令可以帮助我们学习DNS的原理,配置,以及其查询过程.以前使用dig仅仅是查询一下A记录或 ...
- HTTP请求头与响应头(转载)
欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/400503 ...
- git常用命令(转载自用)
转载自 阮一峰博客: http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 一个码农博客: http://blog.gitor.org ...
- rsync同步常用命令[转载]
转载:http://blog.csdn.net/niushuai666/article/details/16880061 如果你是一位运维工程师,你很可能会面对几十台.几百台甚至上千台服务器,除了批量 ...
- mongo的常用命令--转载
转载liyonghui的博文,出处 http://www.cnblogs.com/liyonghui/p/mongodb.html 博主写的特别好,对于我这个新手帮了大忙了,还将mongo和mysq ...
- linux常用命令--转载
转载自: https://www.cnblogs.com/Qsunshine/p/10402179.html 常用指令 ls 显示文件或目录 -l列出文件详细信息l(list) -a列出当前目录下所有 ...
随机推荐
- WebView自适应屏幕大小
webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); ...
- ios pyudaren
ed2k://|file|%E9%A1%B9%E7%9B%AE%E6%8D%95%E9%B1%BC%E8%BE%BE%E4%BA%BA01.rmvb|67044010|9e013987298d7900 ...
- paper 4:支持向量机系列一: Maximum Margin Classifier —— 支持向量机简介。
支持向量机即 Support Vector Machine,简称 SVM .我最开始听说这头机器的名号的时候,一种神秘感就油然而生,似乎把 Support 这么一个具体的动作和 Vector 这么一个 ...
- sql 把一列的数据按逗号分隔转换成多行
ALTER proc [dbo].[ModifyWkCashAccountNo]asbeginset xact_abort onbegin transactiondeclare @errors int ...
- -XX:+PrintGCDetails 打印GC详细信息
-XX:+PrintGCDetails –打印GC详细信息 n-XX:+PrintGCDetails的输出 –Heap – def new generation total 13824K, ...
- Mysql存储过程总结
1. 关于MySQL的存储过程 存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.好在MySQL 5.0终于开始已经支持存储过 ...
- [tp3.2.1]大D构建模型
使用大(写字母)D方法: 如果,在默认到Home模块下面找不到UserModel模块,那么就会到Common模块下去找. 而如果此时在Common模块下还是找不到UserModel,那就会调用Mode ...
- Imageloarder
首先需要加载jar包,和在配置文件中配置Mainactivity.javapackage com.baidu.day13_2imageloader; import com.nostra13.unive ...
- delphi 与 C++的基本语法区别
[1]“=”符号 (1)“=”作为比较符.但是,当定义const常量时,“=”又表示赋值符号.而“:=”作为赋值符号. (2)“=”只表示赋值符号 [2]结构体 (1)record 作为结构体 (2) ...
- python两个 list 交集,并集,差集的方法+两个tuple比较操作+两个set的交集,并集,差集操作+两个dict的比较操作
转自:http://blog.chinaunix.net/uid-200142-id-3992553.html 有时候,为了需求,需要统计两个 list 之间的交集,并集,差集.查询了一些资料,现在总 ...