<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    CxSkinButton按鈕皮膚類

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    codeproject 發現一個很強大的按鈕皮膚類,之前的版本有內存泄露,但是作者已經修復了,原文網址是:http://www.codeproject.com/KB/buttons/cxskinbutton.aspx 。它支持六種位圖,分別是正常、按下、滑過、失效、焦點和遮掩位圖。根據原文內容,一般用法如下:
    1.加入xSkinButton .cpp 和xSkinButton .h 到工程;
    2.在按鈕控件需要定義的地方加入xSkinButton .h頭文件;
    3.為按鈕添加一個CxSkinButton 類型的變量;
    4,在資源視圖添加所需要的位圖:

    • NORMAL bitmap: 默認按鈕圖片.
    • DOWN bitmap: 按下按鈕圖片.
    • OVER bitmap:(可選) 滑過按鈕的圖片. If NULL, NORMAL bitmap will be used.
    • DISABLED bitmap: (可選) 不可用時的圖片. If NULL, NORMAL bitmap will be used.
    • FOCUS bitmap: (可選) 焦點時的圖片. If NULL, NORMAL bitmap will be used.
    • MASK bitmap: (可選) 剪輯區域. If you don't use the MASK, the button will be a rectangular owner-draw control. The default transparent color is RGB(255,255,255).

    5.在對話框的初始化函數里面添加以下代碼:

    BOOL CxSkinButtonDemoDlg::OnInitDialog() 

    //    ...  
        m_btn1.SetTextColor(RGB(255 ,0 ,0 )); 
        m_btn1.SetToolTipText("Button1" ); 
        m_btn1.SetSkin(IDB_B1NORM,IDB_B1DOWN,IDB_B1OVER,IDB_B1GRAY, 
                           0 ,IDB_B1MASK,0 ,0 ,0 ); 
    //    ... 

    其他具體的就請看原文了。在具體使用中,我們要使得按鈕與位圖的大小一致,自己不方便調整,如果這個CxSkinButton有CBitmapButton::SizeToContent()的功能就好了,于是我自己添加了這個函數。在xSkinButton.h頭文件里面加入以下:

    public 
        void  SizeToContent();//增加自動調整 

    然后在xSkinButton.cpp里面實現如下:

    void  CxSkinButton::SizeToContent() 

        ASSERT(m_bNormal.m_hObject != NULL); 
        CSize bitmapSize; 
        BITMAP bmInfo; 
        VERIFY(m_bNormal.GetObject(sizeof (bmInfo), &bmInfo) == sizeof (bmInfo)); 
        VERIFY(SetWindowPos(NULL, -1 , -1 , bmInfo.bmWidth, bmInfo.bmHeight, 
            SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE)); 
    } 

    接著,我們只要在在SetSkin()之后調用這個函數就可以了,如下:

    BOOL CxSkinButtonDemoDlg::OnInitDialog() 

    //    ...  
        m_btn1.SetTextColor(RGB(255 ,0 ,0 )); 
        m_btn1.SetToolTipText("Button1" ); 
        m_btn1.SetSkin(IDB_B1NORM,IDB_B1DOWN,IDB_B1OVER,IDB_B1GRAY, 
                           0 ,IDB_B1MASK,0 ,0 ,0 ); 
        m_btn1.SizeToContent();//自己添加的,非原作者的,在此聲明  
    //    ... 

    效果如下:

    RFID設備管理軟件

    對于圖片給的示例源代碼將在下一篇給出。地址為:http://blog.csdn.net/akof1314/archive/2010/07/05/5714050.aspx

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全