title: VC 设置静态文本框的背景色
author: Love02xp
date: 2018-08-13 03:20:47
category: [编程代码]
tags: [编程,VC6,代码]
draft: false
cover:
preview:
填充静态文本框的颜色:
1、在对话框中添加一个静态文本框,设置其id为IDC_STATIC
2、获得静态文本框的句柄 HWND h_static = GetDlgItem(IDC_STATIC)->m_hWnd;
<!--more-->
填充静态文本框的颜色:
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好些,可以随时修改。