《VC++深入详解》学习笔记 第十八章 ActiveX控件

1、什么是ActiveX控件

ActiveX控件类似一个小的应用程序,在容器中运行,比如word中插入Excel链接,点开链接后就是Excel程序

2、特征

通常采用.ocx作为后缀,也有.dll等后缀

具有方法、属性、事件三种特性

3、创建逻辑

向导创建->添加功能->生成工程->注册控件->测试调用

4、ActiveX控件类分析

创建完成的默认三个类:CTestApp,CTestCtrl和CTestPropPage

CTestApp    源于CWinApp,应用程序类表示控件本身,其中包含注册和反注册相关

CTestCtrl    源于CWnd,窗口类,其中提供了消息映射、调度映射、事件映射。调度映射用于访问控件属性和方法;事件映射用于向包含控件的容器发送事件通知;消息映射则是控件本身事件通知

CTestPropPage  源于CDialog,对话框类用于显示控件属性

CTest.idl      对外接口定义文件,其中存放控件与外部程序的通信协议,对控件的方法和属性的添加,在其下属——DTestEvents上右键添加触发添加向导添加。

5、ActiveX控件属性

ActiveX控件有四种属性:  Stock    控件标准属性  

              Ambient   控件环境属性(运行模式)

              Extended    容器处理属性

              Custom    自定义属性

添加属性后需要同时为这些属性加上配置代码,以配合作出相应改变。

属性持久性

  CTestCtrl源文件中DoPropExchange()函数提供了控件属性的持久性支持,MFC为基本类型提供了PX_开头函数,让目标属性具有持久性

  以Short为例:BOOL PX_Short(CPropExchange* pPX,LPCTSTR pszPropName,short& sValue,short sDefault);

                对象指针,由DoPropExchange提供;通过外部程序使用属性名称;属性相关类成员变量;默认值

  自定义属性需要手动通知容器,属性改变:Void BoundPropertyChanged(DISPID dispid)

通过AmbientUserMode等Ambient开头函数获取环境属性从而进行特殊配置

6、ActiveX控件方法

添加完成方法后,由于调度映射的存在,目标方法会在下列四个位置添加代码

1、CTest.idl中的主调度接口

2、CTestCtrl头文件中的声明

3、CTestCtrl源文件中的调度映射表

4、CTestCtrl源文件中定义方法体

 

7、ActiveX控件事件

ActiveX控件事件添加,在CTestCtrl上右键添加,添加事件

 

ActiveX控件有标准事件以及自定义事件两种

标准事件:

添加完成后,事件添加到-DTestEvents事件调度接口中,该接口为源接口,负责发送通知事件到容器,事件的方法由容器实现

自定义事件:

添加完成后,事件添加到-DTestEvents事件调度接口中,同时CTestCtrl源文件中定义方法体将消息发送到容器

 

posted @   九月如枫  阅读(466)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示