在ActiveX控件中引入窗体技术

一、引入Dialog技术

下面介绍在制作ActiveX控件时引入有模式对话框技术,制作步骤如下:

创建一新的MFC ActiveX ControlWizard项目,取名为Hello,其他用缺省选项;

在ResourceView页中新增一对话框资源,命名为IDD_HELLODIALOG,可以在对话框上放自己的控件;

为对话框资源IDD_HELLODIALOG创建新类CHelloDialog,从CDialog继承;

确认在HelloCtrl.h中已加入语句#include "HelloDialog.h",为CHelloCtrl类添加成员变量CHelloDialog m_helloDialog;

用ClassWizard在Automation页中为CHelloCtrl添加一方法void DoHello(),外部名亦为DoHello;

void CHelloCtrl::DoHello() { // 显示对话框 m_helloDialog.DoModal(); }

可以用ActiveX Control Test Container测试Hello Control的DoHello方法。

下面介绍在制作ActiveX控件时引入无模式对话框技术,制作步骤如下:

在上面工作的基础上,用ClassWizard为CHelloCtrl添加WM_CREATE的处理函数OnCreate,在此创建无模式对话框;

修改DoHello代码,在此显示对话框;

int CHelloCtrl::OnCreate (LPCREATESTRUCT lpCreateStruct) {
 if (COleControl::OnCreate(lpCreateStruct) == -1) return -1;
 // 创建对话框
 m_helloDialog.Create(IDD_HELLODIALOG);
 return 0;
}
void CHelloCtrl::DoHello() {
 // 显示对话框
 m_helloDialog.ShowWindow(SW_SHOW);
}

下面介绍制作以对话框作为界面的ActiveX控件技术,制作步骤如下:

在上面工作的基础上,设置对话框资源IDD_HELLODIALOG属性的Style页为Style:Child、Border:Dialog Frame、Title Bar:unchecked;设置More Style页为Visible:checked;Control:checked;设置Extended Styles页为Static Edge:checked;

在CHelloCtrl::OnCreate中写入m_helloDialog.Create(IDD_HELLODIALOG,this)语句;

在CHelloCtrl::OnDraw中写入m_helloDialog.MoveWindow(rcBounds,TRUE);

int CHelloCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) {
 if (COleControl::OnCreate(lpCreateStruct) == -1) return -1;
 // 创建对话框
 m_helloDialog.Create(IDD_HELLODIALOG,this);
 return 0;
}
void CHelloCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) {
 // 定位Hello对话框
 m_helloDialog.MoveWindow(rcBounds,TRUE);
}

时间: 2024-08-18 09:58:09

在ActiveX控件中引入窗体技术的相关文章

如何在ActiveX控件中使用字体

字体的使用是ActiveX控件制作过程中不可缺少的部分.本文将深入浅出地介绍在ActiveX控件中制作过程中如何使用字体.本文所提及的ActiveX控件制作是指利用VC++6.0的MFC ActiveX ControlWizard 工具,用其它方法制作 ActiveX 控件本文不作讨论. 本文专门设置了一些例程,以便您能够更好地掌握这些内容.这些例程都是完整的ActiveX控件制作源代码.为了突出重点,本文仅对字体使用相关部分的源代码作较详细的介绍,其余部分的代码本文不作过多讨论.字体作为一种属

在ActiveX控件中检测IE中STOP按钮的按下

许多ActiveX控件,比如:ActiveMovie, IE工具条中的Stop按钮对于他们来说有特殊的意义.当Stop按钮下按时这些控件可以停止播放背景音乐或动画.这篇文章将告诉你在ActiveX控件中添加IOleCommandTarget接口来捕捉Stop 按钮的动作. 详细内容 为了支持IOleCommandTarget接口你必须手工在COleControl派生类的.h 和.cpp文件中添加如下代码.然后,你可以在IOleCommandTarget::Exec()函数中捕获OLECMDID_

2011-03-29 14:53 ActiveX控件中接收并处理Windows消息的问题

问题描述: 新建一个MFC ActiveX工程,添加一对话框资源,上面有一些标准控件,如按钮.编辑框.树形列表等,并生成一个类CCtrlPanel. 在CXXXXCtrl类中: int   CXXXXCtrl::OnCreate(LPCREATESTRUCT   lpCreateStruct)   { if   (COleControl::OnCreate(lpCreateStruct)   ==   -1) return   -1; m_CtrlPanel.Create(IDD_CTRLPAN

如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性 .

如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性   此文章的信息应用于: Microsoft Internet Explorer (编程) 版本4.0, 4.01, 4.01 SP1, 4.01 SP2, 5, 5.01, 5.5,6.0 概要 CSDN文档中心文章 用 MSHTML 的一点经验 111222(原作) 说明了如何访问在HTML文档对象模型中的网页的元素.内容.但是,有时候开发者实际上需要访问的是网页中ActiveX控件的属性.方法和事件.例如,你在网页载入之

基于MFC的ActiveX控件开发

ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中.在VC下ActiveX控件的开发可以分为三种,一种是直接用COM的API来开发,这样做显然非常的麻烦,对程序员要求也非常高,因此一般是不予考虑的:一种是基于传统的MFC,采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中,开发者通过继承这些类得到COM支持功能.MFC为广大VC程序员所熟悉,易于上手学习,但缺点是MFC封装的东西比较多,因此用MFC开发出来的控件相对会比较大,因此比较

ActiveX控件实现

本文源码与文档下载 本章目标: 完成本章学习后,您将能够: Ø         了解什么是ActiveX控件 Ø         掌握如何编写基于MFC的ActiveX控件 Ø         掌握如何测试ActiveX控件 Ø         掌握如何测试ActiveX控件 Ø         了解ActiveX控件如何注册 重点:ActiveX控件的实现.测试及注册. 本章将介绍ActiveX控件的应用与工作原理.我们可以把ActiveX控件看做是一个极小的服务器应用程序,它不能独立运行,必

VC写的ActiveX控件能不能被ASP.NET引用

active|activex|asp.net|控件   1.尊敬的合作伙伴:您好!   非常感谢您使用微软新闻组技术支持!关于您提到的ASP.NET无法引用VC写的控件的问题,我想请问您是想在服务器端引用VC控件中的一些功能,还是VC写了一个ActiveX的控件而无法在网页中使用.请您能否详细描述一下您目前遇到的错误.或者是您引用VC控件时遇到的具体错误信息,这样以方便我们能够更好的来帮助您解决问题,谢谢! 2.关于您提到C#与VC写的ActiveX控件进行交互的问题,从您的描述来看,根据我的理

打开 Office XP 或 Office 2003 文档时,系统提示您授予权限的 ActiveX 控件

故障现象: 当一个"适用于"一节中列出的 Microsoft Office 程序中打开文档时,您可能会提示您授予权限的 ActiveX 控件加载或允许这些控件维护的数据保持不变.某些 ActiveX 控件根本不加载.   此外,导入到另一个程序 (如 Microsoft SharePoint 工作组服务网站包含 ActiveX 控件的 Office 文档时,您可能会收到与以下内容类似的警告消息:   此应用程序时可能不安全的 ActiveX 控件初始化.如果您信任此文档的来源,请选择是

ASP与ActiveX控件交互实战

active|activex|交互|控件 关键字:ASP,ActiveX控件,数字签名,安全 ActiveX控件运行在客户端.我们可以获得客户端的一些信息,如IC卡的信息,客户端的验证等等.但是ActiveX控件也有许多缺点:客户端的部署很困难,如客户端不能正确下载,下载了以后不能正确执行,下载的时候需要设置IE的安全级别等等. 更多的时候,我都在使用COM组件来扩展ASP的功能.准确地说,是服务端运行的Activex Dll组件.使用Server.CreateObject("工程名.类名&qu