13、ActiveX控件

简介: 基本概念:     可以把ActiveX控件看做是一个极小的服务器应用程序,它不能独立运行,必须嵌入到容器程序中,与容器一起运行。容器应用程序是可以嵌入或链接对象的 应用程序;服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。

基本概念:

    可以把ActiveX控件看做是一个极小的服务器应用程序,它不能独立运行,必须嵌入到容器程序中,与容器一起运行。容器应用程序是可以嵌入或链接对象的 应用程序;服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。如Word中嵌入Excel,则Word就是一个容器应用程序,而 Excel就是服务器应用程序。

    ActiveX控件的后缀名可以是[.ocx][.dll]等。作为一个典型的ActiveX控件,它具有方法,属性,事件这三种特性。ActiveX底层是通过COM技术实现的。

    BEGIN_DISPATCH_MAP,调度/派遣映射是MFC提供的一种映射机制,主要是为了让外部应用可以方便的访问控件的属性和方法,而事件映射也是MFC提供,让控件可以向包含它的容器发送事件通知的映射机制。

    接口是控件与外部程序进行通信的协议,可以把接口看作是函数的集合,外部程序通过这个接口暴露出来的方法和属性与之通信。实际上,就是抽象基类,在此接口中定义的所有函数都是纯虚函数,实现在派生类完成。ActiveX控件在使用前要先注册。

程序细节:

代码
 
   
void CClockTestCtrl::OnDraw(
CDC
* pdc, const CRect & rcBounds, const CRect & rcInvalid)
{
if ( ! pdc)
return ;
// TODO: 用您自己的绘图代码替换下面的代码。
// pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
// pdc->Ellipse(rcBounds);
CBrush brush(TranslateColor(GetBackColor()));
pdc
-> FillRect(rcBounds, & brush);
pdc
-> SetTextColor(TranslateColor(GetForeColor()));
CTime time
= CTime::GetCurrentTime();
CString str
= time.Format( " %H:%M:%S " );
pdc
-> TextOut( 0 , 0 , str);
}

两个函数来使控件窗口重绘:

Invalidate

InvalidateControl

添加属性页:PROPPAGEID(CLSID_CColorPropPage)

BoundPropertyChanged

Call this function to signal that the bound property value has changed

    可以在此函数中为每一个具有持久性的自定义属性调用以"PX_"开头的函数,MFC为一些基本类型都提供了PX_开头的函数,如PX_Short,PX_Long。

AmbientUserMode,Call this function to determine if the container is in design mode or user mode.

[default, source] dispinterface _DClockTestEvents; 源接口表示控件将使用这个接口来发送通知事件,这个接口不是控件本身实现的接口。

对属性和方法都是通过相应的函数实现。

目录
相关文章
震惊!!!return 语句居然是这样的
震惊!!!return 语句居然是这样的
118 1
|
12月前
|
存储 数据库 云计算
云计算的基本概念
云计算的基本概念
1109 2
|
人工智能 自然语言处理 API
深入浅出LangChain与智能Agent:构建下一代AI助手
LangChain为大型语言模型提供了一种全新的搭建和集成方式,通过这个强大的框架,我们可以将复杂的技术任务简化,让创意和创新更加易于实现。本文从LangChain是什么到LangChain的实际案例到智能体的快速发展做了全面的讲解。
282533 62
深入浅出LangChain与智能Agent:构建下一代AI助手
|
Python
Python中的r字符串前缀及其用法详解
Python的r字符串前缀用于创建原始字符串,不解析转义字符。在处理文件路径、正则表达式和特殊字符时特别有用。例如,`r'C:\path'`会保持反斜杠原样,而`'\n'`会被解释为换行。r字符串前缀不能用于变量或表达式,且仅影响字符串本身。了解这一特性有助于编写更清晰、准确的代码。
847 0
|
缓存 计算机视觉
Matlab安装下载的工具箱
Matlab安装下载的工具箱
286 0
|
存储 编解码 运维
第二章 Python字符串处理和编码不再发愁
第二章 Python字符串处理和编码不再发愁
|
API Windows
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
420 0
|
前端开发
利用React Hooks优化前端状态管理
本文将深入介绍如何利用React Hooks优化前端状态管理,包括Hooks的概念、使用方法以及与传统状态管理方式的对比分析,帮助前端开发人员更好地理解和应用这一现代化的状态管理方案。
|
自然语言处理 安全 数据库
Miniob drop table 实现解析 | 学习笔记
快速学习 Miniob drop table 实现解析
Miniob drop table 实现解析 | 学习笔记
|
设计模式 搜索推荐 SEO
用WordPress开发博客如何增加流量?
用WordPress开发博客如何增加流量? 很多时候,当人们发布他们的博客时,多大采用CMS,而用WordPress建站开发博客非常适合,可以实现有很多评论和分享,但是当你遇到最糟糕的时候或者你的博客访问量很低时,结果会让博主感到非常沮丧。您只需要使用一些可以对您的博客产生重大影响的启动策略。
用WordPress开发博客如何增加流量?