欢迎来到天天文库
浏览记录
ID:13857164
大小:192.50 KB
页数:16页
时间:2018-07-24
《实验八activex控件的创建和使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验八ActiveX控件的创建和使用一实验目的1掌握基于MFC创建ActiveX控件的过程2掌握ActiveX控件的属性和事件的编程方法3了解非标准形状控件的编程方法二实验要求8.1创建一个控件,在控件上显示一串字符,设置属性,可以对显示的字符进行设置和修改;另一方面,设置两个事件,当鼠标移动时,将鼠标的位置告知,当鼠标左键压下时,产生另一个事件,告知鼠标位置。编写测试程序,在对话窗口上使用编写的控件,可以输入在控件上待显示的字符,当鼠标在控件上移动时,在对话框上显示其坐标。当鼠标左键压下时,产生另一个事件,告知鼠标位置。
2、8.2创建一椭圆形控件(或其它形状),双击后弹出颜色设置对话窗口,选择其中颜色,将控件颜色设置为选择的颜色。编写测试程序,在测试程序中测试控件的功能。三实验过程实验1步骤:(1)首先利用MFCActiveXControlWizard生成一个ActiveX控件程序的框架。在VC++开发环境中,选择【FileNew】菜单项,在打开的对话框上选择Projects选项卡,并在列表框中MFCActiveXControlWizard,工程命名为:Example1。然后单击【OK】进入向导的第一步,直接单击【Finish】按钮保持所有
3、默认设置不变。说明:其中CExample1App类是从CWinApp派生的,所以可以把该类看作是一个应用程序类。CExample1Ctrl类是从CWnd类派生的,对控件窗口进行的操作都将在CExample1Ctrl类中完成。在CExample1Ctrl类的头文件中提供了消息映射、调度映射和事件映射。调度映射是为了让外部应用程序可以方便地访问控件的属性和方法,而事件映射让控件可以向包含它的容器发送事件通知。Example1PropPage类派生于CDialog类,是用来显示Example1控件的属性页的,该类和一个ID为ID
4、D_PROPPAGE_EXAMPLE1的对话框资源相对应。在上述介绍的三个类的上面还有两项内容:_DExample1和_DExample1Events,它们都是接口。接口是控件与外部程序进行通信的协议。可以把接口看作是函数的集合,外部程序通过这个接口所暴露出来的方法去访问控件的属性和方法。实际上,可以把接口看作一个抽象基类,在此接口中定义的所有函数都是虚函数,这些函数的实现在CExample1Ctrl类中完成的。所以通过接口调用的函数实际上是调用CExample1Ctrl中的函数来实现的。(2)ActiveX控件不能独立运
5、行,它必须嵌入到一个容器中运行。编译并运行刚刚创建的工程,可以看到如图所示的对话框:我们可以单击该对话框上标示了一个向右箭头的按钮,将弹出一个快捷菜单,选择【ActiveXControlTestContainer】菜单项,也就是选择ActiveXControlTestContainer这个应用程序作为Example1控件的容器。然后单击上图所示对话框的【OK】按钮关闭该对话框。这时将打开ActiveXControlTestContainer这个应用程序,如下图所示:于是我们可以加载特定的ActiveX控件了,方法是选择【E
6、ditInsertNewControl...】菜单项,这时将打开如下图所示的对话框:选中我们创建的Example1控件,单击对话框上的【OK】按钮关闭对话框,这时,在ActiveXControlTestContainer应用程序中就加载了Example1控件。这时该控件的代码都是MFC自动生成的。(3)控件功能的实现。首先将CExample1Ctrl类中OnDraw函数中自动生成的两行代码注释起来,它们分别用来填充控件的背景和绘制椭圆。然后为控件添加自定义属性,选择ClassWizard对话框上的Automation选项
7、卡,然后单击【AddProperty】按钮,将弹出属性对话框。在Externalname中填写属性名称为“SetText”,类型选择为“CString”,变量名被自动的设置为m_setText,而且ClassWizard为该控件增加了一个通知函数:OnSetTextChanged,当在外部修改属性时,这个函数将被调用。在添加属性对话框上还有三个单选按钮,保持默认选择的Membervariable,当选择该选项后,ClassWizard会为该属性生成一个成员变量和一个通知函数。在CExample1Ctrl类的构造函数中对m_
8、setText进行初始化,加入代码:m_setText="你好!";在通知函数OnSetTextChanged中加入代码如下:Invalidate();使窗口发生重绘调用OnDraw函数,在OnDraw函数中加入代码如下:pdc->TextOut(0,0,m_setText);(4)为控件增加标准事件。
此文档下载收益归作者所有