C语言 响应windows鼠标滚动事件,求指教!

mikithebest 2010-06-06 03:20:50

LRESULT CALLBACK WndProc( HWND hWnd, // 窗口的句柄
UINT uMsg, // 窗口的消息
WPARAM wParam, // 附加的消息内容
LPARAM lParam) // 附加的消息内容
{
switch (uMsg) // 检查Windows消息
{
case 0x020A:/* WM_MOUSEWHEEL*/ //WM_MOUSEWHEEL鼠标滚动
{
if(wParam == 0x00780000)
MouseWheelUp();
if(wParam == 0xff880000)
MouseWheelDown();
break;
}
//其他的我就不写了
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}


由于本人不怎么了解windows编程,不会MFC和C++。有个OpenGL的程序需要使用鼠标缩放视图。
在网上找到的基本都是MFC的,看不懂。
使用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) */
只好使用 0x020A。然后单步跟踪发现:向下滚是wParam = 0xff880000;向上的时候是:0x00780000
想问一下这样写行吗?在其他机器上能通过吗?
...全文
386 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
贪食蛇男 2010-06-16
  • 打赏
  • 举报
回复
看四楼贴出的代码,似乎是开关没打开的样子,你试试define一个_WIN32_WINDOWS 让它大于0x0400
小菩提的尾巴 2010-06-16
  • 打赏
  • 举报
回复
今天我也用到了WM_MOUSEWHEEL这个消息,结果如同楼主一样,最后去论坛搜了一下,问题解决了,参考链接http://topic.csdn.net/t/20031116/15/2463094.html
赵4老师 2010-06-09
  • 打赏
  • 举报
回复
C:\Program Files\Microsoft Visual Studio\VC98\Include\WINUSER.H
1500:#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
1501:#define WM_MOUSEWHEEL 0x020A
1502:#define WM_MOUSELAST 0x020A
1503:#else
1504:#define WM_MOUSELAST 0x0209
1505:#endif /* if (_WIN32_WINNT < 0x0400) */
小菩提的尾巴 2010-06-09
  • 打赏
  • 举报
回复
你把winuser.h换成windows.h看一下,我一般都用windows.h,虽然winuser.h也包含在内。不知道有没有细微的差别。。。仅供查考。。。路过。。。
mikithebest 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cattycat 的回复:]

不是windows的吗,WM_MOUSEWHEEL应该是定义了的,你可能没包含什么头文件。
[/Quote]

是windows 但是WM_MOUSEWHEEL 的确没有定义。头文件winuser.h也包含了
cattycat 2010-06-06
  • 打赏
  • 举报
回复
不是windows的吗,WM_MOUSEWHEEL应该是定义了的,你可能没包含什么头文件。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧