我正在開發一個C++ COM庫來從VB6應用程序中使用它。 .idl文件定義了一些接口和一個類庫與實現這些接口的一些組件類:爲什麼在VB6中COM接口名稱被coclass名稱取代?
[
local,
object,
uuid(....),
version(1.0)
]
interface ICOMCvPixelBuffer : IUnknown
{
....
};
[
local,
object,
uuid(....),
version(1.0)
]
interface ICOMCvBitmap : IUnknown
{
....
HRESULT GetPixelBuffer([retval][out] ICOMCvPixelBuffer** pBuffer);
HRESULT SetPixelBuffer([in] ICOMCvPixelBuffer* pBuffer);
....
};
[
uuid(....),
version(1.0)
]
library COMCvLibrary
{
importlib("stdole32.tlb");
interface ICOMCvBitmap;
interface ICOMCvPixelBuffer;
[
uuid(....),
version(1.0)
]
coclass CCOMCvPixelBuffer
{
[default] interface ICOMCvPixelBuffer;
};
[
uuid(....),
version(1.0)
]
coclass CCOMCvBitmap
{
[default] interface ICOMCvBitmap;
};
};
在VB6的對象瀏覽器顯示CCOMCvBitmap
類爲Sub SetPixelBuffer(pBuffer As CCOMCvPixelBuffer)
的SetPixelBuffer
方法的定義。
爲什麼它不是在.IDL中聲明的Sub SetPixelBuffer(pBuffer As ICOMCvPixelBuffer)
?
是啊,就是這樣。另一個約定是通過在名稱前加下劃線來隱藏接口類型,如_ICOMCvPixelBuffer。 –