vc怎么调用vb写的com,谢谢

解决方案 »

  1.   

    以下是调用组件的例程:
    void CTest2Dlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    HRESULT hresult;
        CLSID clsid; CoInitialize(NULL);   //初始化COM接口 hresult=CLSIDFromProgID(OLESTR("test.dialogs"), &clsid);    //得到组件的CLSID               _Dialogs *t;        //这就是我们在PRJADO.DLL中定义的类 hresult=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(_Dialogs),(LPVOID *) &t);//初始化CLSADO,CoCreateInstance()的第一个参数是对象的CLSID(类代码),这个128位的编码唯一地标识了组件服务,它的路径和运行参数等信息都放在系统注册表中;第二个参数一般情况下设为NULL;第三个参数用来指明对象的运行环境,如远程或本地,此处设为CLSCTX_INPROC_SERVER,标明是服务组件是一个DLL;第四个参数指明用来与对象通信接口的ID,这也是一个128位的编码;第五个参数是用来接收对象的接口指针。 if(FAILED(hresult))
    {
           AfxMessageBox("初始化服务组件失败");
           return;
    }     //如果初始化失败,弹出提示对话框后退出程序
    CString str;

        (_bstr_t)str=t->ShowDialog((_bstr_t)("abc"),true); 
        AfxMessageBox((CString)str);
    //调用初始化函数//       t->ado_add("从VC调用组件") ;  //调用增加记录函数//t->ado_UnInit ();//调用关闭连接函数t->Release();   //释放接口指针CoUninitialize();  //  关闭COM库的联接AfxMessageBox("调用服务组件完成");
    }
      

  2.   

    _Dialogs类在那儿声明的?如果是倒入类型库怎么导入呢
      

  3.   

    呵呵,不知道VB写的COM是不是都是支持分发接口的
    谁能回答我?
      

  4.   

    _Dialogs类在那儿声明的?如果是倒入类型库怎么导入呢
    //////////////////////////////////
    直接去导VB生成的那个DLL