周一开始一直在做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来进行按钮的背景设置,有时间的话会把自己的学习总结放上来,希望也能帮助别人。