《ActiveX控件制作.ppt》由会员分享,可在线阅读,更多相关《ActiveX控件制作.ppt(17页珍藏版)》请在金锄头文库上搜索。
1、ActiveX控件制作 在系统开发过程中 控件的使用可以有效的帮助程序的开发 但是系统提供的控件不能满足用户的所以要求 于是我们可以开发满足自己要求的Activx控件 下面介绍一个简单ACtivx控件的制作 1 新建MFCActivxcontrolwizard工程 名为MyClock 选择创建空的工程 生成的控件有3个类和2个接口 应用程序类 CMyclockApp主窗口类 CMyclockCtrl对话框类 显示控件属性页CMyclockPropPage接口是外部调用控件功能的函数集合 一些纯虚函数 在主窗口类中进行实现 运行时选择下面的方式 控件是无法独立运行 必须使用容器来测试控件 查看其
2、方法和属性页 方法只有aboutBox 属性页为空 下面学习添加属性和方法 控件注册与注销 控件必须注册才可以使用 在globals中有注册函数DllRegisterServer和注销函数DllUnregisterServer Vc 编译控件时 最后对ACtivx控件调用全局函数进行注册 可以手动注册 开始 运行 regsvr32E Clock ocx或者vc tool registercontrol控件注销 使用regsvr32程序 regsvr32 uE Clock ocx注销 默认生成的控件功能是在CMyclockCtrl ondraw中画一个椭圆 可以修改为下面时间函数CTimetim
3、e CTime GetCurrentTime if 0 time GetSecond FireNewMinute CStringstr time Format H M S pdc TextOut 0 0 str 得到时间时静止的 可以设置一个时钟函数 更新时间 添加常用属性页 MFC提供了三个与ActiveX控件一起使用的常用属性页 CLSID CColorPropPage CLSID CFontPropPage和CLSID CPicturePropPage 这些页分别显示常用颜色 字体和图片属性的用户界面 添加 在MyclockCtl cpp中找到BEGIN PROPPAGEIDS CSam
4、pleCtrl 4 PROPPAGEID CMyPropPage guid PROPPAGEID CLSID CFontPropPage PROPPAGEID CLSID CColorPropPage PROPPAGEID CLSID CPicturePropPage END PROPPAGEIDS CSampleCtrl 请注意 BEGIN PROPPAGEIDS宏中的属性页数为4 它表示ActiveX控件支持的属性页数 注意如果不能访问控件常用属性页 可能是因为没有在当前的操作系统中正确地注册MFCDLL MFCxx DLL 导致这种情况的原因通常是安装了VisualC 和 Net多个MF
5、C库 如果常用属性页不可见通过在命令行中用DLL的完整路径名运行RegSvr32 exe来注册DLL 添加自定义属性页 如果系统提供一个自定义属性页不够用 则按以下步骤添加 1 ActiveX工程中 资源视图中 Dialog 节点 添加Dialog并选择IDD OLE PROPPAGE SMALL 并修改其名字 2 在类向导中 添加新类 注意其基类和dialogID 选择你新建的对话框 3程序中添加 程序中有个属性页表添加头文件 include classname h 修改属性表BEGIN PROPPAGEIDS CClockCtrl 4 PROPPAGEID CClockPropPage g
6、uid PROPPAGEID CLSID CColorPropPage PROPPAGEID newPropPage guid PROPPAGEID classname guid END PROPPAGEIDS CClockCtrl 改变其总数 并将新建的属性页其加入4 完善属性页 二 设置自定义属性页的名字在资源的stringtable中添加两个string一个是新建属性页的标题 一个是新建属性页的名字 在字符表中修改后 必须在程序中对应位置修改 我们先定义个设置的值是IDS Camera IP CAPTION 名字 在这个属性页类的构造函数由newPropPage newPropPage
7、COlePropertyPage IDD 0 改为 newPropPage newPropPage COlePropertyPage IDD IDS new CAPTION 结果出现错误 4 错误是没定义标题 出现空指针 再定义一个标题 IDS VIDEO Camerapara options标题 BOOLCcameraparam CcameraparamFactory UpdateRegistry BOOLbRegister if bRegister returnAfxOleRegisterPropertyPageClass AfxGetInstanceHandle m clsid IDS VIDEO Camerapara elsereturnAfxOleUnregisterClass m clsid NULL 三 属性页控件变量关联到属性1 在项目类中添加一个属性propname 名字中不要有下划线 错误 InvalidOLEexternalname prop name 是因为名字不符合规则2 打开资源 对话框 对要关联的控件添加变量 注意 在Optionalpropertyname中选择要关联的属性变量名 如果没有该选项 直接输入其名字也一样