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