VC-ATL-COM-新手入门教程(VS2010)

  • 格式:docx
  • 大小:557.27 KB
  • 文档页数:7

第1步:创建ATL项目

启动VS 2010并创建一个新的工程,选择“ATL项目”,工程名为“Simple_ATL"。设置好工程的路径之后,单击“确定”按钮.

打开向导,并点击“下一步"

请确认应用程序类型选为“动态链接库(DLL)”.其余选项为默认值。

点击“完成”。

第2步:创建一个新的ATL对象

在“类视图"中,应该会看到“Simple_ATL”,在此右击鼠标键,并在弹出菜单中选择“添加”->“类",在出现的对话框中选择“ATL简单对象",点击“添加”

在“ATL简单对象向导”对话框中,在“简称”文本框中输入“First_ATL”。请注意,这时候向导就会自动地填写其它的文本框。

然后,单击左部的“选项”标签,在这里你需要做一些选择.“线程模型"选择默认的“单元”模型.对于“接口”,选择“双重"。最后,因为我们的程序与“聚合”无关,所以我们选择“否”。其它的选择默认值.单击“完成”,这时候向导就会为我们创建一个新的ATL简单对象。

第3步:添加一个方法

如果你现在在工作区中单击了“ClassView”标签,那么你会注意到向导在其中添加了一串东西。我们想添加的第一个东西是一个方法,可以在“IFirst_ATL"上右击鼠标键,并选择“添加"—>“添加方法”,打开“添加方法向导”窗口.在返回值类型(Return Type)处你会看到,这个方法会默认返回HRESULT,在大多数情况下你不需要改变它.下一个文本框允许我们输入方法的名称,我们可以输入“AddNumbers”.下面的组合框是让我们输入参数的,由于我们想做两个数的相加并获得一个返回的结果,所以我们需要三个参数,并且最后一个参数是一个指针。三个参数如下,并单击“完成"按钮。

在“类视图”,你会在类(CFirst_ATL)的下方看到我们的“AddNumbers”方法以及我们给予它的参数.

在这个方法上双击鼠标键,并插入以下的代码:

STDMETHODIMP CFirst_ATL::AddNumbers(LONG Num1, LONG Num2,

LONG* ReturnVal)

{

// TODO: 在此添加实现代码

*ReturnVal = Num1 + Num2;

return S_OK;

第4步:编译DLL

如果出现以下错误:

1>C:\Program Files (x86)\MSBuild\Microsoft。Cpp\v4.0\Microsoft。CppCommon.targets(744,5): warning MSB3075: 命令“regsvr32

/s ”c:\users\gl\documents\visual studio 2010\Projects\Simple_ATL\Debug\Simple_ATL。dll"”已退出,代码为 5。请验证您是否有足够的权限来运行此命令。

1> 上一错误已转换为警告,因为调用任务时指定了 ContinueOnError=true。

1〉 继续生成,因为任务“Exec"的“ContinueOnError”设置为“true”。

1〉C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4。0\Microsoft。CppCommon.targets(756,5): error MSB8011: 未能注册输出。请尝试启用“逐用户重定向”,或者使用提升的权限从命令提示符处注册该组件.

1〉

1〉生成失败。

1〉

请使用管理员身份来运行VS 2010,并重新编译项目。

第5步:在Visual Basic中调用COM组件

启动VB,并选择“Windows窗体应用程序”,并建立工程,工程名为“TestCOMApp”。

在对话框上放置一个命令按钮。现在,我们需要添加COM服务器的引用,请单击“项目”菜单并选择“添加引用",在“COM”选项卡中找到“Simple_ATLLib”并选择它.

双击先前放置的命令按钮,VB会切换到这个按钮的代码窗口。添加以下的代码:

Private Sub Button1_Click(sender As System。Object, e As System.EventArgs)

Handles Button1。Click

Dim objTestATL As Simple_ATLLib.First_ATL

objTestATL = New Simple_ATLLib.First_ATL

Dim lngReturnValue As Long

objTestATL。AddNumbers(5, 7, lngReturnValue)

MsgBox("The value of 5 + 7 is: ” & lngReturnValue)

objTestATL = Nothing

End Sub

运行这个VB工程,单击命令按钮,你就会看到期望的结果了: