`
zhaohaolin
  • 浏览: 1010685 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

VC中使用ATL编写控件 【转】

 
阅读更多

VC中使用ATL编写控件

 

作者:邵盛松 2010年10月29日

 

源码下载地址:http://download.csdn.net/source/2793074

在VC2005中创建控件,可以使用MFC创建控件,也可以使用ATL创建控件

 

一 ATL项目的创建

在VC2005中新建一个项目,项目类型选择ATL,模板选择ATL项目。项目名称命名为ActiveXDemo。

 

 

ATL项目向导的概述中直接下一步

ATL项目的应用程序设置如下

服务器类选选择动态链接库(DLL)

附加选项勾选允许合并代理/存根(stub)代码

二 添加ATL控件

步骤

在解决方案资源管理或类视图中选中项目右键 添加->类

在ATL模板中添加ATL控件

1 简称

简称为ATLCtrl其他各项向导会自动添加

2 选项

控件类型为标准控件,线程模型为单元,接口为双重,聚合为是支持勾选连接点

3 接口

默认就可以

4 外观

添加的控件基于none,其他各项默认

5 常用属性

默认,直接完成

三 调试方法

项目文件夹ATLCtrl.htm可以用来测试控件

调试方法

配置下调试环境

命令参数填写ATLCtrl.htm的路径。

调试时,程序程序自动打开了IE。

如果IE出现了为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件。请单击这里获取选项。

那就允许阻止的内容

结果出现了ATL8.0:ATLCtrl

 

这个控件的基本结构就完成了。

 

四 添加窗口

选择项目右键添加->类,添加ATL对话框

在ATL对话框向导的简称中输入ATLWnd

 

在类视图中选中CATLCtrl

在ATLCtrl中添加一个类型为CATLWnd * m_pWnd 的成员变量

在ATL中VC并没有像MFC那样自动添加头文件,需要手动添加

#include "ATLWnd.h"

然后添加一个WM_CREATE消息

VC自动创建了OnCreate函数,并创建窗口如下

LRESULT CATLCtrl ::OnCreate (UINT /*uMsg*/ , WPARAM /*wParam*/ , LPARAM /*lParam*/ , BOOL & /*bHandled*/ )

{

    // TODO: 在此添加消息处理程序代码和/或调用默认值

    RECT rc = {0};

 

    this ->GetWindowRect (&rc );

 

    m_pWnd = new CATLWnd ();

 

    if ( !::IsWindow (m_pWnd ->m_hWnd ) )

    {

        m_pWnd ->Create (this ->m_hWnd , rc );

    }

    return 0;

}

 

在资源视图中将ID为IDD_ATLWND的对话框属性设置如下

Style设置为Child

Visible设置为True

 

CATLCtrl的构造函数中添加m_bWindowOnly = true ;

代码如下

    CATLCtrl ()

        : m_pWnd (NULL )

    {

        m_bWindowOnly = true ;

    }

调试之后 ,窗口就显示了出来。

 

ATL 安全接口的实现

 

在VC2005实现安全接口很容易只要将控件类CATLCtrl继承 IObjectSafetyImpl 就可以。

具体实现

ATLCtrl .h文件中找到如下代码 将 #ifdef和#endif 注释就完成了

 

#ifdef _WIN32_WCE // 要在Windows CE 上正确加载该控件,要求IObjectSafety

    public IObjectSafetyImpl,

#endif

 

 

#ifdef _WIN32_WCE // 要在Windows CE 上正确加载该控件,要求IObjectSafety

    COM_INTERFACE_ENTRY_IID(IID_IObjectSafety, IObjectSafety)

#endif

 

 

本文在VC2005+ ATL8.0下调试通过

分享到:
评论

相关推荐

    VC中使用ATL编写控件

    总结,使用VC2005和ATL编写ActiveX控件是一种高效的方式,它能够快速地创建具有复杂功能的Windows控件。ATL的模板和宏大大简化了COM编程,使得开发者能够专注于业务逻辑而不是底层细节。通过上述步骤,你可以构建、...

    vc编写ATL ActiveX OCX控件

    3. **实现接口**:在实现文件中编写接口的代码,处理控件的逻辑。 4. **创建资源**:为控件添加必要的资源,如图标、字符串等。 5. **注册控件**:编译后,使用`regsvr32.exe`或工程提供的注册函数将控件注册到系统...

    VC 6.0 ATL方法编写实现ActiveX DLL控件.rar

    VC 6.0使用ATL方法编写实现ActiveX控件,编译最终生成Polygon.dll文件,没有窗口可查看。这个源码是来自国外,源代码含注释,代码规整,在ATL方法编写DLL控件方面,还是很有参考价值的。

    VC界面编写中表格控件源代码

    在描述中提到的"VC界面编写中表格控件源代码"资源,提供了四种不同的表格控件实现,这对于开发者来说是宝贵的参考资料,可以帮助他们深入理解控件的工作原理并自定义自己的控件。 1. **ListView控件**:ListView是...

    一个VC++编写视频采集ATL控件及C#测试

    【标题】"一个VC++编写视频采集ATL控件及C#测试"涉及的主要知识点是使用Visual C++(VC++)开发视频采集功能,利用Active Template Library(ATL)创建COM控件,并结合DirectShow进行视频流处理。同时,还涵盖了如何在C#...

    在RichEdit中是使用一个ATL控件显示图像(包括GIF动画)的例子

    这时,我们需要借助其他手段来实现这一功能,例如使用ATL(Active Template Library)创建自定义控件来嵌入到RichEdit中。 ATL是Microsoft提供的一种轻量级的COM(Component Object Model)编程库,用于简化COM对象...

    VC2008下用ATL开发windows服务

    选择“文件”>“新建”>“项目”,然后在项目模板中选择“ATL COM 控件”。 四、ATL服务模板 幸运的是,VC2008提供了一个ATL服务模板,可以简化服务开发过程。在项目创建过程中,选择“ ATL Simple Service”模板。...

    使用ATL的完整可编写脚本的ActiveX Web控件教程

    1. **设置项目属性**:在Visual C++ 6.0(VC6)环境中,创建一个新的ATL工程,并确保选择“可编写脚本的ActiveX控件”模板。这样会自动为你的控件生成必要的COM接口。 2. **定义接口**:在ATL项目中,你需要定义...

    VC开发实时曲线控件

    1. **ActiveX控件**:ActiveX是微软提出的一种组件技术,它允许开发者创建可重用的代码块,即控件,这些控件可以在多种支持ActiveX的环境中使用。在本例中,我们需要创建一个ActiveX控件来实现曲线显示功能。 2. **...

    VC 调用VB控件的例子.rar

    注册过程会生成一个CLSID(Class ID),这是识别VB控件的独特标识,后续在VC中需要使用这个ID来实例化控件。 2. **在VC中引入COM支持**:在VC项目中,需要包含对COM的支持。对于MFC项目,可以使用`#import`指令导入...

    VC++ 演示ATL编写ActiveX控件的方法

    内容索引:VC/C++源码,控件相关,ATL 本实例向读者展示利用ATL编写ActiveX控件的编程方法,本程序编译运行后直接生成DLL文件,因此没有窗体让大家看,希望通过这个小例子让大家掌握VC++使用ATL编写控件的方法。

    利用ATL编写COM组件.ppt

    学习完这部分内容后,开发者应能熟练掌握ATL编写COM组件的技巧,并能在不同开发环境中灵活运用这些组件,提升软件开发效率。同时,理解COM组件的核心概念和工作原理对于深入理解Windows平台的软件开发至关重要。

    Visual c++ VC COM ATL为Office Word编写插件.zip

    此资源包“Visual C++ VC COM ATL为Office Word编写插件.zip”显然是一个指导如何使用VC++、Component Object Model (COM) 和 Active Template Library (ATL) 创建Microsoft Office Word的插件的教程或项目示例。...

    visual c++ VC COM ATL为Office Excel编写插件.zip

    9. **用户界面设计**:若插件需要自定义用户界面,可以使用MFC(Microsoft Foundation Classes)或者WTL(Windows Template Library)来创建对话框、工具栏等控件。 10. **打包与部署**:完成所有功能后,你需要...

    使用vc6创建activeX控件步骤 c++代码

    在本文中,我们将深入探讨如何使用Visual C++ 6.0(简称VC6)来创建一个...注册完成后,ActiveX控件可以在Web页面中使用。以下是一个简单的HTML和JavaScript示例,展示了如何在网页中调用ActiveX控件的方法: ```html ...

    用VC6编写Office插件

    在这个主题中,我们将深入探讨如何使用Visual C++ 6.0(简称VC6)来创建Office插件。这个压缩包文件包含的"用VC6编写Office插件.doc"文档,很可能是关于此过程的详细指南,涵盖了从基础概念到实际编程技巧的各种知识...

    ATL Coding HelpersATL编码助手(5KB)

    资源在编程中通常指的是应用程序中使用的非代码元素,如图像、图标、字符串、菜单等。在Windows编程中,这些资源通常被编译成二进制资源文件,并链接到可执行文件中。ATL编码助手可能包含了一些处理资源的辅助函数或...

    VC_ATL

    在VC_ATL中,有几个关键的概念和技术: 1. **COM对象**:COM是一种二进制标准,用于组件间的交互。它定义了一种接口规范,使得不同进程甚至不同计算机上的组件可以相互调用方法。ATL提供了一套框架,使得开发者可以...

    visual c++在MFC和ATL工程中使用GIF动画.zip

    - 在MFC工程中,你可以创建一个继承自CStatic的自定义控件,然后在该控件中加载并处理GIF。首先,你需要包含gdiplus.h头文件,并初始化GDI+环境。接着,使用`Gdiplus::Image`类加载GIF文件,然后通过循环调用`Draw`...

Global site tag (gtag.js) - Google Analytics