1. 程式人生 > >VC 設定靜態文字框的背景色(轉)

VC 設定靜態文字框的背景色(轉)

填充靜態文字框的顏色:

1、在對話方塊中新增一個靜態文字框,設定其id為IDC_STATIC

2、獲得靜態文字框的控制代碼 HWND h_static = GetDlgItem(IDC_STATIC)->m_hWnd;

3、獲得靜態文字框的DC控制代碼 HDC hdc = ::GetDC(h_static);

4、獲得靜態文字框的DC指標 CDC *pdc = CDC::FromHandle(hdc);

5、獲得靜態文字框的大小 CRect rect ; GetClientRect(h_static,rect);

6、填充靜態文字框顏色 pdc->SetSolideRect(rect,RGB(255,0,0));

有人經常誤解pdc->SetBkColor()來設定靜態文字框的背景顏色,但是SetBkColor()的作用是設定TextOut函式輸出的文字的背景顏色。

訂正:6中的SetSolideRect函式可能是由於手誤,函式名應該是FillSolidRect,當時僅僅是評印象總結的,非常抱歉對大家造成的不便。

非常感謝mozhaodi給出的正確方法,由於現在已經很久不用MFC了,所以當時也沒有引起我足夠的重視修改這篇文章。

非常感謝飄逸KS給我的批評,讓我知道即時更正錯誤的重要性。

後附MSDN上FillSolidRect的函式原型:

void FillSolidRect( LPCRECT lpRect, COLORREF clr );void FillSolidRect( int x, int y, int cx, int cy, COLORREF clr );

這個方法不錯,儘管程式碼多一些,但會比OnCtlColor好些,可以隨時修改。