WM_MOUSEWEEL停止工作,而WinAPI(C++)中的其他事件仍在工作
WM_MOUSEWHEEL stops working while other events still works on in WinAPI (C++)
我的c++WinAPI应用程序中出现了一个奇怪的问题。
当我运行我的应用程序时,滚动会工作,每次使用它时我都会看到MessageBox。但是,然后,我点击这里和那里,改变窗口,回到我的。。。一切正常,除了鼠标滚动(程序不会接收消息,也不会出现MessageBox,而例如LBM、RBM和按键工作得很好,程序会对它们做出反应)。
这可能是由于我在程序中执行的SetCapture/ReleaseCapture如果不是,那么除了鼠标滚动(从一开始就有效)之外,是什么原因导致了这种奇怪的行为
我有典型的循环:
while(GetMessage (&msg, NULL, 0, 0) > 0){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
我的事件处理程序:
LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ){
switch(message){
case WM_MOUSEMOVE:
{
//fun stuff here
}
break;
case WM_MOUSEWHEEL:
{
MessageBox(NULL, L"MouseWheel", L"MouseWheel", NULL);
//even more fun stuff here
}
break;
case WM_CREATE:
{
}
break;
case WM_CTLCOLORSTATIC:
{
//...
return (LRESULT)GetStockObject(NULL_BRUSH);
}
break;
case WM_PAINT:
engine->render();
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
{
//fun stuff
}
break;
case WM_LBUTTONUP:
{
//fun stuff
}
break;
case WM_CHAR:
switch(wParam){
//...
}
break;
case WM_SETCURSOR:
view->refreshCursor();
break;
case WM_KEYDOWN:
switch (wParam){
/...
}
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
也许是因为我的窗口没有激活?LMB将发挥作用,因为它也将使其活跃。但是当我的窗口不活动时,悬停(用鼠标移动完成)仍然有效。如何在窗口不活动的情况下捕捉鼠标滚轮?
当鼠标滚轮旋转时发送到焦点窗口。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645617(v=vs.85).aspx
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- Android NDK传感器向事件队列报告奇怪的间隔
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- 从文本文件中读取时钟时间和事件时间并进行处理
- WMI检测进程创建事件-c++
- QWidget收听其他QWidgets事件
- 在另一个 QThread 上运行成员方法时,无法将事件发送到其他线程拥有的对象
- 如何在C 中等待一组线程或其他事件
- 了解其他课程发生的事件
- WM_MOUSEWEEL停止工作,而WinAPI(C++)中的其他事件仍在工作
- Win32 将同步事件发送到其他进程
- Qt从其他线程向事件循环添加函数调用
- MFC OnTimer从其他地方接收额外事件
- QObject::installEventFilter():无法为其他线程中的对象筛选事件
- 如何在其他类的嵌套循环中获得主事件循环QCoreApplication,以实现网络操作
- iPhone和其他移动设备上c++事件处理的最佳方式