c++ - GET_WHEEL_DELTA_WPARAM 从不返回负数

标签 c++ winapi

我只看到从 GET_WHEEL_DELTA_WPARAM 返回正数,即使当我将鼠标滚轮滚向我时它应该是负数。

case WM_MOUSEWHEEL:
            short wheel_delta = 0;
            wheel_delta = GET_WHEEL_DELTA_WPARAM(Addtl_Info_L);

另外,这个页面 here 表示向前滚动轮子给出一个正数,向后滚动一个负数,而这个页面 here 表示它是左右而不是向前和向后。

这是完整的消息处理程序:

            LRESULT CALLBACK Message_Handler(HWND App_Handle, UINT Message_Type, WPARAM Addtl_Info_W, LPARAM Addtl_Info_L) {
                short wheel_delta(0);
                switch(Message_Type) {
                case WM_MOUSEWHEEL:
                    wheel_delta = GET_WHEEL_DELTA_WPARAM(Addtl_Info_L);
                    if (wheel_delta > 0) {
                        std::wostringstream outs;  
                        outs << "Wheel delta is positive" << std::endl;
                        OutputDebugString(outs.str().c_str());
                        graphics_manager.camera_tilt = graphics_manager.camera_tilt + 0.1f;
                    } else if (wheel_delta < 0) {
                        std::wostringstream outs;  
                        outs << "Wheel delta is negative" << std::endl;
                        OutputDebugString(outs.str().c_str());
                        graphics_manager.camera_tilt = graphics_manager.camera_tilt - 0.1f;
                    }
                    return 0;
                }
                return DefWindowProc(App_Handle, Message_Type, Addtl_Info_W, Addtl_Info_L);
            }

最佳答案

您正在将 LPARAM 传递给 GET_WHEEL_DELTA_WPARAM。您应该传递 WPARAM(Addtl_Info_W,而不是 Addtl_Info_L)。

关于c++ - GET_WHEEL_DELTA_WPARAM 从不返回负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15528752/

相关文章:

c++ - 在 Mac 上找不到 Visual Studio 共享库(Android、iOS) header

c++ - CMake 链接静态库和 Glib 错误

c++ - GetOpenFileName 和系统函数调用运行时错误 c++ win32 api

windows - 在 Windows 中显示 PDF 和网站

c++ - 一秒计时器

c++ - 递归函数中的段错误,将结果存储在 vector 中

python - 为什么在 Python 中为 msvcr100 调用 kernel32.GetModuleHandleA() 失败?

delphi - 如何关闭ie8标签页

c++ - 如何确保我的所有 C++ boost 线程在程序退出之前完成?

循环不打印事件窗口