mfc對話框背景色
A. MFC 窗口背景顏色的困惑
SetBkColor並不是修改對話框背景色的。
你可以在WM_CTLCOLOR消息函數中:
static HBRUSH br = CreateSolidBrush(RGB(0,0,255));
return br;
B. 在MFC中怎樣修改對話框背景和靜態文本顏色的設置
在生成的類中添加重載的虛函數OnCtlColor(CDC
*pDC,CWnd *pWnd,UINT nCtlColor)。
可以在該函數中設置pDC->SetBkMode(TRANSPARENT);將文本的背景設置為透明。
可以在該函數中設置pDC->SetTextColor(RGB(255,0,0));將文本的顏色設置為紅色。
也可以指定某一靜態文本的字體顏色,可以加如下判斷:
switch(pWnd->GetDlgCtrlID())
{
case IDC_INFO:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
}
這個判斷,可以僅僅將ID號為IDC_INFO的靜態文本的字體顏色設置為紅色。
C. VC中對話框背景顏色設置
1.怎麼設置非用戶區的顏色?
在需要設置的對話框類中添加WM_CTLCOLOR消息響應,然後在這個函數中return那裡注釋掉默認的,return你的話刷就可以了!
2.如果設置用戶區為不同顏色,比如有兩個picture控制項,一個的背景設置成紅色,另一個設置成綠色。
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
這個函數中有個CWnd類型的指針,用這個指針調用GetDlgCtrlID()函數和當前控制項ID做比較!
例子如下:
HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
if(pWnd->GetDlgCtrlID()==IDC_STATIC)
{
return m_mybrush;
}
return m_brush;
// return hbr;
}
3.如果我只在對話框中load一個bitmap,但是這個bitmap沒有占完整個用戶區,怎麼顯示這個bitmap,而非用戶區和其他的用戶區則隱藏?
有兩種方法!
第一就是定義一個Rect在裡面填充
或者還是在
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
函數中返回當前需要的點陣圖!
可以現定義一個點陣圖的對象和話刷的對象
CBitmap m_bitmap;
CBrush m_Cbrush;
先m_bitmap.LoadBitmap(IDB_BITMAP1);
然後用m_Cbrush創建一個點陣圖話刷
m_Cbrush.CreatePatternBrush(&m_bitmap);//需要的是一個點陣圖指針!
然後在對話框上面畫一個picture控制項
用前面說的GetDlgCtrlID()函數給這個picture控制項填充顏色就可以了!
D. MFC下,怎麼改變對話框 局部 背景顏色
背景圖片無關模態非模態。 對話框背景,一般推薦在OnEreaseBkgnd裡面做,做好CBrush brush(&bitmap);刷子之後,直接給背景畫刷就可以了。
E. MFC如何設置對話框靜態文字背景以及文字顏色
很簡單。。對大家有用的贊個啊。。。。
1,新建基於對話框的mfc程序。
添加一個static標簽控制項,ID為:IDC_STATIC_DEMO
在CXXXDlg類中添加一個類型為CBrush的成員變數m_brs;
m_brs.CreateSolidBrush(RGB(0,0,55));//需要程序使用的背景畫刷
並且在CXXXDlg的構造函數中添加一行代碼
在CXXXDlg中添加WM_CTLCOLOR消息處理函數
然後在OnCtlColor中寫下面的代碼:
if(IDC_STATIC_DEMO==pWnd->GetDlgCtrlID())//判斷正在繪制的是不是我們需要改變的控制項
{
pDC->SetBkMode(TRANSPARENT);//設置透明輸出
pDC->SetTextColor(RGB(255,0,0));//設置文字顏色
return m_brs;//用自定義的畫刷去繪制背景
}
這樣。。。就OK了。。
親,給點分吧,這年頭,不容易啊。。。別忘了哦。。。
PS:如果要該按鈕的,需要添加DrawItem這個虛函數去搞定。。。。
F. mfc窗口的背景色填充
繪圖的時候將偏移量考慮進去啊
比如在MM_TEXT模式下
CRect
mrect;
GetClientRect(&mrect);
pDC->SetViewportOrg(50,50);
pDC->FillSolidRect(mrect.left-50,mrect.top-50,mrect.Width(),mrect.Height(),RGB(255,0,0));
G. MFC GetSysColor獲取對話框背景顏色
轉換後復是C0C0C0,一制個灰色。
代碼中,使用:
COLORREFdd=GetSysColor(COLOR_3DFACE);
BYTEr=GetRValue(dd);
BYTEg=GetGValue(dd);
BYTEb=GetBValue(dd);
H. MFC改變模態對話框的背景顏色,添加背景圖片
你定向求助了兩次,那邊的另一位朋友的回答基本正確。
背景圖片無關模態非模態。
對話框背景,一般推薦在OnEreaseBkgnd裡面做,做好CBrush brush(&bitmap);刷子之後,直接給背景畫刷就可以了。
如果在OnPaint裡面做,也是可以的,一般推薦用內存DC做雙緩存,將bitmap點陣圖SelectObject放到一個memDC裡面,通過BitBlt或StretchBlt貼圖,方便控制效果。當然你的代碼也行,只是效率稍微有些低,注意之後將brush釋放出來,否則會有內存資源泄漏。
I. MFC如何取得默認對話框的背景顏色
對話框是從CWnd派生,CWnd的方法CWnd::GetDC(),可以返回CDC(設備環境)的指針,然後調用CDC::GetBkColor()可以獲取背景的RGB顏色