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工程,单击命令按钮,你就会看到期望的结果了: