goto hozzáadva

This commit is contained in:
Wiesner András 2020-03-21 09:35:31 +01:00
parent 11178a3ce8
commit 2e9f2d45d9
2 changed files with 35 additions and 16 deletions

View File

@ -97,13 +97,18 @@ int eg3d::EventHandler::processEvent(HWND hwnd, UINT message, WPARAM wParam, LPA
case WM_LBUTTONDOWN: case WM_LBUTTONDOWN:
et = ET_LMouseDown; et = ET_LMouseDown;
goto MOUSE_CONT;
case WM_LBUTTONUP: case WM_LBUTTONUP:
et = ET_LMouseUp; et = ET_LMouseUp;
goto MOUSE_CONT;
case WM_RBUTTONDOWN: case WM_RBUTTONDOWN:
et = ET_RMouseDown; et = ET_RMouseDown;
goto MOUSE_CONT;
case WM_RBUTTONUP: { case WM_RBUTTONUP: {
et = ET_RMouseUp; et = ET_RMouseUp;
MOUSE_CONT:
auto assigments = mMouseAssignments.equal_range(et); // hozzárendelések elkérése auto assigments = mMouseAssignments.equal_range(et); // hozzárendelések elkérése
auto rangeBegin = assigments.first; auto rangeBegin = assigments.first;
auto rangeEnd = assigments.second; auto rangeEnd = assigments.second;
@ -166,28 +171,41 @@ int eg3d::EventHandler::processEvent(HWND hwnd, UINT message, WPARAM wParam, LPA
ClipCursor(nullptr); ClipCursor(nullptr);
} }
} }
goto KEYBOARD_CONT;
} // DIRECT NINCS BREAK } // DIRECT NINCS BREAK
case WM_KEYUP: { case WM_KEYUP: {
et = ET_KeyUp; // esemény típusának beállítása et = ET_KeyUp; // esemény típusának beállítása
// esemény lekezelése KEYBOARD_CONT:
if (mKeyAssigments.find(wParam) != mKeyAssigments.end())
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]; break;
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);
} }
// 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; break;
} }

View File

@ -44,6 +44,7 @@ int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszA
CB_AssigmentData cbAData; CB_AssigmentData cbAData;
cbAData.pcbFunction = keyCB; cbAData.pcbFunction = keyCB;
cbAData.pUser = nullptr; cbAData.pUser = nullptr;
cbAData.eventType = ET_KeyDown;
eventHandler.regKeyCB('Z', cbAData); eventHandler.regKeyCB('Z', cbAData);
// FPS-mérő callback-függvény regisztrálása // FPS-mérő callback-függvény regisztrálása