【发布时间】:2010-12-04 01:42:20
【问题描述】:
我正在使用 C++ Builder XE 创建一个 COM 服务器。它的 ProgID 始终是“PROGRAMNAME.CLASSNAME”。
如何更改 ProgID?我想使用“COMPANYNAME.PROGRAMNAME.FUNCTIONALITY”。
一个德尔福的答案可能就足够了。
【问题讨论】:
标签: delphi com c++builder
我正在使用 C++ Builder XE 创建一个 COM 服务器。它的 ProgID 始终是“PROGRAMNAME.CLASSNAME”。
如何更改 ProgID?我想使用“COMPANYNAME.PROGRAMNAME.FUNCTIONALITY”。
一个德尔福的答案可能就足够了。
【问题讨论】:
标签: delphi com c++builder
覆盖工厂的GetProgID 方法。应遵循以下原则:
template <typename T>
class TMyCppComObjectFactory : public TCppComObjectFactory<T>
{
protected:
System::UnicodeString __fastcall GetProgID()
{
return "Company.ProgName.Functionality";
}
public:
__fastcall TMyCppComObjectFactory(Comobj::TComServerObject* ComServer,
Comobj::TComClass ComClass,
const GUID &ClassID,
const System::String ClassName,
const System::String Description,
Comobj::TClassInstancing Instancing,
Comobj::TThreadingModel ThreadingModel) :
TCppComObjectFactory<T>(ComServer, ComClass, ClassID,
ClassName, Description,
Instancing, ThreadingModel)
{
}
};
然后让 COM 服务器的 createFactory() 使用派生工厂。
干杯,
布鲁诺
【讨论】: