描述:
我写了个类要继承现有的接口,这是DirectShow中的IDDrawExclModeVideoCallback
它有三个方法,我在类中已分别实现了,可在IDL中怎么把方法描述写出来呢?
class ATL_NO_VTABLE CROverlayCallback :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CROverlayCallback, &CLSID_ROverlayCallback>,
public IDispatchImpl<IROverlayCallback, &IID_IROverlayCallback, &LIBID_BPLAYERLib>,
public IDDrawExclModeVideoCallback
{
DECLARE_REGISTRY_RESOURCEID(IDR_ROVERLAYCALLBACK)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CROverlayCallback)
COM_INTERFACE_ENTRY(IROverlayCallback)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IDDrawExclModeVideoCallback)
END_COM_MAP()
//
// IDDrawExclModeVideoCallback interface methods
//
STDMETHODIMP OnUpdateOverlay(BOOL bBefore,
DWORD dwFlags,
BOOL bOldVisible,
const RECT *prcSrcOld,
const RECT *prcDestOld,
BOOL bNewVisible,
const RECT *prcSrcNew,
const RECT *prcDestNew) ;
STDMETHODIMP OnUpdateColorKey(COLORKEY const *pKey,
DWORD dwColor) ;
STDMETHODIMP OnUpdateSize(DWORD dwWidth, DWORD dwHeight,
DWORD dwARWidth, DWORD dwARHeight) ;
// IROverlayCallback
public:
};
//-------------------------------------------------------------
现在它在IDL文件中是这样的:
[
object,
uuid(96894EB7-10DC-4BE4-88C1-86E16C59C64E),
dual,
helpstring("IROverlayCallback Interface"),
pointer_default(unique)
]
interface IROverlayCallback : IDispatch
{
};
是不是我不写的话,这个接口也能正常工作?
在DirectShow的库中有这个接口的IDL描述:
/* HRESULT OnUpdateOverlay(
[in] BOOL bBefore, // After UpdateOverlayCalled?
[in] DWORD dwFlags,// _AM_OVERLAY_NOTIFY enum
[in] BOOL bOldVisible,
[in] const RECT *prcOldSrc,
[in] const RECT *prcOldDest,
[in] BOOL bNewVisible,
[in] const RECT *prcNewSrc,
[in] const RECT *prcNewDest);
// Called when the surface color key is changed
HRESULT OnUpdateColorKey(
[in] const COLORKEY *pKey,
[in] DWORD dwColor);
// Called when the video size or aspect ratio changes
HRESULT OnUpdateSize( [in] DWORD dwWidth, // Movie pixel width
[in] DWORD dwHeight, // Movie pixel height
[in] DWORD dwARWidth, // Aspect ratio horizontal
[in] DWORD dwARHeight); // Aspect ratio vertical
*/
但如果我照它抄下来后,编译时说:
C:\VC6PRJ\DXPlayer\BPlayer.idl(100) : error MIDL2025 : syntax error : expecting a type specification or a storage specifer or a type qualifier near "COLORKEY"
C:\VC6PRJ\DXPlayer\BPlayer.idl(100) : error MIDL2026 : cannot recover from earlier syntax errors; aborting compilation
请问是什么原因呢?
解决方案1:
我靠,你都把我搞糊涂了,你究竟要干什么?