zoukankan      html  css  js  c++  java
  • duilib之重写BUTTON按钮

      在使用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。

  • 相关阅读:
    HTML4如何让一个DIV居中对齐?float输入日志标题
    HTML3层叠样式表
    面向对象 学生考试计分题目
    C#总复习
    HTML2列表表单框架
    HTML1网页三部份内容
    HTML 5 JavaScript初步 编译运行.doc
    初识MYSQL
    数据库设计
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/happinessday/p/6429248.html
Copyright © 2011-2022 走看看