现在的位置: 首页 > 综合 > 正文

重拾MFC小细节之设置静态文本前、背景色

2014年08月21日 ⁄ 综合 ⁄ 共 1110字 ⁄ 字号 评论关闭

      在大一时,学过MFC,不过那时刚接触编程,C/C++学完不久,跟重要的是没动手编程,后来又做ACM去了。现在大三了,各种实验课设老师都要求用VC可视化,于是借着机会学了点MFC皮毛,在此总结一些常用技巧,简直贻笑大方了!由于很多东西没有上升的理论层面,在此只能介绍下应用,方便学习交流,同时以备后面用到。

       首先谈谈设置静态文本前、背景色。我只用到了其中一种,在此列出。

        要使静态文本透明化,首先添加消息响应函数WM_CTLCOLOR。一般步骤为点击菜单栏“查看”,选择“建立类向导”,在相应对话框类中选择”WM_CTLCOLOR“,系统自动添加HBRUSH
XXXX类::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 函数,然后在里面添加代码即可,如下:

1.此代码是不显示背景色的。

/***********************************************
*功能:改变对话框中静态文本的颜色对话框
*
************************************************/
HBRUSH MyLoginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	if(nCtlColor==CTLCOLOR_STATIC)
	{
		pDC->SetBkMode(TRANSPARENT);
		return HBRUSH(GetStockObject(HOLLOW_BRUSH));
	}
	return hbr;
}

 效果图如下:



2.此代码是显示背景色的。

/***********************************************
*功能:改变对话框中静态文本的颜色对话框
*
************************************************/
HBRUSH MyLoginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	return hbr;
}

效果图如下:

        注意在创建该对话框出即调用该类对话框DoModal()前添加语句SetDialogBkColor(RGB(100,200,100),RGB(0,0,255))设置静态文本的颜色。


       以上代码可能参照先驱博客,在此表示感谢!如有错误,欢迎大牛斧正!

抱歉!评论已关闭.