Mausklick und WM_LBUTTONDOWN wird nicht ausgelöst?
-
hi,
nach mehreren Testläufen, musst ich festellen. Das etwa 1% aller WM_LBUTTONDOWN nicht ausgelöst werden...
Wenn ich 200 mal klicke müsst ich ja 200/200 haben und nicht 200/198 ?
Wie erreich ich 200/200 ?int upCounter = 0; int downCounter = 0; LRESULT CALLBACK Win32Window::MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CREATE: { return 0; } case WM_PAINT: { return 0; } case WM_RBUTTONUP: { return 0; } case WM_LBUTTONUP: { upCounter++; SetWindowText(hWnd, (std::to_wstring(upCounter) + L"|" + std::to_wstring(downCounter)).c_str()); return 0; } case WM_MOUSEMOVE: { return 0; } case WM_LBUTTONDOWN: { downCounter++; SetWindowText(hWnd, (std::to_wstring(upCounter) + L"|" + std::to_wstring(downCounter)).c_str()); return 0; } case WM_LBUTTONDBLCLK: { return 0; } case WM_RBUTTONDBLCLK: { return 0; } case WM_RBUTTONDOWN: { return 0; } case WM_MOUSEWHEEL: { return 0; } case WM_CHAR: { return 0; } case WM_KEYDOWN: { return 0; } case WM_SIZE: { return 0; } case WM_MOVE: { return 0; } case WM_CLOSE: { unfinished = false; DestroyWindow(hWnd); return 0; } case WM_DESTROY: { unfinished = false; if (!GetParent(hWnd)) { PostQuitMessage(0); } return 0; } default:return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }
static LRESULT CALLBACK Win32Window::WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { Win32Window* that = (Win32Window*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (msg == WM_CREATE) { that = (Win32Window*)(((LPCREATESTRUCT)lParam)->lpCreateParams); // SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast<LPARAM>(that)); } if (that) { return that->MsgProc(hWnd, msg, wParam, lParam); } else { return DefWindowProc(hWnd, msg, wParam, lParam); } }
-
Up-Messages/Down-Messages
200/164
200/186
200/187Auch bei "leerer" Schleife:
while (unfinished == true && error == false) { if (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } }
Auch eine andere Maus führt zum selben ergebnis...
-
DieMaus schrieb:
Wenn ich 200 mal klicke müsst ich ja 200/200 haben und nicht 200/198 ?
Nein, da können auch Doppelklicks dabei sein, die du nicht zählst.
DieMaus schrieb:
Wie erreich ich 200/200 ?
Langsamer klicken.
-
Das war das Problem...
Vielen vielen Dank!!