class ProdelInterface : public COleDispatchDriver
{
public:
ProdelInterface() {} // Calls COleDispatchDriver default constructor
ProdelInterface(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
ProdelInterface(const ProdelInterface& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}// Attributes
public:// Operations
public:
CString OpenDrawing(LPCTSTR defaultpath, LPCTSTR actualcircuit);
CString NewDrawing(LPCTSTR defaultpath);
CString SaveDrawingAs(LPCTSTR defaultpath, LPCTSTR actualcircuit);
};但是用的时候无法用CreateDispatch()进行创建,以至函数无法调用,请问这种问题如何解决!

解决方案 »

  1.   

    另外问问,如何得到一个COleDispatchDriver的继承类?
      

  2.   

    加载类型库,产生包装类来使用
        这个方法使用更简单一些,如果你观察 MFC 帮你产生的包装类的实现,你就会发现,其实它调用的是 IDispatch 接口函数。
    使用 vc6.0 ,步骤如下:
    1、建立一个 MFC 的应用程序
    2、开启 ClassWizard,执行 Add Class,选择 From a type library
    3、然后找到你要使用的组件文件 ProdelInterface.dll(tlb 文件也可以),选择接口后确认.使用 vc.net,步骤如下:
    1、建立一个 MFC 的应用程序
    2、执行菜单“添加\添加类”,选择 MFC 分类中的“类型库中的MFC类”
    3、选择组件文件 ProdelInterface.dll(或 tlb 文件),并选择需要包装的接口.4、在适当的位置输入调用代码
    #include "ProdelInterface.h" // 包装类的头文件void demo()
    {
    // 已经进行过了 COM 初始化 ProdelInterface spDisp;       // 包装类的对象
    spDisp.CreateDispatch( _T("") )  // 启动组件
    spDisp.xxx(...);                // 调用函数 spDisp.ReleaseDispatch();       // 释放接口
    }
      

  3.   

    to armyz1980,
    CreateDispatch()里面的这个参数progID,必须是组建注册后的名才能用吗?
    初学com,不太懂!
      

  4.   

    是啊,组件必须注册才可以啊。因为组件ID和程序ID都是从注册表中取得的啊。我也是初学者啊,可以一起交流啊。