小A大B聊MFC:神奇的静态文本控件--初识DC

大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:好,不错,明天再教你如何改变字体和大小。

 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值