65.9K
CodeProject 正在变化。 阅读更多。
Home

ATL COM 组件中的方法枚举

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (1投票)

2001年5月8日

2分钟阅读

viewsIcon

59016

downloadIcon

554

解释了 ATL COM 中的方法枚举

引言

通常,当我们使用 Visual Basic 或 ASP 中的 COM 对象/控件时,我们会看到方法枚举,例如 ListView.ColumnHeaders.Add (一些参数)。为了在 VC++ 中使用 ATL COM 向导开发此类 COM 组件,该向导允许用户枚举另一个 COM 对象的方法,本文档将帮助您在使用基于 ATL 的 COM 组件在 Visual Basic 和 ASP 环境中实现方法枚举。也可以在 VC++ 中访问它们。以下是在构建此类组件时需要遵循的步骤

开发组件的步骤

  1. 使用 ATL COM 向导创建一个名为 CoolCodeComponent 的 DLL 项目。
  2. 插入一个名为 "coolcode" 的“简单”对象,类名为 Ccoolcode,接口名为 Icoolcode
  3. 将一个名为 EnumMethod 的方法添加到 Icoolcode 接口,如下所示
    HRESULT EnumMethod([out,retval] pEnumComponent *Res)

    注意:这里的 pEnumComponent 是指向要枚举其方法的接口的指针。它将在本文第 8 步的 .IDL 文件中声明为 typedef

  4. 将另一个名为 'EnumComponent' 的“简单”COM 对象插入到工作区,类名为 CEnumComponent,接口名为 IEnumComponent
  5. 向此接口添加两种方法
    HRESULT Add(int x, int y,[out,retval] int *Sum) 

    注意:此方法用于将两个数字相加并返回它们的和

    HRESULT Multiply(int x, int y, [out,retval] int *Mul)

    注意:此方法用于将两个数字相乘并返回它们的积

  6. EnumComponent.cpp 中为上述两种方法提供实现,如下所示
    STDMETHODIMP CEnumComponent::Add(int x, int y, int *Sum)
    {
    	*Sum =  x + y; // Add this line
    	return S_OK;
    }
    STDMETHODIMP CEnumComponent::Multiply(int x, int y, int *Mul)
    {
    	*Mul = x * y; // Add this line
    	return S_OK;
    }
  7. coolcode.h 文件中进行以下更改
    • 添加 EnumComponent 的头文件
      #include "EnumComponent.h"
    • 声明一个成员变量到 CEnumComponent,例如
       public :
            CComPtr<IEnumComponent> pEnumComp;
      
    • 在 coolcode 的构造函数中创建 EnumComponent
      Ccoolcode()
      {
          pEnumComp.CoCreateInstance(CLSID_EnumComponent); // Add this line
      }
    • 在 coolcode 的析构函数中,释放对 IEnumComponent 的接口
      ~Ccoolcode()
      {
          if(pEnumComp != NULL)
      	pEnumComp.Release();
      }
  8. .IDL 文件的更改
    • import "oaidl.idl"; 之前声明一个类型为 IEnumComponent 的变量
      typedef IEnumComponent *pEnumComponent;
  9. coolcode.cpp 中,将以下代码添加到 EnumMethod
    STDMETHODIMP Ccoolcode::EnumMethod(pEnumComponent *Res)
    {
          *Res = pEnumComp; // Add this line
          return S_OK;
    }

现在以 Win32 Release MinDependency 模式构建组件

如何使用

在 Visual Basic 中检查组件

  1. 添加对
    CoolCodeComponent 1.0 Type Library
  2. 将一个命令按钮添加到窗体,并在按钮单击事件中编写以下代码
        Private Sub Command1_Click()
    	   Dim a As New COOLCODECOMPONENTLib.coolcode
                MsgBox a.EnumMethod.Add(10, 12)
                MsgBox a.EnumMethod.Multiply(10, 20)
        End Sub
  3. 当您运行应用程序时,它将在消息框中显示两个方法调用的结果。
© . All rights reserved.