基于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;
}


你可能感兴趣的:(基于MFC如何修改按钮,窗体背景色)