描述:
请问以下两种定义方式有什么不同,为什么只有地2种方式才能在MFC对话框程序中应用?
第一种:
DEFINE_GUID(IID_ISimpleMath,
0x7c8027ea, 0xa4ed, 0x467c, 0xb1, 0x7e, 0x1b, 0x51, 0xce, 0x74, 0xaf, 0x57);
#undef INTERFACE
#define INTERFACE IID_ISimpleMath
DECLARE_INTERFACE_(IHXTOutputProfile, IHXTConfigurationAgent)
第二种:
static const GUID IID_ISimpleMath =
{ 0x7c8027ea, 0xa4ed, 0x467c, { 0xb1, 0x7e, 0x1b, 0x51, 0xce, 0x74, 0xaf, 0x57 } };
//{CA3B37EA-E44A-49b8-9729-6E9222CAE84F}
static const GUID IID_IAdvancedMath =
{ 0xca3b37ea, 0xe44a, 0x49b8, { 0x97, 0x29, 0x6e, 0x92, 0x22, 0xca, 0xe8, 0x4f } };
interface ISimpleMath : public IUnknown
解决方案1:
DEFINE_GUID要和initguid.h一起用
参考http://ms.mblogger.cn/eyes4/posts/6286.aspx
第一种:可以在MFC对话框程序中应用
只要在程序中加
#include <comdef.h>
----------------------------------------------------------------------
DEFINE_GUID 的定义在objbase.h中,它的定义为
#ifndef INITGUID
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C const GUID FAR name
#else
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C const GUID name \
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
#endif // INITGUID