MFC 设置按钮背景,点击后切换背景(不是按下时和松开时切换)

周一开始一直在做MFC自绘按钮,网站上找了很多大神以前的博客和论坛讨论,但都没办法直接解决我的这个问题,所以就只能自己来解决这个问题。

首先在Dlg.h文件里申明下面两个变量,

    CBitmapButton m_cBtn;
    bool bButtonFlag;

然后在构造函数里初始化bButtonFlag,

    bButtonFlag=0;

然后在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=0;
    } 
    else
    {
        m_cBtn.LoadBitmaps(IDB_RED);
        m_cBtn.SizeToContent();
        m_cBtn.InvalidateRect(NULL,true);
        bButtonFlag=1;
    }   
}

最后感谢各位大神们留下的各种信息,以上只是一种粗浅的实现方法,后面将会学习用DC来进行按钮的背景设置,有时间的话会把自己的学习总结放上来,希望也能帮助别人。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章