C++ Builder 使用COM
COM开发环境:Visual Studio 2008
注意事件:
- 1.需要包含由Visual Studio 2008生成的COM头文件,类似于 MyAtl_i.c
注册COM
void __fastcall TForm1::ComBtnClick(TObject *Sender)
{
AnsiString dllPath = ExtractFilePath(Application->ExeName) + "MyAtl.dll";
HMODULE hDLL = ::LoadLibrary( dllPath.c_str() );// 动态装载组件
if(hDLL)
{
FREG lpfunc = (FREG)::GetProcAddress( hDLL,"DllRegisterServer"); // 取得注册函数指针
// 如果是反注册,可以取得"DllUnregisterServer"函数指针
if ( lpfunc )lpfunc(); // 执行注册。这里为了简单,没有判断返回值
::FreeLibrary(hDLL);
ShowMessage("注册组件成功!");
}
}
void __fastcall TForm1::BtnShowComMsgClick(TObject *Sender)
{
CoInitialize(NULL);//初始化COM
IMusic* music;
HRESULT hr = CoCreateInstance(Myatllib_tlb::CLSID_Music,NULL,CLSCTX_INPROC_SERVER ,Myatllib_tlb::IID_IMusic,(void**)&music);
if(SUCCEEDED(hr))
{
BSTR v;
music->GetTitle(&v);
this->EditMsg->Lines->Add(AnsiString(v));
this->EditMsg->Lines->Add("创建COM对象成功!");
music->Release();
}
CoInitialize(NULL);
}
相关参考:
COM技术内幕 第七章,类厂 CoCreateInstance 函数


浙公网安备 33010602011771号