1. 程式人生 > >基於MFC如何修改按鈕,窗體背景色

基於MFC如何修改按鈕,窗體背景色

修改按鈕背景色:

1.如果想在按鈕上新增BMP圖片,要設定按鈕的屬性為bitmap型別,這樣按鈕上就不能顯示文字了,然後使用下面的程式碼,VC就是陷阱多

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

2 自己重新寫類繼承CButton,過載ONCTLColor函式,此方法不可用,但對於按鈕之外的很多控制元件有效,比如CStatic等

3 大多數的做法就是自己重新寫類繼承CButton,然後,所有的東西都自己畫,VC按鈕實在糾結,這個方法非常複雜,建議下載原始碼直接用

修改對話方塊窗體背景色:

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