ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:192.50KB ,
资源ID:1131669      下载积分:10 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1131669.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验八 ActiveX 控件的创建和使用.doc)为本站会员(da****u)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

实验八 ActiveX 控件的创建和使用.doc

1、实验八 ActiveX 控件的创建和使用一 实验目的1 掌握基于 MFC创建 ActiveX 控件的过程2 掌握 ActiveX 控件的属性和事件的编程方法3 了解非标准形状控件的编程方法二 实验要求8.1 创建一个控件,在控件上显示一串字符,设置属性,可以对显示的字符进行设置和修改;另一方面,设置两个事件,当鼠标移动时,将鼠标的位置告知,当鼠标左键压下时,产生另一个事件,告知鼠标位置。编写测试程序,在对话窗口上使用编写的控件,可以输入在控件上待显示的字符,当鼠标在控件上移动时,在对话框上显示其坐标。当鼠标左键压下时,产生另一个事件,告知鼠标位置。8.2 创建一椭圆形控件(或其它形状),双击后

2、弹出颜色设置对话窗口,选择其中颜色,将控件颜色设置为选择的颜色。编写测试程序,在测试程序中测试控件的功能。三 实验过程实验 1步骤:(1)首先利用 MFC ActiveX ControlWizard 生成一个 ActiveX控件程序的框架。在 VC+开发环境中,选择【FileNew】菜单项,在打开的对话框上选择 Projects选项卡,并在列表框中 MFC ActiveX ControlWizard,工程命名为:Example1。然后单击【OK】进入向导的第一步,直接单击【Finish】按钮保持所有默认设置不变。说明:其中 CExample1App类是从 CWinApp派生的,所以可以把该类看

3、作是一个应用程序类。CExample1Ctrl 类是从 CWnd类派生的,对控件窗口进行的操作都将在 CExample1Ctrl类中完成。在 CExample1Ctrl类的头文件中提供了消息映射、调度映射和事件映射。调度映射是为了让外部应用程序可以方便地访问控件的属性和方法,而事件映射让控件可以向包含它的容器发送事件通知。Example1PropPage类派生于 CDialog类,是用来显示 Example1控件的属性页的,该类和一个 ID为 IDD_PROPPAGE_EXAMPLE1的对话框资源相对应。在上述介绍的三个类的上面还有两项内容:_DExample1 和_DExample1Even

4、ts,它们都是接口。接口是控件与外部程序进行通信的协议。可以把接口看作是函数的集合,外部程序通过这个接口所暴露出来的方法去访问控件的属性和方法。实际上,可以把接口看作一个抽象基类,在此接口中定义的所有函数都是虚函数,这些函数的实现在 CExample1Ctrl类中完成的。所以通过接口调用的函数实际上是调用 CExample1Ctrl中的函数来实现的。(2)ActiveX 控件不能独立运行,它必须嵌入到一个容器中运行。编译并运行刚刚创建的工程,可以看到如图所示的对话框:我们可以单击该对话框上标示了一个向右箭头的按钮,将弹出一个快捷菜单,选择【ActiveX Control Test Contai

5、ner】菜单项,也就是选择 ActiveX Control Test Container这个应用程序作为 Example1控件的容器。然后单击上图所示对话框的【OK】按钮关闭该对话框。这时将打开 ActiveX Control Test Container这个应用程序,如下图所示:于是我们可以加载特定的 ActiveX控件了,方法是选择【EditInsert New Control.】菜单项,这时将打开如下图所示的对话框:选中我们创建的 Example1控件,单击对话框上的【OK】按钮关闭对话框,这时,在 ActiveX Control Test Container应用程序中就加载了 Exam

6、ple1控件。这时该控件的代码都是 MFC自动生成的。(3)控件功能的实现。首先将 CExample1Ctrl类中 OnDraw函数中自动生成的两行代码注释起来,它们分别用来填充控件的背景和绘制椭圆。然后为控件添加自定义属性,选择 ClassWizard对话框上的 Automation选项卡,然后单击【Add Property】按钮,将弹出属性对话框。在 External name中填写属性名称为“SetText”,类型选择为“CString”,变量名被自动的设置为m_setText,而且 ClassWizard为该控件增加了一个通知函数:OnSetTextChanged,当在外部修改属性时,

7、这个函数将被调用。在添加属性对话框上还有三个单选按钮,保持默认选择的 Member variable,当选择该选项后,ClassWizard会为该属性生成一个成员变量和一个通知函数。在 CExample1Ctrl类的构造函数中对 m_setText进行初始化,加入代码:m_setText=“你好!“;在通知函数 OnSetTextChanged中加入代码如下:Invalidate();使窗口发生重绘调用 OnDraw函数,在 OnDraw函数中加入代码如下:pdc-TextOut(0,0,m_setText);(4)为控件增加标准事件。选择 ClassWizard对话框上的 ActiveX E

8、vents选项卡,然后单击【Add Event】按钮,将显示添加事件对话框,在此对话框上有一个名称为 External name的组合框,当单击其右边向下的箭头时,将会看到列出了一些预先准备好的事件。在 External name下拉列表中选择 Click,保持默认的 Stock选项不变,然后单击【OK】按钮关闭 Add Event对话框,同理增加 MouseMove事件,然后单击 ClassWizard对话框上的【OK】按钮关闭该对话框。这时,在 ClassView选项卡中可以看到,在_DclockEvents 接口下面增加了两个方法,就是刚刚添加的事件。(5)测试控件的属性和事件。利用 B

9、uild命令生成控件,利用 ActiveX Control Test Container来测试该控件。利用【EditInsert New Control.】菜单项插入该控件后,选中该控件,然后单击【ControlInvoke Methods.】菜单项,这时将显示如下所示的对话框:在此对话框中有一个方法名称(Method Name)下拉列表,在此列表中列出了当前控件提供的方法,如下图所示:如果想要得到某个属性值,应该选择 PropGet类型的方法;如果想要设置某个属性的值,则应该选择 PropPut类型的方法。因此应该选择 PropPut类型的方法,并在随后出现的对话框的 Parameter编辑

10、框中输入:ni hao,单击【Set Value】按钮,再单击【Invoke】按钮使得设置生效,观察运行结果。当把鼠标放到控件上时,ActiveX Control Test Container 的位于下部的窗口将显示鼠标的位置;当单击控件的时候,下部的窗口将显示控件被单击的消息。(6)生成一个发行版本的 ActiveX控件。方法是在 VC+开发环境打开Example1工程,然后选择【BuildSet Active Configuration.】菜单项,从弹出的对话框中选择“Example1-Win32 Release”,单击【OK】按钮,然后重新利用 Build命令生成控件。(7)编写一个 A

11、ctiveX控件的测试程序。新建一个基于对话框的工程,命名为:Example1Test,并删除自动生成的对话框资源上的静态文本控件。在 VC+中插入 ActiveX控件的方法是,选择【ProjectAdd To ProjectComponents and Control.】菜单项,将显示如下图所示的对话框:在此对话框中双击“Registered ActiveX Controls”目录,并在此目录下找到Example1控件,然后单击【Insert】按钮,并单击随后显示的确认对话框上的【确认】按钮,这时将弹出如下图所示的对话框:Comment 园园园园1: 应是对话框类Comment 园园园园2:

12、 什么这时,会在工程中为该控件生成一个类,类名为 Example1。最后单击【OK】按钮关闭该对话框,并单击【Close】按钮关闭插入组件和控件的对话框。这时,在 ClassView选项卡上,可以看到增加了一个类:Example1,该类提供了一些函数,我们只需要调用这些函数就可以访问 Example1这个控件的方法和属性了。同时,在工具箱上也增加了 Example1控件的图标,我们只需要单击该图标,并在对话框资源上拖放在一块合适的区域就可以放置一个 Example1控件了。(8)在程序中动态的产生一个 Example1控件,首先为 CExample1TestDlg类增加一个成员变量,变量名为

13、m_example1,类型为 CExample1。然后在CExample1TestDlg类的 OnInitDialog函数中加入代码如下:m_example1.Create(“example1“,WS_CHILD|WS_VISIBLE,CRect(0,0,100,50),this,123);动态产生一个 Example1控件,并在 Example1Test.h文件中加入代码如下:#include “example1.h“。然后先在对话框上放置一个静态文本控件,Caputions设置为:“输入要显示的字符串:”。再放置一个编辑框控件,并为编辑框控件关联一个 Cstring类型的成员变量 m_st

14、r。再放置一个按钮控件,将 Caputions设置为:设置,ID 设置为 IDC_BUTTON,并为其添加单击消息OnButton。最后放置一个 Example1控件,调整位置如下图所示:在 OnButton函数中添加代码如下:UpdateData();m_example1.SetSetText(m_str);利用编辑框来改变动态产生的 Example1控件的显示文本。编译并运行程序,通过编辑框来输入要显示的字符串,单击设置按钮来完成设置,观察 Example1控件的显示文本。(9)在 VC中访问静态增加的 Example1控件的事件。在该控件上单击鼠标右键,从弹出的快捷菜单上选择【Class

15、Wizard.】,将弹出如下图所示的对话框:可以看到,通过 ClassWizard可以为 Example1控件增加 Click事件和MouseMove事件。如果要增加某个事件,在此对话框中选中该事件,然后单击【Add Function.】按钮即可。通过这种方法为 Example1控件增加 Click事件和 MouseMove事件。Click 事件的消息响应函数为OnClickExample1ctrl2,MouseMove 事件的消息响应函数为OnMouseMoveExample1ctrl2。(10)首先为 CExample1TestDlg类增加一个类型为 CPoint的公有成员变量m_poin

16、t,然后在 OnClickExample1ctrl2函数中增加代码如下:CClientDC dc(this);CString str;str.Format(“x=%d,y=%d“,m_point.x,m_point.y);dc.TextOut(200,250,str);完成当鼠标单击控件时,显示鼠标的位置。鼠标的位置会在OnMouseMoveExample1ctrl2函数中添加,代码如下:CClientDC dc(this);m_point.x=x;m_point.y=y;CString str;str.Format(“x=%d,y=%d“,x,y);dc.TextOut(100,100,st

17、r);完成当鼠标在控件上移动时,显示鼠标的位置。编辑并运行程序,观察结果。实验 2步骤:(1)首先利用 MFC ActiveX ControlWizard 生成一个 ActiveX控件程序的框架。在 VC+开发环境中,选择【FileNew】菜单项,在打开的对话框上选择Projects选项卡,并在列表框中 MFC ActiveX ControlWizard,工程命名为:Rectangle.然后单击【OK】进入向导的第一步,直接单击【Finish】按钮保持所有默认设置不变。(2)控件功能的实现。首先将 CRectangleCtrl类中 OnDraw函数中自动生成的两行代码注释起来。然后为控件添加标

18、准属性,选择 ClassWizard对话框上的Automation选项卡,然后单击【Add Property】按钮,将弹出属性对话框。在External name选项卡中选择 ForeColor前景色属性,其它保持默认设置。为了实现设置前景色的功能,还有在 CRectangleCtrl类的 OnDraw函数中添加代码如下:CBrush brush(TranslateColor(GetForeColor();pdc-Rectangle(rcBounds);pdc-FillRect(rcBounds,GetForeColor函数用来获得前景色,然后在整个控件区域内绘制一个矩形,最后用前景色来填充整

19、个矩形。(3)为控件增加标准事件双击事件。选择 ClassWizard对话框上的 ActiveX Events选项卡,然后单击【Add Event】按钮,将显示添加事件对话框,在此对话框上有一个名称为 External name的组合框,当单击其右边向下的箭头时,将会看到列出了一些预先准备好的事件。在 External name下拉列表中选择DblClick,保持默认的 Stock选项不变,然后单击【OK】按钮关闭 Add Event对话框,然后单击 ClassWizard对话框上的【OK】按钮关闭该对话框。(4)利用实验 1中的方法来测试控件的属性和事件。(5)生成一个发行版本的 Activ

20、eX控件。方法是在 VC+开发环境打开Rectangle工程,然后选择【BuildSet Active Configuration.】菜单项,从弹出的对话框中选择“Rectangle-Win32 Release”,单击【OK】按钮,然后重新利用 Build命令生成控件。(6)编写一个 ActiveX控件的测试程序。新建一个基于对话框的工程,命名为: RectangleTest,并删除自动生成的对话框资源上的静态文本控件。利用实验 1中的方法插入 Rectangle控件。这时,会在工程中为该控件生成一个类,类名为 CRectangle。(7)在程序中动态的产生一个 Rectangle控件,首先为

21、 CRectangleTestDlg类增加一个成员变量,变量名为 m_rectangle,类型为 CRectangle。然后在CRectangleTestDlg类的 OnInitDialog函数中加入代码如下:m_rectangle.Create(“Rectangle“,WS_CHILD|WS_VISIBLE,CRect(100,100,200,150),this,123);动态产生一个 Rectangle控件,并在 RectangleTest.h文件中加入代码如下:#include “rectangle.h“。编译并运行程序,如下图所示:(8)为动态产生的 Rectangle控件增加双击事件

22、的响应。首先在ResourceView选项卡下,打开主对话框,并在其上静态拖放一个 Rectangle控件,将其 ID设置为 IDC_RECTANGLECTRL1。在该控件上单击鼠标右键,从弹出的快捷菜单上选择【ClassWizard.】,可以看到,通过 ClassWizard可以为Rectangle控件增加 DblClick事件。如果要增加某个事件,在此对话框中选中该事件,然后单击【Add Function.】按钮即可。(9)删除刚刚添加的静态 Rectangle控件。打开 FileView选项卡,打开Resource.h文件,并在其中添加代码:#define IDC_RECTANGLECT

23、RL1 123此时,即将动态创建的 Rectangle控件和静态创建的 Rectangle控件的双击事件结合在一起了。(10)在 Rectangle控件的双击事件响应函数 OnDblClickRectanglectrl1中添加代码如下:CColorDialog dlg;if(IDOK=dlg.DoModal()m_rectangle.SetForeColor(dlg.m_cc.rgbResult);当双击 Rectangle控件时,首先创建一个颜色对话框,当做出选择,按下“确定”按钮的时候,DoModal 函数返回 IDOK,此时,把颜色对话框中保存的结果dlg.m_cc.rgbResult传递给 SetForeColor函数来设置控件的前景色。(11)编辑并运行程序,观察实验结果。下图为选择绿色为前景色所得结果:

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。