ATLamp;WTL第六部分.docxVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ATL

第六部分 - 掌控 ActiveX 控件下载示例工程 - 63.2 KB内容简介以 AppWizard 开始创建工程生成的代码使用资源编辑器添加控件用于掌控控件的 ATL 类CAxDialogImplAtlAxWin 和 CAxWindow调用控件的方法接收控件激发的事件在 VC 6 里添加处理器在 VC 7 里添加处理器事件的知会VC 6 里的知会VC 7 里的知会示例工程概述运行时创建 ActiveX 控件键盘处理下一步修订历史简介在这第六部分里,我将介绍 ATL 对在对话框中掌控(hosting)ActiveX 控件的支持。由于 ActiveX 控件是 ATL 的专项,所以这儿并没有相关的 WTL 类。不过,因为 ATL 掌控控件的方式与 MFC 迥异,所以这是我们要介绍的一个重要主题。我会介绍如何掌控控件以及接收(sink)事件,并开发一个相比用 MFC 的 ClassWizard 写就的应用毫无功能损失的应用程序。当然,你可以在你写的 WTL 应用中使用 ATL 对控件掌控的支持。本文的示例工程演示了如何掌控 IE 的 Web 浏览器控件。我选择浏览器控件是基于以下两个不错的理由:每个人的机器上都有它,而且它有很多方法并会激发(fire)很多事件,因此用于演示目的,它是确是个很好的控件。我肯定比不上那些花了很多时间使用 IE 的 Web 浏览器控件编写定制浏览器的人们。但是,通读本文之后,你就会有足够的知识开始编写你自己的定制浏览器了!以 AppWizard 开始创建工程WTL 的 AppWizard 可以为我们创建马上就能掌控 ActiveX 控件的应用。下面我们要创建一个称为?IEHoster?的新工程。像上一章一样,我们要使用一个非模态对话框,只不过这次要把?Enable ActiveX Control Hosting?复选框选中,就象这样:选中这个复选框会使得我们的主对话框从?CAxDialogImpl?中派生,因此能够掌控 ActiveX 控件。在 VC 6 的向导里,在第二页上还有另外一个复选框,其文字为?Host ActiveX Controls,但是选中它对结果代码没有任何影响,所以在第一页里就可以点击 Finish 按钮完成了。生成的代码在这一节里,我会先介绍一些原来没有见过的由 AppWizard 生成的代码片断;下一节里,我再详细介绍 ActiveX 掌控类。第一个需要检视的文件是 stdafx.h,其中的包含文件有:#include atlbase.h#include atlapp.hextern CAppModule _Module;#include atlcom.h#include atlhost.h#include atlwin.h#include atlctl.h// .. other WTL headers ...atlcom.h 和 atlhost.h 相对重要。它们包括了一些 COM 相关的类(比如智能指针?CComPtr),以及用来掌控控件的窗口类。接下来,再看 maindlg.h 中?CMainDlg?的声明:class CMainDlg : public CAxDialogImplCMainDlg, public CUpdateUICMainDlg, public CMessageFilter, publicCIdleHandlerCMainDlg?现在是派生于?CAxDialogImpl,后者是使对话框能够掌控 ActiveX 控件的第一步。最后,是?WinMain()?中的一行新代码:int WINAPI _tWinMain(...){//... _Module.Init(NULL, hInstance);AtlAxWinInit();intnRet = Run(lpstrCmdLine, nCmdShow); _Module.Term(); returnnRet;}AtlAxWinInit()?注册了一个名为?AtlAxWin?的窗口类。该类在 ATL 为 ActiveX 控件创建宿主窗口时使用。由于 ATL 7 的一个改动,你必须给?_Module.Init()?传递一个 LIBID。论坛中的一些人建议在 VC 7 中使用如下代码: _Module.Init(NULL, hInstance, LIBID_ATLLib);这个改动在我这儿工作的很好。使用资源编辑器添加控件ATL 允许你象在 MFC 应用中一样使用资源编辑器向对话框上添加 ActiveX。首先,在对话框编辑器中右击,选择?Insert ActiveX control:VC 会显示一个你的系统上所安装的控件的列表。向下

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档