大B:小A,你在编码时用过静态文本控件吗?
小A:静态文本控件,你是说这个Static Text吧,当然用过了,设计界面那能少了它。
大B:那你都用它做什么呢?
小A:这个还能干什么呀,就是显示文本呗。
大B:其实它能扩展出很强大的功能,不知你有没有发现。
小A:很强大的功能,我怎么觉得所有控件中就属这个控件简单了,能有什么强大的功能呀!
大B:就是因为他简单,所以才有很大的扩展空间呀,比如你想改变一下文字的大小、字体、颜色怎么改呀?
小A:这个好像没法,虽然有一个SetFont函数,但不知为什么不起作用。
大B:那我们就从这里着手先做让它可以改变文字大小、字体和颜色吧。因为静态文本控件是从CStatic类生成的对象,那么我们可以派生一个新类,在新类中增加对这些功能的处理就行了。
小A:等我一下,我先打开编译器,咱们一边说一边做。
……
小A打开编译器……
……
小A:好了,我打开了,并且新建了一个基于MFC的对话框项目,下一步应该怎么做呢?
大B:动作挺快呀,那接下来我们先在类向导里添加一个类,名字就叫CStaticTest吧,父类就是CStatic,然后重写一下WM_PAINT消息的处理函数。
小A:就是在这里实现这些功能吧!(边说边添加新类)
菜单-项目-类向导,打开MFC类向导对话框……
点添加类,输入类名CStaticTest,选择基类为CStatic……完成。
在类向导中选择刚新加的类CStaticTest,选择[消息]找到WM_PAINT,点[添加处理程序]……确定。
大B:聪明!你看OnPaint函数提供了CPaintDC类型的dc,我们就用这个dc去改变字体、颜色等。
小A:哦,这个是干什么的?
大B:CPaintDC是MFC提供了一个专门用于界面绘制图形的类,它从CDC类继承而来,还有许多其它相似的类,我们以后慢慢详细的说。
小A:那这个dc怎么用呢?
大B:我们可以看一下MSDN,它的父类CDC提供了很多函数,比如要想改变字体的颜色只需要调用SetTextColor函数就可以了。
小A:那我想把字体变成红色是不是这么写就行了:
dc.SetTextColor(RGB(255,0,0));
大B:这只是改变了字体颜色,因为我们把OnPaint函数重写了,显示文字的工作我们也要完成。
小A:这应该用那个函数呢?
大B:我们先用这个简单的函数TextOut吧,它有三个输入,文字开始位置的坐标和文字内容。
小A:那我试着写一下:
dc.TextOut(0,0,_T("123456"));
小A:我想显示个“123456”是不是这么写就行了。
大B:对,就这么简单,然后用这个例生成一个对象就行了。
小A:好,我试一下:
先在对话框上放一个静态文本控件……
再给这个控件添加一个变量,类别是Control,类型就是刚添加的类CStaticTest,变量名就叫m_static1吧……
F7编译……通过,哈哈
F5运行,果然显示了个红色的“123456”。
大B:好,不错,明天再教你如何改变字体和大小。