标题:为什么我在win32程序中不能用WM_MOUSEWHEEL?
只看楼主
Whnight
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-14
 问题点数:0 回复次数:7 
为什么我在win32程序中不能用WM_MOUSEWHEEL?
我的工程是win32窗口程序,在消息循环的switch中加入case:WM_MOUSEWHEEL,但编译器报告WM_MOUSEWHEEL无法识别(error C2065: 'WM_MOUSEWHEEL' : undeclared identifier),
我用来源浏览器找到WM_MOUSEMOVE(这个消息可以识别到),发现WM_MOUSEWHEEL就在WM_MOUSEMOVE之后几行出现。但WM_MOUSEMOVE被限定在某个条件定义中:
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
而WM_MOUSEMOVE则没有限定。。。。
为什么会这样?怎么解决?怎样才能在我的程序中用“鼠标滚轮”的消息?
搜索更多相关主题的帖子: 程序中 MOUSEWHEEL 浏览器 鼠标 MOUSEMOVE 
2007-11-27 19:08
Whnight
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-14
得分:0 
另外,在win32程序中怎样获取鼠标滚轮的滚动方向和转动量?
2007-11-27 19:10
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
得分:0 
WM_MOUSEWHEEL
定义在winuser.h 只要包含windows.h就可
方向在wParam高位中,正值为向前,负值为向后.

=×&D o I p R e E n C g T l X&×=
2007-11-27 21:23
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
得分:0 
定义一下这个宏
#define   _WIN32_WINNT           0x0400

注意要在windows.h之前定义哦!

=×&D o I p R e E n C g T l X&×=
2007-11-27 21:35
Whnight
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-14
得分:0 
版主果然神通广大~

不过我不太明白这个0x0400 的意义。。。。是代表windows版本吗?

另外,滚轮转动量可以用wParam直接获得吗?
2007-11-28 08:53
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
得分:0 
在winuser.h中这样定义这个宏
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
#define WM_MOUSEWHEEL                   0x020A
#endif

所以这定义这个宏就是为了使用 Windows NT 4 或更高版本的特定功能

=×&D o I p R e E n C g T l X&×=
2007-11-28 12:02
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
得分:0 
之于滚轮转动量,得到的是一个定值(好象是120~ -120).

=×&D o I p R e E n C g T l X&×=
2007-11-28 12:04
AaronWoo
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2007-9-25
得分:0 
又学到一些知识了,呵呵
2007-11-29 14:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-188794-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.335584 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved