CStatic设置控件背景色,输出字体颜色以及设置背景透明


1.创建一个MFC对话框,改变static背景色,字体颜色

BOOL CteststaticcolorDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 将“关于...”菜单项添加到系统菜单中。

	// IDM_ABOUTBOX 必须在系统命令范围内。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != nullptr)
	{
		BOOL bNameValid;
		CString strAboutMenu;
		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
		ASSERT(bNameValid);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码
	m_font1.CreatePointFont(120, TEXT("Impact"));
	m_font2.CreatePointFont(120, TEXT("Arial"));

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

  

HBRUSH CteststaticcolorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

	// TODO:  在此更改 DC 的任何特性
	if (nCtlColor == CTLCOLOR_STATIC)
	{
		switch (pWnd->GetDlgCtrlID())
		{
		case IDC_STATIC1:
			pDC->SetTextColor(RGB(255, 0, 0));
			pDC->SetBkColor(RGB(255, 255, 255));
		//	pDC->SetBkMode(TRANSPARENT);
			pDC->SelectObject(&m_font1);
			return (HBRUSH)::GetStockObject(BLACK_BRUSH);
			break;
		case IDC_STATIC2:
			pDC->SetTextColor(RGB(255, 255, 0));
			pDC->SetBkColor(RGB(255, 255, 255));
			pDC->SelectObject(&m_font2);
			pDC->SetBkMode(TRANSPARENT);
			return (HBRUSH)::GetStockObject(BLACK_BRUSH);
			break;
		default:
			break;
		}
	}

	// TODO:  如果默认的不是所需画笔,则返回另一个画笔
	return hbr;
}

 

 

运行效果:

另:非动态创建,可以选择CLabel 类,   http://www.codeproject.com/Articles/215/Extended-Use-of-CStatic-Class-CLabel-1-6

CLabel属性说明:(19条消息) CLabel函数说明_stawn的专栏-CSDN博客_clabel函数用法


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM