LRESULT ControlTrayIcon::windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool *useDefWindowProc) { if (m_inWindowProc) { *useDefWindowProc = true; return 0; } if (m_termination) { m_endEvent.notify(); *useDefWindowProc = true; return 0; } m_inWindowProc = true; switch (uMsg) { case WM_USER + 1: switch (lParam) { case WM_RBUTTONUP: onRightButtonUp(); break; case WM_LBUTTONDOWN: onLeftButtonDown(); break; } break; default: *useDefWindowProc = true; } m_inWindowProc = false; return 0; }
LRESULT ControlTrayIcon::windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool *useDefWindowProc) { if (m_inWindowProc) { // This call is recursive, do not do any real work. *useDefWindowProc = true; return 0; } if (m_termination) { m_endEvent.notify(); *useDefWindowProc = true; return 0; } // Make sure to reset it back to false before leaving this function for any // reason (check all return statements, exceptions should not happen here). m_inWindowProc = true; switch (uMsg) { case WM_USER + 1: switch (lParam) { case WM_RBUTTONUP: onRightButtonUp(); break; case WM_LBUTTONDOWN: onLeftButtonDown(); break; } // switch (lParam) break; default: if (uMsg == WM_USER_TASKBAR) { hide(); } *useDefWindowProc = true; } m_inWindowProc = false; return 0; }
void CB_Event::onEvent(SDL_Event* event) { switch(event->type) { case SDL_KEYDOWN: { onKeyDown(event->key.keysym.sym, (SDL_Keymod)event->key.keysym.mod); break; } case SDL_KEYUP: { onKeyUp(event->key.keysym.sym, (SDL_Keymod)event->key.keysym.mod); break; } case SDL_MOUSEMOTION: { onMouseMove(event->motion.x, event->motion.y, event->motion.xrel, event->motion.yrel, (event->motion.state&SDL_BUTTON(SDL_BUTTON_LEFT))!=0,(event->motion.state&SDL_BUTTON(SDL_BUTTON_RIGHT))!=0,(event->motion.state&SDL_BUTTON(SDL_BUTTON_MIDDLE))!=0); break; } case SDL_MOUSEBUTTONDOWN: { switch(event->button.button) { case SDL_BUTTON_LEFT: { onLeftButtonDown(event->button.x, event->button.y); break; } case SDL_BUTTON_RIGHT: { onRightButtonDown(event->button.x, event->button.y); break; } default: { break; } } break; } case SDL_MOUSEWHEEL: { //onMouseWheel(event->button.button == SDL_BUTTON_WHEELUP, event->button.button == SDL_BUTTON_WHEELDOWN); break; } case SDL_MOUSEBUTTONUP: { switch(event->button.button) { case SDL_BUTTON_LEFT: { onLeftButtonUp(event->button.x, event->button.y); break; } case SDL_BUTTON_RIGHT: { onRightButtonUp(event->button.x, event->button.y); break; } default: { break; } } } case SDL_JOYAXISMOTION: { onJoyAxis(event->jaxis.which, event->jaxis.axis, event->jaxis.value); break; } case SDL_JOYHATMOTION: { onJoyHat(event->jhat.which, event->jhat.hat, event->jhat.value); break; } case SDL_WINDOWEVENT: { switch(event->window.event) { case SDL_WINDOWEVENT_RESIZED: { onResize(event->window.data1, event->window.data2); break; } } break; } case SDL_QUIT: { onExit(); break; } } }