天天看點

MFC 設定按鈕背景,點選後切換背景(不是按下時和松開時切換)

周一開始一直在做MFC自繪按鈕,網站上找了很多大神以前的部落格和論壇讨論,但都沒辦法直接解決我的這個問題,是以就隻能自己來解決這個問題。

首先在Dlg.h檔案裡申明下面兩個變量,

CBitmapButton m_cBtn;
    bool bButtonFlag;
           

然後在構造函數裡初始化bButtonFlag,

然後在OnInitDialog()裡加入下面三句話,

m_cBtn.SubclassDlgItem(IDC_BUTTON1, this); //關聯按鈕和對話框 
    m_cBtn.LoadBitmaps(IDB_GRAY1);//給按鈕加載圖檔 
    m_cBtn.SizeToContent();//調整按鈕大小為圖檔大小
           

最後寫按鈕的消息響應函數,

void CMyButtonTestDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    if (bButtonFlag)
    {
        m_cBtn.LoadBitmaps(IDB_GRAY1);
        m_cBtn.SizeToContent();
        m_cBtn.InvalidateRect(NULL,true);//強制重新整理按鈕
        bButtonFlag=;
    } 
    else
    {
        m_cBtn.LoadBitmaps(IDB_RED);
        m_cBtn.SizeToContent();
        m_cBtn.InvalidateRect(NULL,true);
        bButtonFlag=;
    }   
}
           

最後感謝各位大神們留下的各種資訊,以上隻是一種粗淺的實作方法,後面将會學習用DC來進行按鈕的背景設定,有時間的話會把自己的學習總結放上來,希望也能幫助别人。