### ATL学习大全——使用ATL创建COM组件详解 #### 一、引言 在软件开发领域,组件对象模型(COM)是一种跨语言的软件组件接口标准,它允许不同编程语言编写的程序之间进行通信。Microsoft的Active Template Library (ATL)是用于创建高效、轻量级的COM组件的一种强大的工具集。本文将详细介绍如何使用ATL创建一个基本的COM组件,包括创建项目、添加组件及方法的过程。 #### 二、创建模型(工程)MyProj 1. **启动项目**: - 打开Visual C++ 6.0集成开发环境。 - 选择“文件”->“新建”菜单项。 - 在弹出的“新建”对话框中,选择“项目”,然后从项目列表中选择“ATL COM App Wizard”。 2. **配置项目**: - 在“项目名称”框中输入项目名,例如“MyProj”。 - 选择一个合适的存储位置。 - 在“服务器类型”中选择“动态链接库(DLL)”。 - 勾选“支持MFC”选项。 - 完成这些设置后,点击“确定”或“下一步”继续。 #### 三、给模型(工程)增加一个组件MyCom 1. **添加新组件**: - 在VC++菜单栏中选择“插入”->“新建ATL对象…”。 - 在出现的“ATL Object Wizard”对话框中,左侧选择“Objects”,右侧选择“Simple Object”。 - 点击“下一步”按钮。 2. **配置组件**: - 在“ATL Object Wizard”属性对话框中,填写组件的简短名称,如“MyCom”。 - 其他字段会自动生成。 - 完成后点击“确定”。 #### 四、给组件增加方法(函数) 接下来,我们将向组件添加四个不同的方法:`MyF1`、`MyF2`、`MyF3`和`MyF4`。 1. **添加`MyF1`方法**: - 在类视图(Class View)中找到接口`IMyCom`。 - 右键单击并选择“添加方法...”。 - 在对话框中输入方法名称“`MyF1`”。 - 该方法不带参数,返回值类型为`void`。 - 在`.cpp`文件中实现该方法: ```cpp STDMETHODIMP CMyCom::MyF1() { AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here AfxMessageBox(_T("欢迎使用我的组件")); return S_OK; } ``` 2. **添加`MyF2`方法**: - 方法名称为“`MyF2`”,接受一个`BSTR`类型的输入参数`str`,以及一个`int`类型的输出参数`val`。 - 实现代码如下: ```cpp STDMETHODIMP CMyCom::MyF2(BSTR str, int* val) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here CString sStr(str); *val = sStr.GetLength(); return S_OK; } ``` 3. **添加`MyF3`方法**: - 方法名称为“`MyF3`”,接受一个`BSTR`类型的输入参数`str`,返回一个`BSTR`类型的字符串`retstr`。 - 实现代码如下: ```cpp STDMETHODIMP CMyCom::MyF3(BSTR str, BSTR* retstr) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here CString sStr(str); CString sRetstr = _T("组件收到你的信息:<") + sStr + _T(">\n特此告之。"); CComBSTR temp(sRetstr); *retstr = temp; return S_OK; } ``` 4. **添加`MyF4`方法**: - 方法名称为“`MyF4`”,接受一个`int`类型的输入参数`x`,返回一个`int`类型的输出参数`val`。 - 实现代码如下: ```cpp STDMETHODIMP CMyCom::MyF4(int x, int* val) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here *val = x + 1; return S_OK; } ``` 5. **编译项目**: - 保存所有更改并编译项目。 - 在Windows 2000或Windows XP操作系统上,调试目录下将自动生成组件的DLL文件并完成自动注册。 - 对于Windows 98系统,需要手动执行注册命令: ```shell regsrv32 C:\MyProj\Debug\MyProj.dll ``` #### 五、创建COM组件客户端 1. **创建基于对话框的应用程序作为客户端**。 2. **导入服务器类型库**到客户端项目中。 3. **初始化COM库**。 4. **获取服务器的GUID**。 通过以上步骤,我们成功地创建了一个简单的COM组件,并实现了几个基本的功能。这不仅有助于加深对COM组件的理解,也为进一步探索更复杂的COM应用奠定了基础。




























- 漠刀2014-08-11对我来说,这个资料完全没有用处

- 粉丝: 3460
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


