1.建立VC工程,在工程中基于基类CStaitc,派生出自己的CStaitcEx类,加该类到你的工程中,当然你使用类生成向导,文件自然会加入到你的工程中。一般来说生成的文件为StaticEx.cpp和StaticEx.h。
2.编写CStaticEx类
在StaticEx类中加入逻辑字体变量、颜色变量、字符串变量:
LOGFONT m_LogFont;
COLORREF m_TextColor;
CString m_WindowsText;
然后增加函数(public属性)
void SetTextSize(int size = 15)//参数为逻辑字体大小
{
}
void SetTextFont(CString FontName)//参数为逻辑字体名
void SetTextFont(CString FontName)//参数为逻辑字体名
{
}
void SetTextWeight(int weight) // 参数为逻辑字体粗细 (value from 0 to 1000 and step is 100)
{
m_LogFont.lfWeight = weight;
}
{
m_LogFont.lfWeight = weight;
}
void SetTextColor(COLORREF crColor)
{
}
增加CStaticEx类的WM_PAINT消息映射(可以用Classwizard),然后在OnPaint里添加代码
CRect nRect;
另外,构造函数中加入下列初始化代码 (这段代码在实际使用中发现,不用加,加了反而影响字体设置)
CStaticEx::CStaticEx()
{
}
完成上述代码,我们就可以在工程中使用该类实现任意大小、颜色和字体的文本显示了。
3.使用你的CStaticEx类
CStaticEx m_StaticEx;建议添在如下处,因为添加后在类向导的变量映射表中可以显示出来。
// Dialog Data
//{{AFX_DATA(CVoiceBasic)
enum { IDD = IDD_DLG};
CStaticEx m_StaticEx;
//}}AFX_DATA
然后重要的一步就是在数据交换中增加你的类和控件之间的关联(假如你Static控件的名称是IDC_MYSTATIC):
void CDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CVoiceBasic)
DDX_Control(pDX, IDC_MYSTATIC, m_StaticEx);
//}}AFX_DATA_MAP
}
{
}
最后一步了,在你的工程界面初始化的时候调用你刚才CStaticEx中自己定义的函数,你就会发现你的静态文本由你来控制了,当然依次类推,逻辑字体LONGFONT中所能体现的字体风格你都是可以实现的。
m_StaticEx.SetTextColor(RGB(100, 0, 0));
m_StaticEx.SetTextSize(25);
m_StaticEx.SetTextWeight(700);
m_StaticEx.SetTextFont("隶书");
4.总结