演练:Hello World:智能设备的 COM 互操作示例

更新:2007 年 11 月

本演练将一个简单的 COM 对象和一个托管应用程序合并到一个解决方案中。

说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置

本演练使用“Visual C++ 开发设置”编写。

创建 COM 对象

创建智能设备 ATL 项目

  1. 在“文件”菜单上指向“新建”,单击“项目”,在“项目类型”窗格中展开“Visual C++”,然后单击“智能设备”。

  2. 在“模板”窗格中单击“ATL 智能设备项目”。

  3. 在“名称”框中,键入“HelloCOMObject”。

  4. 在“解决方案名称”框中键入“InteropSolution”。

  5. 单击“确定”启动“ATL 智能设备项目向导”。

  6. 单击“完成”关闭向导。

    对于本演练,您不需要更改向导中的任何默认设置。

添加类

  1. 在“解决方案资源管理器”中,右击“HelloCOMObject”项目,指向“添加”,然后单击“类”打开“添加类”对话框。

  2. 在“类别”窗格中单击“智能设备”。

  3. 在“模板”窗格中单击“ATL 简单对象”,然后单击“添加”打开“ATL 简单对象向导”。

  4. 在“简称”框中键入“Hello”。

  5. 在左侧窗格中,单击“选项”打开“选项”页。

  6. 在“线程模型”组中,选择“自由”,然后单击“完成”。

向类添加方法

  1. 从桌面上的选项卡或从“视图”菜单中打开“类视图”窗口。

  2. 展开“HelloCOMObject”以显示“IHello”界面。

  3. 右击“IHello”,指向“添加”,然后单击“添加方法”打开“添加方法向导”。

  4. 在“方法名称”框中,键入“HelloWorld”。

  5. 在“参数类型”框中,选择“BSTR*”。

  6. 在“参数名”框中键入“text”。

  7. 在“参数属性”组中,选择“out”。

  8. 单击“添加”。

    方法框将显示 [out] BSTR* text。

  9. 单击“完成”关闭“添加方法向导”。

    方法 STDMETHOD(HelloWorld)(BSTR* text) 显示在文件 Hello.h 中。

向方法添加实现

  1. 在“解决方案资源管理器”中双击“Hello.cpp”,在代码编辑器中打开该文件。

  2. 在 STDMETHODIMP 节中的返回语句之前插入以下实现代码:

    *text = SysAllocString(L"Hello World!");
    
  3. 在“生成”菜单上单击“生成 HelloCOMObject”。

    一个 COM 对象现在已成为解决方案的一部分。至此,本演练的第一部分已完成。

创建托管项目

向解决方案添加托管项目

  1. 在“解决方案资源管理器”中右击“InteropSolution”,指向“添加”,然后单击“新建项目”。

  2. 在“项目类型”窗格中,展开“Visual C#”,单击“智能设备”,单击“模板”窗格中的“智能设备项目”,在“名称”框中键入“SayHello”,然后单击“确定”。

  3. 在“添加新智能设备项目”对话框中单击“设备应用程序”,再单击“确定”。

    SayHello 托管项目即创建为解决方案的一部分,并且“设计器”窗口中出现一个 Windows Mobile 5.0 Pocket PC 窗体。

将 COM 对象作为托管项目中的引用添加

将 COM 对象作为托管项目中的引用添加

  1. 在“解决方案资源管理器”中,右击“SayHello”项目,然后单击“添加引用”。

  2. 在“添加引用”对话框中,单击“浏览”。

    “SayHello”文件夹即显示在“查找范围”框中。

  3. 定位到父文件夹(在本演练中为“InteropSolution”)。

  4. 在显示文件夹内容的窗口中,依次双击“HelloCOMObject”、“Windows Mobile 5.0 Pocket PC SDK (ARMV4)”、“调试”,然后单击“HelloCOMObject.dll”。

  5. 单击“确定”关闭“添加引用”对话框。

    说明:

    您必须以管理员身份登录。在 Windows Vista 中,请在启动 Visual Studio 时选择“以管理员身份运行”。

  6. 在“解决方案资源管理器”中右击“Form1.cs”,再单击“查看代码”。

  7. 在文件顶部的 Using directives 区域,添加以下代码:

    using HelloCOMObjectLib;
    

向托管项目添加事件处理

向托管项目添加事件处理并生成该事件处理

  1. 打开 Form1 设计器。

  2. 将一个“Button”控件从“工具箱”中拖动到窗体上。

  3. 双击该按钮打开代码编辑器(此时编辑器显示 click 事件)。

  4. 为该按钮插入以下事件处理代码:

    string text;
    HelloClass h = new HelloClass();
    h.HelloWorld(out text);
    MessageBox.Show(text);
    
  5. 在“生成”菜单上单击“生成 SayHello”。

对解决方案进行最后的调整

配置解决方案以进行部署

  1. 在“解决方案资源管理器”中右击“SayHello”项目,再单击“设为启动项目”。

  2. 在“解决方案资源管理器”中右击“InteropSolution”解决方案,再单击“项目依赖项”。

  3. 在“项目依赖项”对话框中,在“项目”下拉列表中选择“SayHello”,然后在“依赖于”框中选择“HelloCOMObject”。

  4. 单击“确定”。

    解决方案此时已可以进行部署。

部署混合解决方案

部署解决方案

  1. 在“调试”菜单上单击“开始执行(不调试)”。

  2. 在“部署”对话框中单击“Windows Mobile5.0 Pocket PC 仿真程序”,再单击“部署”。

保存该解决方案,以便在演练:调试同时包含托管代码和本机代码的解决方案中使用。

请参见

概念

设备的 COM 互操作性

参考

Visual Basic 和 Visual C#(如何实现 - 智能设备)