WEB开发网
开发学院软件开发VC ATL/COM简单工程 阅读

ATL/COM简单工程

 2006-04-11 22:54:44 来源:WEB开发网   
核心提示: 如果你是个VB的程序员,那么这些代码对于你是很直观的:我们声明了一个对象,ATL/COM简单工程(4),并从COM服务器调用“AddNumbers”的方法,然后显示结果,然后按下Ctrl+F5来运行之,你应该可以看到一个DOS窗口,现在按下F5来运行这个VB工程,单

如果你是个VB的程序员,那么这些代码对于你是很直观的:我们声明了一个对象,并从COM服务器调用“AddNumbers”的方法,然后显示结果。现在按下F5来运行这个VB工程,单击命令按钮,你就会看到期望的结果了:

并不是很难吧?那么我们再来一次,这一次用VC++。

第6步:在Visual C++中测试COM服务器

如果你的Simple_ATL工程仍然开着,那么就关了它并创建一个新工程。选择“Win32 Console Application”,起名为“Test_ATL”,在下一个窗口中单击OK按钮接受所有默认值,最后单击Finish按钮。现在,你应该有了一个空工程。那么,按下Ctrl+N为工程加入一个新文件,选择“C++ Source File”并命名为“Test_ATL.cpp”,单击OK接受。你现在应该有了一个打开的空白文件,我们需要在其中添加一些代码来测试COM服务器。代码如下:

// 你需要指明Simple_ATL工程的路径来引用这个头文件
#include "..\Simple_ATL\Simple_ATL.h"
#include <iostream.h>
// 把以下的内容从Simple_ATL工程目录的Simple_ATL_i.c文件中复制过来
// 注意:你也可以直接包含Simple_ATL_i.c文件,我在此只想清楚地表明这些const常量来自何处以及它们的样子
const IID IID_IFirst_ATL =
   {0xC8F6E230,0x2672,0x11D3,
   {0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};
const CLSID CLSID_First_ATL =
   {0x970599E0,0x2673,0x11D3,
   {0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};
void main(void)
{
   // 声明一个HRESULT变量以及一个Simple_ATL接口的指针
   HRESULT     hr;
   IFirst_ATL   *IFirstATL = NULL;
   // 现在初始化COM
   hr = CoInitialize(0);
   // 使用SUCCEEDED宏来看看我们是否能够获得接口的指针
   if(SUCCEEDED(hr))
   {
     hr = CoCreateInstance( CLSID_First_ATL, NULL, 
       CLSCTX_INPROC_SERVER,
       IID_IFirst_ATL, (void**) &IFirstATL);
     // 如果成功了,那么调用AddNumbers方法
     // 否则给用户显示一条适当的信息
     if(SUCCEEDED(hr))
     {
       long ReturnValue;
       IFirstATL->AddNumbers(5, 7, &ReturnValue);
       cout << "The answer for 5 + 7 is: " 
         << ReturnValue << endl;
       IFirstATL->Release(); 
     }
     else
     {
       cout << "CoCreateInstance Failed." << endl;
     }
   }
   // 卸载COM
   CoUninitialize();
}

第7步:编译并运行程序

现在你可以按下F5键来编译程序,然后按下Ctrl+F5来运行之。你应该可以看到一个DOS窗口,给出了你所期望的结果。

上一页  1 2 3 4 

Tags:ATL COM 简单

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接