正文

VC设置Button的字体颜色2010-04-01 14:30:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/miaowei/50866.html

分享到:

    相信大家在用VC做UI的时候,肯定是要用Button的,并且很多时候想要改变Button中显示的字体,颜色,以及大小等。如果这个都没有遇到过,那么说明你根本就没用过VC,那么下面的文章也就不用接着看了。 尝试方法1: CButton类是继承自CWnd类,而CWnd类有一个SetFont() 函数,所以对话框的程序可以用GetDlgItem(ID)->SetFont(CFont *font)来设置该对话框的字体。 结果,当我改变font的字体时,结果不起作用。   尝试方法2:  查询MSDN以及CSDN,发现原来在VC中上述方法是不能改变字体和颜色等属性的。而CSDN中提到的一种改变对话框属性中字体的方法,这种方法只能改变显示在对话框控件的大小和字体大小。而不能改变将要显示在对话框控件中的字体大小或者颜色。 所以,这种方法只能从CButton类中继承下来,生成自己的Button类。然后重写设置字体和颜色等函数。 //  .h 文件 class CBitButtonNL : public CButton{ virtual CBitButtonNL& SetFont(LOGFONT lf, BOOL bRepaint = TRUE); virtual CBitButtonNL& SetFontSize(int nSize, BOOL bRepaint = TRUE); virtual CBitButtonNL& SetFontItalic(BOOL bSet, BOOL bRepaint = TRUE); } // .c 文件 CBitButtonNL& CBitButtonNL::SetFontItalic(BOOL bSet, BOOL bRepaint){ m_lf.lfItalic = bSet; ReconstructFont();  if (bRepaint) Invalidate();  return *this; } CBitButtonNL& CBitButtonNL::SetFontSize(int nSize, BOOL bRepaint){ CFont cf; LOGFONT lf;  cf.CreatePointFont(nSize * 10, m_lf.lfFaceName); cf.GetLogFont(&lf);  m_lf.lfHeight = lf.lfHeight; m_lf.lfWidth  = lf.lfWidth; // nSize*=-1;// m_lf.lfHeight = nSize; ReconstructFont();  if (bRepaint) Invalidate();  return *this;} CBitButtonNL& CBitButtonNL::SetFont(LOGFONT lf, BOOL bRepaint){ CopyMemory(&m_lf, &lf, sizeof(m_lf));  ReconstructFont();  if (bRepaint) Invalidate();  return *this;} 一种更加简单方法:                                                                                                        直接向这个控件发送消息。    ::SendMessage( hWnd, WM_SETFONT,  \     (WPARAM)m_fonts ,0 ); 其中,hWnd 类型是HWND,m_fonts为CFont类型。

阅读(14570) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册