diff --git a/EventHandler.cpp b/EventHandler.cpp index 293ff91..a3a7cd0 100644 --- a/EventHandler.cpp +++ b/EventHandler.cpp @@ -97,13 +97,18 @@ int eg3d::EventHandler::processEvent(HWND hwnd, UINT message, WPARAM wParam, LPA case WM_LBUTTONDOWN: et = ET_LMouseDown; + goto MOUSE_CONT; case WM_LBUTTONUP: et = ET_LMouseUp; + goto MOUSE_CONT; case WM_RBUTTONDOWN: et = ET_RMouseDown; + goto MOUSE_CONT; case WM_RBUTTONUP: { et = ET_RMouseUp; + MOUSE_CONT: + auto assigments = mMouseAssignments.equal_range(et); // hozzárendelések elkérése auto rangeBegin = assigments.first; auto rangeEnd = assigments.second; @@ -166,28 +171,41 @@ int eg3d::EventHandler::processEvent(HWND hwnd, UINT message, WPARAM wParam, LPA ClipCursor(nullptr); } } + goto KEYBOARD_CONT; } // DIRECT NINCS BREAK case WM_KEYUP: { et = ET_KeyUp; // esemény típusának beállítása - // esemény lekezelése - if (mKeyAssigments.find(wParam) != mKeyAssigments.end()) + KEYBOARD_CONT: + + auto assigments = mKeyAssigments.equal_range(wParam); // hozzárendelések elkérése + auto rangeBegin = assigments.first; + auto rangeEnd = assigments.second; + + if (rangeBegin == rangeEnd) // ha nincs találat, akkor kilépünk { - CB_AssigmentData cbAData = mKeyAssigments[wParam]; - - EventHandlerCBData cbData; - - cbData.pEH = pThis_EH; // eseménykezelő pointere - cbData.eventType = et; // esemény típusa - cbData.pUser = cbAData.pUser; // előre definiált pointer - - cbData.hwnd = hwnd; // ablak fogantyúja - cbData.message = message; // üzenet - cbData.wParam = wParam; // ... - cbData.lParam = lParam; // ... - - cbAData.pcbFunction(&cbData); + break; } + + // esemény lekezelése + EventHandlerCBData cbData; + + cbData.pEH = pThis_EH; // eseménykezelő pointere + cbData.eventType = et; // esemény típusa + + cbData.hwnd = hwnd; // ablak fogantyúja + cbData.message = message; // üzenet + cbData.wParam = wParam; // ... + cbData.lParam = lParam; // ... + + for (auto iter = rangeBegin; iter != rangeEnd; iter++) + { + if (iter->second.eventType == et) { + cbData.pUser = iter->second.pUser; // előre definiált pointer beállítása + iter->second.pcbFunction(&cbData); // függvény meghívása + } + } + break; } diff --git a/main.cpp b/main.cpp index 102f6a9..e693fc2 100644 --- a/main.cpp +++ b/main.cpp @@ -44,6 +44,7 @@ int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszA CB_AssigmentData cbAData; cbAData.pcbFunction = keyCB; cbAData.pUser = nullptr; + cbAData.eventType = ET_KeyDown; eventHandler.regKeyCB('Z', cbAData); // FPS-mĂ©rĹ‘ callback-fĂĽggvĂ©ny regisztrálása