VC 設定靜態文字框的背景色(轉)
阿新 • • 發佈:2019-01-05
填充靜態文字框的顏色:
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好些,可以隨時修改。