如何在ActiveX控件中使用字体

字体的使用是ActiveX控件制作过程中不可缺少的部分。本文将深入浅出地介绍在ActiveX控件中制作过程中如何使用字体。本文所提及的ActiveX控件制作是指利用VC++6.0的MFC ActiveX ControlWizard 工具,用其它方法制作 ActiveX 控件本文不作讨论。

本文专门设置了一些例程,以便您能够更好地掌握这些内容。这些例程都是完整的ActiveX控件制作源代码。为了突出重点,本文仅对字体使用相关部分的源代码作较详细的介绍,其余部分的代码本文不作过多讨论。字体作为一种属性在ActiveX控件中使用,与其它属性没有区别,同样分为库存属性和自定义属性,本文将分四个部分进行介绍。

  • 第一部分 在控件中使用库存字体(Stock Font)属性
  • 第二部分 在控件中使用自定义的字体(Custom Font)属性
  • 第三部分 使用多种字体
  • 第四部分 优化代码,合理地使用多种字体

第一部分 在控件中使用库存字体(Stock Font)属性

使用ClassWizard 添加 Font库存属性的步骤:

  1. 打开控件工程, 单击View菜单的ClassWizard打开ClassWizard;
  2. 单击Automation标签;
  3. 在Class Name框,选择你的控件类名;
  4. 单击Add Property;
  5. 在 External name框, 单击Font;
  6. 单击 OK;
  7. 单击 OK确认你的选择并关闭 ClassWizard;

ClassWizard将在控件类的执行文件的dispatch映射表中加入下列行:

DISP_STOCKPROP_FONT()

另外, ClassWizard 在.ODL 文件中加入下列行:

[id(DISPID_FONT), bindable] IFontDisp* Font;

例程1:Label.ocx

下面,我们举一个具体的实例详细演示如何在控件中添加Font库存属性。您可以下载该例程进行编译生成 .ocx 控件,并测试该控件。

我们将要制作的控件取名Label.ocx,模仿VB工具箱中的Label控件。该控件增强了VC++工具箱中的Static Text控件的有限的功能,您可以方便地在您的工程中使用。例程的工程名也取名为Label。

创建Label工程

打开Visual C++ 6.0,单击File菜单的New,弹出New对话框。在对话框中选择MFC ActiveX ControlWizard,并输入工程名Label,单击OK按钮,关闭该对话框并弹出MFC ActiveX ControlWizard-Step 1 of 2对话框。如图1-1。


图1-1

时间: 2024-04-27 06:17:05

如何在ActiveX控件中使用字体的相关文章

如何在DataGrid控件中隐藏列

datagrid|datagrid控件 如何在DataGrid控件中隐藏列前言:    asp.net在提供我们丰富的内置控件方便我们开发的同时,一些格式化的东西也限制了我们灵活的要求.在DataGrid控件中,我们遇到的一个非常典型的问题就是如何把我们不想显示的列根据需要随时隐藏掉.解决方案:    我们不能隐藏在DataGrid里自动生成列的主要的一点原因是:DataGrid里的column不能被DataGrid的属性DataGridColumn增加.    基于以上原因,我们可以提出两种不

在ActiveX控件中检测IE中STOP按钮的按下

许多ActiveX控件,比如:ActiveMovie, IE工具条中的Stop按钮对于他们来说有特殊的意义.当Stop按钮下按时这些控件可以停止播放背景音乐或动画.这篇文章将告诉你在ActiveX控件中添加IOleCommandTarget接口来捕捉Stop 按钮的动作. 详细内容 为了支持IOleCommandTarget接口你必须手工在COleControl派生类的.h 和.cpp文件中添加如下代码.然后,你可以在IOleCommandTarget::Exec()函数中捕获OLECMDID_

vs2008-如何在ocx控件中调用另一个已经封装完整的ocx控件?

问题描述 如何在ocx控件中调用另一个已经封装完整的ocx控件? ocx开发初学者一名. 手上有一个完整的ocx控件A,我希望在另一个控件B中插入这个A.在调用控件B的界面中可以看到A的界面.就像用一个exe调用ocx一样实现是否可行? vs2008环境.

flex3-flex4 如何在MenuBar控件中的根节点加上icon图标

问题描述 flex4 如何在MenuBar控件中的根节点加上icon图标 能否实现上图的样子.新手求指教~~

如何在DataGrid控件中实现自定义分页_自学过程

如何在DataGrid控件中实现自定义分页      在一般情况下,DataGrid控件每次实现翻页操作时,都会将数据源中的数据重新调用一次,当数据中 数据很多时,这样做就会很浪费系统资源和降低程序的执行效率.这时候我们一般通过自定义分页来解 决这个问题.     DataGrid控件的AllowCustomPaging属性用来获取或设置DataGrid控件是否允许自定义分 页;VirtualItemCoun属性用来获取或设置在使用自定义分页时DataGrid中实际的项数.要实现自定义分 页,必

在ActiveX控件中引入窗体技术

一.引入Dialog技术 下面介绍在制作ActiveX控件时引入有模式对话框技术,制作步骤如下: 创建一新的MFC ActiveX ControlWizard项目,取名为Hello,其他用缺省选项: 在ResourceView页中新增一对话框资源,命名为IDD_HELLODIALOG,可以在对话框上放自己的控件: 为对话框资源IDD_HELLODIALOG创建新类CHelloDialog,从CDialog继承: 确认在HelloCtrl.h中已加入语句#include "HelloDialog.

如何在 MSChart控件中 创建自定义 "文本标注" ?

问题描述 如下图所示:C#控件MSchart画的曲线图,在图表区上方有自动生成的文字标注,不是title,也不是lable,不知道怎么做,请问有了解的吗? 解决方案 解决方案二:应该说是自定义文本,动态生成的文本标注!!解决方案三:可以用TextAnnotation如下所示:TextAnnotationtxtAn=newTextAnnotation();txtAn.Alignment=ContentAlignment.BottomLeft;//对齐方式txtAn.ForeColor=System

如何在ASCX控件中,设者父页面的标题等属性?

问题描述 有一个ASCX控件,用于显示新闻的详细内容阅读新闻的时候,让父页面的标题和新闻的标题一致在ASCX控件中,引用了一个ASP标签<asp:Labelclass="Head"id="lblTitle"runat="server"/>请问如何在ASCX中如何设置可以让父页面的标题与新闻标题一致谢谢大家 解决方案 解决方案二:这个不是设置的你写个脚本在页面加载完后调用把父页面的标题置成lblTitle的Text解决方案三:你要找该控

2011-03-29 14:53 ActiveX控件中接收并处理Windows消息的问题

问题描述: 新建一个MFC ActiveX工程,添加一对话框资源,上面有一些标准控件,如按钮.编辑框.树形列表等,并生成一个类CCtrlPanel. 在CXXXXCtrl类中: int   CXXXXCtrl::OnCreate(LPCREATESTRUCT   lpCreateStruct)   { if   (COleControl::OnCreate(lpCreateStruct)   ==   -1) return   -1; m_CtrlPanel.Create(IDD_CTRLPAN