演练:Hello World:智能设备的 COM 互操作示例
更新:2007 年 11 月
本演练将一个简单的 COM 对象和一个托管应用程序合并到一个解决方案中。
说明: |
---|
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置。 |
本演练使用“Visual C++ 开发设置”编写。
创建 COM 对象
创建智能设备 ATL 项目
在“文件”菜单上指向“新建”,单击“项目”,在“项目类型”窗格中展开“Visual C++”,然后单击“智能设备”。
在“模板”窗格中单击“ATL 智能设备项目”。
在“名称”框中,键入“HelloCOMObject”。
在“解决方案名称”框中键入“InteropSolution”。
单击“确定”启动“ATL 智能设备项目向导”。
单击“完成”关闭向导。
对于本演练,您不需要更改向导中的任何默认设置。
添加类
在“解决方案资源管理器”中,右击“HelloCOMObject”项目,指向“添加”,然后单击“类”打开“添加类”对话框。
在“类别”窗格中单击“智能设备”。
在“模板”窗格中单击“ATL 简单对象”,然后单击“添加”打开“ATL 简单对象向导”。
在“简称”框中键入“Hello”。
在左侧窗格中,单击“选项”打开“选项”页。
在“线程模型”组中,选择“自由”,然后单击“完成”。
向类添加方法
从桌面上的选项卡或从“视图”菜单中打开“类视图”窗口。
展开“HelloCOMObject”以显示“IHello”界面。
右击“IHello”,指向“添加”,然后单击“添加方法”打开“添加方法向导”。
在“方法名称”框中,键入“HelloWorld”。
在“参数类型”框中,选择“BSTR*”。
在“参数名”框中键入“text”。
在“参数属性”组中,选择“out”。
单击“添加”。
方法框将显示 [out] BSTR* text。
单击“完成”关闭“添加方法向导”。
方法 STDMETHOD(HelloWorld)(BSTR* text) 显示在文件 Hello.h 中。
向方法添加实现
在“解决方案资源管理器”中双击“Hello.cpp”,在代码编辑器中打开该文件。
在 STDMETHODIMP 节中的返回语句之前插入以下实现代码:
*text = SysAllocString(L"Hello World!");
在“生成”菜单上单击“生成 HelloCOMObject”。
一个 COM 对象现在已成为解决方案的一部分。至此,本演练的第一部分已完成。
创建托管项目
向解决方案添加托管项目
在“解决方案资源管理器”中右击“InteropSolution”,指向“添加”,然后单击“新建项目”。
在“项目类型”窗格中,展开“Visual C#”,单击“智能设备”,单击“模板”窗格中的“智能设备项目”,在“名称”框中键入“SayHello”,然后单击“确定”。
在“添加新智能设备项目”对话框中单击“设备应用程序”,再单击“确定”。
SayHello 托管项目即创建为解决方案的一部分,并且“设计器”窗口中出现一个 Windows Mobile 5.0 Pocket PC 窗体。
将 COM 对象作为托管项目中的引用添加
将 COM 对象作为托管项目中的引用添加
在“解决方案资源管理器”中,右击“SayHello”项目,然后单击“添加引用”。
在“添加引用”对话框中,单击“浏览”。
“SayHello”文件夹即显示在“查找范围”框中。
定位到父文件夹(在本演练中为“InteropSolution”)。
在显示文件夹内容的窗口中,依次双击“HelloCOMObject”、“Windows Mobile 5.0 Pocket PC SDK (ARMV4)”、“调试”,然后单击“HelloCOMObject.dll”。
单击“确定”关闭“添加引用”对话框。
说明: 您必须以管理员身份登录。在 Windows Vista 中,请在启动 Visual Studio 时选择“以管理员身份运行”。
在“解决方案资源管理器”中右击“Form1.cs”,再单击“查看代码”。
在文件顶部的 Using directives 区域,添加以下代码:
using HelloCOMObjectLib;
向托管项目添加事件处理
向托管项目添加事件处理并生成该事件处理
打开 Form1 设计器。
将一个“Button”控件从“工具箱”中拖动到窗体上。
双击该按钮打开代码编辑器(此时编辑器显示 click 事件)。
为该按钮插入以下事件处理代码:
string text; HelloClass h = new HelloClass(); h.HelloWorld(out text); MessageBox.Show(text);
在“生成”菜单上单击“生成 SayHello”。
对解决方案进行最后的调整
配置解决方案以进行部署
在“解决方案资源管理器”中右击“SayHello”项目,再单击“设为启动项目”。
在“解决方案资源管理器”中右击“InteropSolution”解决方案,再单击“项目依赖项”。
在“项目依赖项”对话框中,在“项目”下拉列表中选择“SayHello”,然后在“依赖于”框中选择“HelloCOMObject”。
单击“确定”。
解决方案此时已可以进行部署。
部署混合解决方案
部署解决方案
在“调试”菜单上单击“开始执行(不调试)”。
在“部署”对话框中单击“Windows Mobile5.0 Pocket PC 仿真程序”,再单击“部署”。
保存该解决方案,以便在演练:调试同时包含托管代码和本机代码的解决方案中使用。