#include <unknwn.h> //* struct ISimpleMsgBox : public IUnknown { // IUnknown 方法 STDMETHOD_(ULONG, AddRef)() PURE; STDMETHOD_(ULONG, Release)() PURE; STDMETHOD(QueryInterface)(REFIID riid, void** ppv) PURE; // ISimpleMsgBox 方法 STDMETHOD(DoSimpleMsgBox)(HWND hwndParent, BSTR bsMessageText) PURE; }; //*/ //STDMETHOD()包含virtual关键字,返回类型和调用规范。 //STDMETHOD_()也一样,除非你指定不同的返回类型。 //PURE扩展了C++的“=0”,使此函数成为一个纯虚拟函数。 STDMETHOD()和STDMETHOD_()有对应的宏用于方法实现 ——STDMETHODIMP和STDMETHODIMP_()。例如DoSimpleMsgBox()的实现: STDMETHODIMP CSimpleMsgBoxImpl::DoSimpleMsgBox ( HWND hwndParent, BSTR bsMessageText ) { ...} STDMETHODIMP_(ULONG)