• 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。

  • 相关阅读:
    vue中使用vw适配移动端
    在vue项目中使用scss
    前端用vue怎么接收并导出文件
    QT编辑
    前置声明
    morphologyEx() getStructuringElement()
    # 类定义中调用另一个类函数的方式
    指针
    NEW
    DECLARE_DYNAMIC IMPLEMENT_DYNAMIC
  • 原文地址:https://www.cnblogs.com/happinessday/p/6429248.html
Copyright © 2020-2023  润新知