vc怎么调用vb写的com
vc怎么调用vb写的com,谢谢 问题点数:100、回复次数:5Top
1 楼happyparrot(快乐鹦鹉)回复于 2005-09-16 15:29:20 得分 0
COM由谁写的并不要紧。Top
2 楼happyparrot(快乐鹦鹉)回复于 2005-09-16 15:30:06 得分 100
以下是调用组件的例程:
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("调用服务组件完成");
}Top
3 楼billyofnk(billyofnk)回复于 2005-09-16 16:07:12 得分 0
_Dialogs类在那儿声明的?如果是倒入类型库怎么导入呢Top
4 楼wshcdr(dd)回复于 2005-09-16 17:32:51 得分 0
呵呵,不知道VB写的COM是不是都是支持分发接口的
谁能回答我?Top
5 楼wshcdr(dd)回复于 2005-09-17 16:33:26 得分 0
_Dialogs类在那儿声明的?如果是倒入类型库怎么导入呢
//////////////////////////////////
直接去导VB生成的那个DLLTop




