如何在ActiveX控件中使用字体
2008-02-26 20:27:03 来源:WEB开发网第三部分 使用多种字体
前面分别详细说明了如何在控件中使用库存属性和自定义属性。但有时我们需要在一个控件中使用多种字体,下面我们将说明如何在一个控件中实现多种字体属性。
大多数情况下,每个字体对象都能够通过调用IFontNotification接口的成员函数(由COleControl实现)在自身更改时提供通知。如果控件使用库存Font属性,则其通知由COleControl的OnFontChanged成员函数处理。当添加自定义Font属性时,可以让它们使用同一实现。在第二部分的例程中,这一点通过在初始化m_fontCaption成员变量时传递&m_xFontNotification来实现。
例程3将演示多个字体对象使用IFontNotification的同一实现,实现在一个控件中使用多种字体。
例程3:LabelEx0.ocx
例程1的Label控件确实增强了VC++工具箱中的Static Text控件的功能。但对于形如"m3/h","h2o"的文本内容,使用一个Label控件就有点无能为力了,下面我们将制作一个LabelEx0控件来再次扩展Label控件的功能,同时演示如何在控件中添加多种字体属性。
LabelEx0控件内部由上、中、下三个部分组成,三个部分的字体内容和字体属性可以分别设置,以方便地显示上下标部分。
打开Visual C++ 6.0,新建LabelEx0工程,接受所有默认设置,完成LabelEx0工程创建。使用ClassWizard 给控件增加库存属性BackColor,ForeColor:
- 单击View菜单的ClassWizard打开 ClassWizard;
- 单击Automation标签;
- Class Name下拉列表框选择CLabelEx0Ctrl,单击 Add Property;
- 在External name框中,单击BackColor;
- 单击OK;
- 单击OK确认你的选择并关闭ClassWizard;
我们已经给控件增加了库存属性BackColor,该属性用以设置LabelEx0控件的背景色。按上述同样操作,添加库存属性ForeColor。
使用ClassWizard 给控件增加自定义属性CaptionUp,CaptionMiddle,CaptionDown:
- 单击View菜单的ClassWizard打开 ClassWizard;
- 单击Automation标签;
- Class Name下拉列表框选择CLabelEx0Ctrl,单击 Add Property;
- 在External name框中,输入自定义属性名CaptionUp;
- 在Implementation框中,单击Member variable;
- 在Return Type框中,选择CString作为属性类型;
- 单击OK;
- 单击OK确认你的选择并关闭ClassWizard;
按上述同样操作,添加自定义属性CaptionMiddle,CaptionDown。CaptionUp,CaptionMiddle和CaptionDown分别用以设置LabelEx0控件上、中、下三个部分的文本内容。
使用ClassWizard 给控件增加自定义属性XUp,YUp,XMiddle, YMiddle, XDown, YDown
- 单击View菜单的ClassWizard打开 ClassWizard;
- 单击Automation标签;
- Class Name下拉列表框选择CLabelEx0Ctrl,单击 Add Property;
- 在External name框中,输入自定义属性名XUp;
- 在Implementation框中,单击Member variable;
- 在Return Type框中,选择long作为属性类型;
- 单击OK;
- 单击OK确认你的选择并关闭ClassWizard;
按上述同样操作,添加自定义属性YUp,XMiddle, YMiddle, XDown和YDown。其中XUp 和Yup属性用来决定上标文本的位置;XMiddle和YMiddle用以设置中间文本的位置;XDown和YDown 用以设置LabelEx0控件下标文本的位置。
使用ClassWizard 给控件增加自定义属性FontUp,FontMiddle,FontDown
- 单击View菜单的ClassWizard打开 ClassWizard;
- 单击Automation标签;
- Class Name下拉列表框选择CLabelEx0Ctrl,单击 Add Property;
- 在External name框中,输入自定义属性名FontUp;
- 在Implementation框中,单击Get/Set methods;
- 在Return Type框中,选择LPFONTDISP作为属性类型;
- 单击OK;
- 单击OK确认你的选择并关闭ClassWizard;
按上述同样操作,添加自定义属性FontMiddle,FontDown。FontUp,FontMiddle和FontDown分别用以设置LabelEx0控件上、中、下三个部分的字体属性。
更多精彩
赞助商链接