<Win32_0>error C2065: 'WM_MOUSEWHEEL' : undeclared identifier 解决方案

今天在写一个关于响应WM_MOUSEWHEEL(鼠标滚轮)消息的程序中 , 用vc++6.0编译器编译时 , 却发现编译没通过 , 提示如下:

error C2065: 'WM_MOUSEWHEEL' : undeclared identifier

error C2051: case expression not constant

 

从英文表面意思上可以知道 , WM_MOUSEWHEEL这个没有定义 , 不可识别

但是仔细一看 , WM_MOUSEWHEEL也没有输入错误啊???

那到底是什么原因呢?

 

下面我讲两个我了解到的解决方案:

(1)

……

我先看了一会儿MSDN (API)  , 没发觉什么异常

……

我再看了一下头文件(windows.h):

当然不是从头到尾看windows.h , 而是在VC++6.0中选中WM_MOUSEWHEEL ,

然后右键  , 选择"Go To Definition Of WM_MOUSEWHEEL"

然后看到如下声明:

#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
#define WM_MOUSEWHEEL                   0x020A
#define WM_MOUSELAST                    0x020A
#else
#define WM_MOUSELAST                    0x0209
#endif /* if (_WIN32_WINNT < 0x0400) */

 

从上面不难发现WM_MOUSEWHEEL的定义是有先决条件的 , 那就是

_WIN32_WINNT和_WIN32_WINDOWS二者之一大于ox0400

 

而vc++默认值情况下 , 这两个都是没有定义的  , 于是这段代码实际上是没有执行的

 

看到这儿 , 可能你就知道要怎么做了吧?

对 , 我们必须在添加windows.h头文件之前  , 先修改

_WIN32_WINNT或_WIN32_WINDOWS的值 , 以使它们的值大于ox0400

这样WM_MOUSEWHEEL就有了定义 , 编译也就通过了

 

具体如下:

#define _WIN32_WINNT 0x0401//只要比ox0400大就行 , 但是必须在头文件之前
#include<windows.h>

//......
//书写代码
//......


 

(2)

如果你觉得这样会比较麻烦 , 那么你可以升级你的编译器 , 使用vs2008或者更高版本 ,

因为更高版本对于_WIN32_WINNT是有定义的 , 而且是ox0600 , 比ox0400大 ,

那么那段头文件代码也就执行了

WM_MOUSEWHEEL也就有了定义 , 我们也可以使用这个消息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值