`
zhaohaolin
  • 浏览: 984209 次
  • 性别: 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编写控件

    VC中使用ATL编写控件 vc2005编译通过

    vc编写ATL ActiveX OCX控件

    visual c++编写ATL ActiveX OCX控件

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

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

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

    一个VC++编写视频采集ATL控件ATL 视频采集 DirectShow COM VC

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

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

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

    有关使用ATL的可编写脚本的ActiveX Web控件的文章。

    VB_VB_Active.rar_ActiveX vb_ActiveX-DCOM-ATL_activeX控件_activex_i

    ActiveX控件的应用与工作原理。ActiveX控件的编写,如何为控件安排属性,方法,事件,属性页,持久性存储,控件如何通知容器自身属性的改变。如何注册控件与取消控件注册。在VB和VC中访问ActiveX控件。

    一个在VC中显示各种图片的类,包括显示动态GIF图片

    2,可以在MFC 、WTL、 ATL等框架中,在GUI、 控制台、动态库等程序中直接使用; 2,基于GDI+,能够显示GDI+所支持的所有类型图片; 3,对于单Frame的图片,用CSkinImage类,对于GIF等动态图片请使用CGifImage类,...

    Visual C++开发经验技巧宝典(第19章)

    0940 用ATL编写Windows 服务 679 0941 获取Word文档的属性 681 0942 在程序中导入Word文件 683 0943 在程序中显示PDF文件 684 0944 向IE工具条中添加图标 684 19.2 开发ocx控件 684 0945 在程序中注册...

    闻怡洋VC专题教程ActiveX控件开发 进程/线程控制 文件操作 内存管理

    |------ 2.3 利用ATL(ActiveX模板库)创建ActiveX控件 |------ 2.4 调试并使用ActiveX控件 +-- 第三章 调试技术与异常(错误)处理 |------ 3.1 跟踪与中间过程输出 |------ 3.2 变量/对象合法性检查 |------ 3.3 ...

    JsScript VbScript脚本解析控件

    JosunScript 脚本组件是一个采用ATL技术编写的高效稳定的脚本解析器。 能让你的CS模式程序(Vc、VB、Delphi、BC等)轻松解析VbScript,JavaScript脚本语言。 大大增强你的程序逻辑处理的灵活性和程序的交互能力,轻松...

    VC6风格界面

    ...................\在ATL Browser Helper对象中使用WTL TreeView.doc ...................\在SDI MDI程序的工具条上加入漂亮的标题头.doc ...................\在VC++6.0开发中实现全屏显示.doc ................

    在 Powerpoint2000 中使用 flashVC源代码

    其中flash.dll是用Atl编写的一个复合控件.这个控件为一简单的flash播放器(利用了原始的flash控件).pptaddin.dll是一PowerPoint的插件,主要是为了方便的在Powerpoint中插入flash.dll这个复合控件.压缩包内的三个目录...

    vc++ 应用源码包_6

    演示了在树控件中来回拖动文件的操作 MyPlayer 音乐播放器 内含歌词显示实现源码 ActiveXDemo 演示了装载以及卸载atl控件的操作以及注册操作 ado 登录模块的制作 ado,dao,odbc数据库连接vc代码 演示了不同的...

    VC专题教程

    VC专题教程 -- 第一章 Internet相关开发 打包下载 ------ 1.1 如何编写CGI程序 ------ 1.2 一种更亲切的CGI开发系统WinCGI ------ 1.3 利用ISAPI开发CGI程序 ------ 1.4 利用WinInet开发Internet程序 +-- 第二章 ...

    皮肤控件研究文档,破解后的库文件,皮肤设计工具使用教程

    皮肤控件研究文档,破解后的库文件,皮肤设计工具使用教程 皮肤控件 skin++ skincrafter SkinFeature IrisSkin 我共享的都是本人实际验证过的精品,有文档,破解后的库文件,皮肤设计工具使用教程, 1 软件界面 每...

    Visual C++实践与提高-COM和COM+篇『PDF』

    5.3 在Vsual C++中使用ActiveX控件——例程VCActiveX 5.3.1 创建ActiveX控件包容器程序 5.3.2 加载ActiveX控件 5.3.3 设计时访问控件的属性 5.3.4 运行时访问控件的属性和方法 5.3.5 处理控件的事件 5.4 在Visual ...

    E-VODPlayer ATL Object

    专门为VOD视频点播系统开发。用于控制RealMagic公司的硬解压设备,已测试的型号有EM8300、EM8800,程序使用VC6.0编写,采用了ATL技术,速度快,支持事件回调。已封装成OCX与COM双界面,附VB操作例子源码。

Global site tag (gtag.js) - Google Analytics