• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            面對現(xiàn)實,超越自己
            逆水行舟,不進則退
            posts - 269,comments - 32,trackbacks - 0

            【按鈕添加圖標(biāo)】

            方法一:

            1.添加圖標(biāo)資源IDI_ICON1;

            2 使用函數(shù) LoadIcon() 載入圖標(biāo)。因為LoadIcon() 是類 CWinApp 的成員函數(shù),同時函數(shù) LoadIcon() 返回所載入圖標(biāo)的句柄。所以我們采用以下方法來調(diào)用函數(shù) LoadIcon():

            HICON m_hicn1=AfxGetApp()->LoadIcon(IDI_ICON1);

            3 為按鈕設(shè)置圖標(biāo)了,這通過調(diào)用函數(shù) SetIcon() 來實現(xiàn):

            m_button1.SetIcon(m_hicn1);  //  m_button1是按鈕變量

             

            方法二:

            前兩步和上方法一樣;

            3 先由函數(shù) GetDlgItem() 獲得一個指向 CWnd 對象的指針,再通過強制類型轉(zhuǎn)換將該指針轉(zhuǎn)換為一個指向 CButton 類對象的指針。進而通過該指針來調(diào)用函數(shù) SetIcon()。具體實現(xiàn)代碼如下:

            CWnd *pWnd = GetDlgItem(IDC_BUTTON1);
            CButton *Button= (CButton *) pWnd;
            Button-> SetIcon(m_hicn1);

             

            【按鈕添加位圖】

            1 添加位圖資源BMP1;

            2 利用函數(shù) LoadBitmap() 從資源中載入位圖.

            HBITMAP LoadBitmap(
            HINSTANCE hInstance, // handle of application instance
            LPCTSTR lpBitmapName // address of bitmap resource name
            );

            所以,為達到載入位圖的目的,不僅要定義一個位圖句柄 hBitmap,而且還要定義一個應(yīng)用程序?qū)嵗浔?hInstance,

            并調(diào)用函數(shù) AfxGetInstanceHandle() 以獲得當(dāng)前的應(yīng)用程序?qū)嵗浔a如下:

            HBITMAP hBitmap;

            HINSTANCE hInstance = ::AfxGetInstanceHandle();

            只有在聲明并獲得了當(dāng)前的應(yīng)用程序句柄后,才能使用以下語句載入位圖:

            hBitmap = ::LoadBitmap(hInstance,"BMP1");   //BMP1是資源文件名

            3 用SetBitmap()添加位圖;

            m_button1.SetBitmap(hBitmap);

            pWnd = GetDlgItem(IDC_BUTTON1);
            Button= (CButton *) pWnd;
            Button-> SetBitmap(hBitmap);

            ___________________________________________________

             

            位圖按鈕的實現(xiàn)方法:  
            首先,我們創(chuàng)建一個基于對話框的應(yīng)用程序CmyDialog    ;  
            Ι.MFC的CBitmapButton類,這也是最簡單的功能最強的位圖按鈕。我們可以采取如下的步驟:  
            1. 為按鈕指定唯一的按鈕標(biāo)題(此例子為OK按鈕,這里設(shè)置按鈕標(biāo)題為OK)并選中Ownerdraw屬性,然后在項目中加一些位圖資源,并用名字標(biāo)示這些資源而不要用數(shù)字ID,其ID分別為”OKU”、”OKD”、”OKF”、”OKX”(一定要加雙引號),分別對應(yīng)于按鈕的“松開(Up)”、“按下(Down)”、“獲得輸入焦點(focused)”和“禁止(Disable)”狀態(tài)。  
            2. 我們還要在對話框類中加入CBitmapButton    m_aBmpBtn;數(shù)據(jù)成員。  
            3. 在初始化中為這個成員調(diào)用:    
            …  
            m_aBmpBtn.    AutoLoad(IDOK,this);  
            …  
            點擊編譯按鈕,成功后運行程序,我們的位圖按鈕已經(jīng)建立了。  
            改變CANCLE按鈕的標(biāo)題,可以設(shè)置其標(biāo)題為ICON或者BITMAP    :(這里我們演示了bitmap的用法,Icon按鈕讀者可以按照下面的代碼處理) 

            CBitmapButton的使用
            CBitmapButton作為MFC的控件類,并不為很多人所使用,因為現(xiàn)在網(wǎng)上遍布著從CButton派生的各種各樣的按鈕類,其中最為著名的就是CButtonST類了。但是最近在CSDN上看到幾個問題都是使用CBitmapButton類,但是由于使用錯誤、不當(dāng)而造成程序崩潰或者錯誤的。所以總結(jié)一下CBitmapButton類的使用,希望能幫助一些初學(xué)者。
            可以參考MSDN自帶的例子“CTRLTEST”學(xué)習(xí)CBitmapButton的用法。個人總結(jié)如下: 
            1、在資源編輯的時候選中按鈕的Owner  draw即可,不需要選擇Bitmap屬性! 
            2、在程序中定義一個CBitmapButton成員變量。不能使用ClassWizard為按鈕映射一個CButton變量,然后改為CBitmapButton,這么做并不能將按鈕直接映射為CBitmapButton類的對象,反而會出現(xiàn)初始化錯誤。也不能兩種變量同時存在,會造成程序崩潰。 
            3-1、使用CBitmapButton::LoadBitmaps裝載各種狀態(tài)的圖片,使用SubclassDlgItem關(guān)聯(lián)到想要的按鈕,使用CBitmapButton::SizeToContent函數(shù)使按鈕適合圖片大小。。注意Loadbitmaps一定要在關(guān)聯(lián)到按鈕之前進行! 
            3-2、或者是使用CBitmapButton::AutoLoad函數(shù)關(guān)聯(lián)到想要的按鈕。需要注意:
            A、之前不能使用CBitmapButton::LoadBitmaps裝載各種狀態(tài)的圖片,否則會出錯。
            B、AutoLoad函數(shù)完成的關(guān)聯(lián)和改變按鈕大小的CBitmapButton::SizeToContent函數(shù)的功能。
            C、CBitmapButton::AutoLoad使用的位圖是默認資源ID的,即它會自動裝載相關(guān)資源位圖。位圖的資源ID格式為:"按鈕Caption+U"、"按鈕Caption+D"、"按鈕Caption+F"、"按鈕Caption+X",分別代表Up、Down、Focus、Disable狀態(tài)。如資源編輯時,希望關(guān)聯(lián)的按鈕的Caption為Test,那么其默認裝載的位圖資源的ID為:"TestU"/"TestD"/"TestF"/"TestX",注意分號""也是其ID的一部分。


            Ⅱ.使用圖標(biāo)制作按鈕  
            1. 打開ICON按鈕的屬性頁,在Style中選中Icon
            2. 在對話框類的頭文件中定義成員變量(使用ClassWizard加入這個成員變量)  
            CButton    m_IconBtn;//對應(yīng)于圖標(biāo)按鈕  
            3. 創(chuàng)建相應(yīng)的圖標(biāo)或者位圖資源:  
            圖標(biāo)資源:IDI_ICONBUTTON  
            4.在初始化中加入如下代碼:    
            …  
            //對應(yīng)于圖標(biāo)按鈕  
            HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICONBUTTON);  
            m_IconBtn.SetIcon(hIcon);  
            …  
            重新編譯運行我們的程序,奇妙的圖像按鈕呈現(xiàn)在我們的眼前了。 


            Ⅲ.使用位圖制作按鈕  
            1. 打開BITMAP按鈕的屬性頁,在Style中選中Bitmap。  
            2. 對話框類的頭文件中定義成員變量(使用ClassWizard加入這個成員變量)  
            CButton    m_IconBtn;  
            3.創(chuàng)建位圖資源:  
            位圖資源:IDB_BITMAPBUTTON  
            4.在初始化中加入如下代碼:    
            //對應(yīng)于位圖按鈕  
            …  
            HBITMAP    hBmp=::LoadBitmap(AfxGetInstanceHandle(),  
            MAKEINTRESOURCE(IDB_    BITMAPBUTTON));  
            m_BmpBtn.SetBitmap(hBmp); 

            本文轉(zhuǎn)自:http://hi.baidu.com/lechie/item/dcbca9f4ee98a3d742c36ad4 

            posted on 2012-06-18 17:32 王海光 閱讀(1787) 評論(0)  編輯 收藏 引用 所屬分類: MFC
            合区精品久久久中文字幕一区| 999久久久免费精品国产| 国产精品视频久久久| 久久久精品人妻一区二区三区蜜桃| 国产亚洲精久久久久久无码| 青草影院天堂男人久久| 久久久久精品国产亚洲AV无码| 99久久99久久久精品齐齐| 亚洲欧美久久久久9999| 色综合久久中文综合网| 亚洲中文字幕无码久久2020| 欧美亚洲国产精品久久蜜芽| 久久夜色精品国产欧美乱| 久久婷婷五月综合色99啪ak| 久久99精品国产| 久久国产精品一国产精品金尊| 久久无码精品一区二区三区| 国产精品久久久久9999高清| 成人午夜精品无码区久久| 人妻中文久久久久| 久久综合一区二区无码| 国产女人aaa级久久久级| 九九久久自然熟的香蕉图片| 亚洲国产日韩欧美久久| 色综合久久综精品| 97久久久久人妻精品专区| 亚洲综合熟女久久久30p| 一级A毛片免费观看久久精品| 精品国产综合区久久久久久| 91精品国产综合久久婷婷| 国产精品99久久免费观看| 久久久噜噜噜久久熟女AA片 | 久久精品国产99久久久香蕉| 成人综合伊人五月婷久久| 精品午夜久久福利大片| 久久青青草原国产精品免费| 久久精品国产亚洲一区二区| 日本久久久久久中文字幕| 国产精品九九久久免费视频| 9191精品国产免费久久| 久久久亚洲精品蜜桃臀|