关闭

MFC开发IM-第五篇、MFC中改变static字体颜色、大小、背景颜色(自定义类),及手动关联变量的方法

40人阅读 评论(0) 收藏 举报
分类:

在MFC的Dialog工程中生成一个CStatic的自定义类,类名例如为:CColorStatic

定义必要的变量:

protected:
	COLORREF m_crText;			// 字体颜色
	COLORREF m_crBackColor;		        // 背景颜色
	HBRUSH	 m_hBrush;			// 画刷
	LOGFONT	 m_lf;				// 字体大小
	CFont	 m_font;			// 字体
	bool	m_bTran;			// 是否透明

重载CColorStatic类中的=WM_CTLCOLOR事件,注意有=,不是WM_CTLCOLOR事件

HBRUSH CColorStatic::CtlColor(CDC* pDC, UINT nCtlColor)
{
	// TODO:  在此更改 DC 的任何属性

	// TODO:  如果不应调用父级的处理程序,则返回非 null 画笔
	if (CTLCOLOR_STATIC == nCtlColor)
	{
		pDC->SelectObject(&m_font);
		pDC->SetTextColor(m_crText);
		pDC->SetBkColor(m_crBackColor);
		if (m_bTran == true)
			pDC->SetBkMode(TRANSPARENT);
	}
	return m_hBrush;

另外添加一些接口类函数

void CColorStatic::SetTextColor( COLORREF crText )
{
	m_crText = crText;
	RedrawWindow();
}

void CColorStatic::SetFontSize(int nSize)
{
	nSize *= -1;
	m_lf.lfHeight = nSize;
	m_font.DeleteObject();
	m_font.CreateFontIndirect(&m_lf);
	RedrawWindow();
}


void CColorStatic::SetBackColor(COLORREF crBackColor)
{
	m_crBackColor = crBackColor;
	RedrawWindow();
}

void CColorStatic::SetTransparent(bool bTran)
{
	m_bTran = bTran;
	RedrawWindow();
}

至此CColorStatic类就建好了。

记得添加CColorStatic的头文件。

菜单栏中添加一个菜单项,并为其关联成员变量m_static1,然后添加事件处理程序。编辑代码如下:

void CLXTDlg::OnStatic32790()

{

 // TODO: 在此添加命令处理程序代码  

m_static1.SetTransparent(FALSE); 

 m_static1.SetTextColor(RGB(0,255,255)); 

 m_static1.SetBackColor(RGB(0,255,0)); 

 m_static1.SetFontSize(15);  

}

 

在给静态文本控件关联变量时,我在类向导中找不到其ID,然后把其ID从IDC_STATIC改为IDC_STATIC1,就出现在了类向导里。

其实也可不用类向导,自己手动关联。

 

手动为控件关联成员变量的方法:

例如:为ID = IDC_STATIC1的静态文本控件关联成员变量

1. 在.h中声明:

     CColorStatic m_static1; // 声明变量,注意这里的 CColorStatic是上面自定义的类哦。

2. 在.cpp中进行关联:

void CLXTDlg::DoDataExchange(CDataExchange* pDX)

{

  CDialog::DoDataExchange(pDX);

  DDX_Control(pDX, IDC_STATIC1, m_static1);// 关联控件和变量

}

 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

VC MFC中修改STATIC的文本颜色和文本字体等

1. 打开资源视图。 2. 双击打开STATIC所在的对话框。 3. 修改STATIC的ID属性,这里假设为IDC_TEXT1。 4.为对话框添加类,假设为CMyDialog. 5. 选择对话框,在属性面板上点击消息,并选择WM_CTLCOLOR。 6.在对话框对应类的...
  • qq61394323
  • qq61394323
  • 2014-10-09 21:28
  • 3982

mfc中设置statictext的字体和颜色

字体在控制事件中实现,颜色在OnCtlColor中实现。 界面上两个button,一个statictext。 设置statictext的value变量为m_csText; 其余变量为: BOOL m_bBlue; BOOL m_bRed; 在构造函数中初始化: CTextC...
  • langxm2006
  • langxm2006
  • 2017-08-05 23:48
  • 350

Mfc子窗口修改Static Text控件的字体、大小、颜色

开门见山:创建子窗口的方法请参考我上一篇博客:http://blog.csdn.net/u014411348/article/details/53911682 主窗口修改Static Text控件网上已有很多大神给出了方法,小的就不再重复。 一、单纯改变字体大小、字体 1.请自行在窗口中添加...
  • u014411348
  • u014411348
  • 2016-12-31 09:44
  • 2751

MFC静态文本控件如何设置字体--大小和颜色及背景色

CFont font;  font.CreateFont(10,10,0,0,FW_BLACK,FALSE,FALSE,   FALSE,GB2312_CHARSET,OUT_DEFAULT_PRECIS,   CLIP_DEFAULT_PRE...
  • u014023993
  • u014023993
  • 2014-04-14 09:58
  • 1155

MFC设置对话框、字体对话框、颜色对话框

2011-04-28 10:04:33|  分类: C++|举报|(1)绘图 新建一个工程Graphic。添加一个菜单“绘图”,在这个菜单中添加四个菜单项,分别为点(IDM_DOT)、直线(IDM_LINE)、矩形(IDM_RECTANGLE)和椭圆(...
  • zwl492454828
  • zwl492454828
  • 2014-09-01 19:13
  • 1199

MFC-字体和颜色对话框

用富文本框来做例子:要使用富文本框就要初始化富文本框. 在InitInstance()函数中写如下代码 //初始化富文本框 AfxInitRichEdit2();然后添加两个菜单,在两个菜单中添加事件处理程序,如图所示: 接下来就是写对应的消息处理了.字体菜单事件处理函数. 代...
  • qq_18297675
  • qq_18297675
  • 2016-03-27 12:58
  • 1445

MFC 控件字体样式和颜色设置

因为默认的字体大小比较小,且有时为了美观,MFC控件的字体样式更改有时显得比较重要。这一修改并不是很直观,需要经由代码来完成,代码如下: CFont *m_pFont;//创建新的字体 m_pFont = new CFont; m_pFont->CreateFont(32, //...
  • oHanTanYanYing
  • oHanTanYanYing
  • 2015-06-17 18:49
  • 5183

VC/MFC如何设置对话框、static背景颜色

方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。 (这个函数已经废弃) ? 1 void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF...
  • lgstudyvc
  • lgstudyvc
  • 2016-05-05 16:45
  • 3580

MFC--控件改变编辑框的字体和颜色

转载自:http://blog.csdn.net/cddchina/article/details/8149166 调用字体对话框,来改变编辑框的字体和颜色
  • lht501692913
  • lht501692913
  • 2016-03-08 10:51
  • 2200

关于MFC中修改控件字体和背景颜色的方法

用MFC设计界面程序比其他的主流界面开发
  • Mirale
  • Mirale
  • 2014-07-09 22:36
  • 3626
    个人资料
    • 访问:2652次
    • 积分:279
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:38篇
    • 译文:0篇
    • 评论:0条
    文章分类