duilib之重写BUTTON按钮
2018-06-17 23:17:49来源:未知 阅读 ()
在使用BUTTON过程中,有时候发现一些属性不够用,或要从新绘制BUTTON按钮,那该如何操作?其实很简单,只需要继承CButtonUI类就行。
创建类CMyButtonUI,继承CButtonUI,然后添加如下函数:
LPCTSTR GetClass() const; LPVOID GetInterface(LPCTSTR pstrName); virtual void SetAttribute( LPCTSTR pstrName, LPCTSTR pstrValue ); int GetMyAttr(); void SetMyAttr(int nData);
其中,重写SetAttribute函数,是为了添加新属性的操作,所有函数代码如下:
CMyButtonUI::CMyButtonUI(void) { } CMyButtonUI::~CMyButtonUI(void) { } LPCTSTR CMyButtonUI::GetClass() const { return _T("IRButtonUI"); } LPVOID CMyButtonUI::GetInterface( LPCTSTR pstrName ) { if( _tcscmp(pstrName, _T("MyButton")) == 0 ) return static_cast<CMyButtonUI*>(this); return CButtonUI::GetInterface(pstrName); } void CMyButtonUI::SetAttribute( LPCTSTR pstrName, LPCTSTR pstrValue ) { //throw std::exception("The method or operation is not implemented."); if( _tcscmp(pstrName, _T("my_attr")) == 0 ) { LPTSTR pstr = NULL; m_nMyAttr = _tcstol(pstrValue, &pstr, 10); } CButtonUI::SetAttribute(pstrName, pstrValue); } int CMyButtonUI::GetMyAttr() { return m_nMyAttr ; } void CMyButtonUI::SetMyAttr(int nData) { m_nMyAttr = nData; }
其中my_attr为自己添加的属性,添加CButtonUI::SetAttribute(pstrName, pstrValue);是为了继承原有的属性。
用法很简单,在XML中,写入如下:
< MyBurtton my_attr="100" bkcolor="#FF874523" height="30" width="30" />
在创建此控件的类函数中的CreateControl( LPCTSTR pstrClass )函数中写下如下代码:
if(0 == _tcsicmp(pstrClass,_T("MyBurtton"))) return newCMyButtonUI();
return NULL;
完成以上步骤,既可以处理自己创建的BUTTON。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:基础并查集poj2236
下一篇:详谈内存管理技术(二)、内存池
- 重写二路归并排序 2019-09-23
- QRowTable表格控件(五)-重写表头排序、支持第三次单击恢复默 2019-09-17
- C++中多态的概念和意义 2019-05-24
- C++重写new和delete,比想像中困难 2019-01-08
- C++ 学习笔记 (八)重载 重写 重定义以及名字覆盖 2018-09-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash