基于MFC如何修改按钮,窗体背景色

修改按钮背景色:

 

1.如果想在按钮上添加BMP图片,要设置按钮的属性为bitmap类型,这样按钮上就不能显示文字了,然后使用下面的代码,VC就是陷阱多

 HBITMAP hb=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
 btn->SetBitmap(hb);

2 自己重新写类继承CButton,重载ONCTLColor函数,此方法不可用,但对于按钮之外的很多控件有效,比如CStatic等

3 大多数的做法就是自己重新写类继承CButton,然后,所有的东西都自己画,VC按钮实在纠结,这个方法非常复杂,建议下载源码直接用

参考:http://blog.csdn.net/Wendysuly/archive/2008/12/31/3659604.aspx

 

修改对话框窗体背景色:

 

1.使用APP类的SetDialogBkColor方法,但是这个方法是保护的只能在app类中使用,具体如下

 void SetDialogBkColor( COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0) );

2.使用画刷自己画,但是这样会覆盖窗体上的控件,而且,刷新之后,就没有了,除非放到ondraw重载,如下:

 CDC *pdc=GetDC();
 CRect rc;
 GetClientRect(&rc);
 CBrush br(RGB(255,255,255));
 pdc->FillRect(rc,&br);

3.重载函数ONCTLCOLOR,这种方法不会出现自己覆盖控件的情况,推荐使用。

HBRUSH CUIDesignDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 
 // TODO: Change any attributes of the DC here
 HBRUSH hb=CreateSolidBrush(RGB(255,255,255));
 
 // TODO: Return a different brush if the default is not desired
 return hb;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值