在包容程序中使用ActiveX控件
对于ActiveX控件的包容器程序,并不需要象使用OLE文档服务器或ActiveX文档服务器对象那样编写特定的包容器程序框架,直接将控件添加到工程并在对话框上创建即可对其进行使用。
通过"Project"菜单下的"Add To Project"菜单项弹出的"Components and Controls…"子菜单项打开一个"Components and Controls Gallery"对话框,进入到Registered ActiveX Controls目录下,选取前面创建的ActiveX控件,并将其添加到工程。向导将会在工程中添加一个关于此ActiveX控件的包装类,并在"Controls"工具栏中添加一个表示此控件的图标。可以象使用其他的标准控件一样将其放置到对话框资源中,并修改其缺省属性。除此之外,还可以在程序中通过对控件包装类成员函数的使用来动态更改控件的属性设置。例如,下面这段代码通过包装类对象m_ctrlTest在程序运行期间动态设置了控件的XPos、YPos 以及Message属性:

图15 添加事件响应函数
在资源视图中用鼠标右键点击放置于对话框上的ActiveX控件,并从弹出菜单中选择"Events…"菜单项,将弹出如图15所示的对话框,在左边的列表框中显示了控件提供的事件,双击事件将在包容器程序中添加相应的事件处理函数和事件映射表,并可以在响应控件发出的事件后进行相应的处理:
从上述对ActiveX控件的使用过程可以看出其与标准控件的使用并没有什么太大的区别,通过包装类使得在客户程序中对控件属性、方法的使用可以象使用普通MFC类一样简单。另外,在控件的包装类中还提供有Create()方法,使在程序运行期间也能够动态创建控件。
小结
尽管ActiveX控件从技术上集成了COM和OLE的许多精华技术,但由于MFC对ActiveX控件提供了强大的支持,使得对ActiveX控件的开发成为一件非常容易的事情。但要深刻理解ActiveX控件技术,还要对一些基础技术有一个基本的概念,本文的目的并不在于介绍如何编写一个ActiveX控件,而是通过对控件的创建过程的分析而使读者能够对ActiveX控件的开发有一个新的认识。本文所述代码在Windows 2000 Professional下由Microsoft Visual C++ 6.0编译通过。
对于ActiveX控件的包容器程序,并不需要象使用OLE文档服务器或ActiveX文档服务器对象那样编写特定的包容器程序框架,直接将控件添加到工程并在对话框上创建即可对其进行使用。
通过"Project"菜单下的"Add To Project"菜单项弹出的"Components and Controls…"子菜单项打开一个"Components and Controls Gallery"对话框,进入到Registered ActiveX Controls目录下,选取前面创建的ActiveX控件,并将其添加到工程。向导将会在工程中添加一个关于此ActiveX控件的包装类,并在"Controls"工具栏中添加一个表示此控件的图标。可以象使用其他的标准控件一样将其放置到对话框资源中,并修改其缺省属性。除此之外,还可以在程序中通过对控件包装类成员函数的使用来动态更改控件的属性设置。例如,下面这段代码通过包装类对象m_ctrlTest在程序运行期间动态设置了控件的XPos、YPos 以及Message属性:
| // 更新显示 UpdateData(); // 动态更改控件的Message属性 m_ctrlTest.SetMessage(m_sInput); // 设置显示坐标 m_ctrlTest.SetXPos(10); m_ctrlTest.SetYPos(10); |

图15 添加事件响应函数
在资源视图中用鼠标右键点击放置于对话框上的ActiveX控件,并从弹出菜单中选择"Events…"菜单项,将弹出如图15所示的对话框,在左边的列表框中显示了控件提供的事件,双击事件将在包容器程序中添加相应的事件处理函数和事件映射表,并可以在响应控件发出的事件后进行相应的处理:
| BEGIN_EVENTSINK_MAP(CSample69Dlg, CDialog) //{{AFX_EVENTSINK_MAP(CSample69Dlg) ON_EVENT(CSample69Dlg, IDC_SAMPLE68CTRL1, 1 /* MsgOut */, OnMsgOutSample68ctrl1, VTS_NONE) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() …… void CSample69Dlg::OnMsgOutSample68ctrl1() { // 得到输入字符数 int nNum = m_ctrlTest.MessageLen(); // 回显信息 m_sInput.Format("输入字符太多,共输入了%d个字符", nNum); // 显示信息 UpdateData(FALSE); } |
从上述对ActiveX控件的使用过程可以看出其与标准控件的使用并没有什么太大的区别,通过包装类使得在客户程序中对控件属性、方法的使用可以象使用普通MFC类一样简单。另外,在控件的包装类中还提供有Create()方法,使在程序运行期间也能够动态创建控件。
小结
尽管ActiveX控件从技术上集成了COM和OLE的许多精华技术,但由于MFC对ActiveX控件提供了强大的支持,使得对ActiveX控件的开发成为一件非常容易的事情。但要深刻理解ActiveX控件技术,还要对一些基础技术有一个基本的概念,本文的目的并不在于介绍如何编写一个ActiveX控件,而是通过对控件的创建过程的分析而使读者能够对ActiveX控件的开发有一个新的认识。本文所述代码在Windows 2000 Professional下由Microsoft Visual C++ 6.0编译通过。
本文介绍如何在包容程序中使用ActiveX控件。通过简单的步骤即可将控件添加到工程并进行属性设置及事件响应。MFC的强大支持使得ActiveX控件的开发变得容易。
1272

被折叠的 条评论
为什么被折叠?



