LRESULT CALLBACK wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CLOSE: if(MessageBoxA(hwnd, "Do you want to close Perception?", "Perception", MB_YESNO) == IDYES) exit(-1); else return 0; case WM_MOUSEMOVE: if(!tracking_mouse) { tracking_mouse = true; mouse_connected(); } break; case WM_LBUTTONDOWN: mouse_button_down(0); break; case WM_LBUTTONUP: mouse_button_up(0); break; case WM_MBUTTONDOWN: mouse_button_down(1); break; case WM_MBUTTONUP: mouse_button_up(1); break; case WM_RBUTTONDOWN: mouse_button_down(2); break; case WM_RBUTTONUP: mouse_button_up(2); break; case WM_XBUTTONDOWN: mouse_button_down(HIWORD(wParam) == XBUTTON1 ? 3 : 4); break; case WM_XBUTTONUP: mouse_button_up(HIWORD(wParam) == XBUTTON1 ? 3 : 4); break; break; case WM_MOUSELEAVE: if(tracking_mouse) { tracking_mouse = false; mouse_disconnected(); } break; } return DefWindowProc(hwnd,msg,wParam,lParam); }
void mouse_button(int bnumber, int state) { switch (bnumber) { case SDL_BUTTON_LEFT: mouse_button_left(state); break; case SDL_BUTTON_MIDDLE: mouse_button_middle(state); break; case SDL_BUTTON_RIGHT: mouse_button_right(state); break; case SDL_BUTTON_WHEELUP: mouse_button_up(state); break; case SDL_BUTTON_WHEELDOWN: mouse_button_down(state); break; default: break; } }