VC 设置静态文本框的背景色(转)

来源:互联网 发布:上海行知小学怎么样 编辑:程序博客网 时间:2024/04/28 17:35

http://hi.baidu.com/bluebirdye/item/7e016f71259a6446ef1e538b

填充静态文本框的颜色:

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好些,可以随时修改。

0 0