#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
#define SM_MOUSEWHEELPRESENT 75
请问其中的#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)是什么意思呢?
谢谢!!
我在看windows程序设计这本书上有SM_MOUSEWHEELPRESENT在VC6.0中不能没有定义。而在winuser.h中有上面定义。
#define SM_MOUSEWHEELPRESENT 75
请问其中的#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)是什么意思呢?
谢谢!!
我在看windows程序设计这本书上有SM_MOUSEWHEELPRESENT在VC6.0中不能没有定义。而在winuser.h中有上面定义。
如果windows版本>=5.0(就是2000)或>=4.0(NT)
WINVER宏在文件windows.h中定义了
Windows 98 and Windows NT 4.0 _WIN32_WINDOWS=0x0410 and WINVER=0x0400
Windows NT 4.0 _WIN32_WINNT=0x0400 and WINVER=0x0400
Windows 98 and Windows 2000 WINVER=0x0500
Windows 2000 _WIN32_WINNT=0x0500 and WINVER=0x0500
Internet Explorer 3.0 _WIN32_IE=0x0300
Internet Explorer 4.0 _WIN32_IE=0x0400
Internet Explorer 5.0 _WIN32_IE=0x0500
---的答案可以了吧!就是表示版本信息的。
me:0x490
2000:0x500
xp:0x510
SM_MOUSEWHEELPRESENT 没有定义。
出现如下编译错误:
f:\mysdk\1\1.h(297) : error C2065: 'SM_MOUSEWHEELPRESENT' : undeclared identifier而在winuser.h中有以下#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
#define SM_MOUSEWHEELPRESENT 75
#endif我的系统是XP应该满足条件呀,为什么会没有定义呢。
例如WINVER >= 0x400
即最低要是Win98虽然你的是WinXP,但是要定义了才行,把下面的代码加到 stdafx.h 中#ifdef WINVER
#undef WINVER
#endif#define WINVER 0x500
我是在看那本经典的《windows程序设计》时的程序。
其中有
SM_MIDEASTENABLED
SM_MOUSEWHEELPRESENT
在头文件中有
#if(WINVER >= 0x0400)
#define SM_CXMENUCHECK 71 /* Use instead of GetMenuCheckMarkDimensions()! */
#define SM_CYMENUCHECK 72
#define SM_SLOWMACHINE 73
#define SM_MIDEASTENABLED 74
#endif /* WINVER >= 0x0400 */
#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
#define SM_MOUSEWHEELPRESENT 75
#endifSM_MIDEASTENABLED没有问题,而后者有问题。
#ifdef WINVER
#undef WINVER
#endif#define WINVER 0x500
放在你要调用SM_MOUSEWHEELPRESENT的文件中就好了
按楼上的说法,在头文件中把WINVER定义成了 0x500 ,那编译后的可执行程序放在低版本的操作系统上运行会有问题吗?