//============================================================================= // Initialize mouse and controller input // Set capture=true to capture mouse // Throws GameError //============================================================================= void Input::initialize(HWND hwnd, bool capture) { try { mouseCaptured = capture; // register high-definition mouse Rid[0].usUsagePage = HID_USAGE_PAGE_GENERIC; Rid[0].usUsage = HID_USAGE_GENERIC_MOUSE; Rid[0].dwFlags = RIDEV_INPUTSINK; Rid[0].hwndTarget = hwnd; RegisterRawInputDevices(Rid, 1, sizeof(Rid[0])); if(mouseCaptured) SetCapture(hwnd); // capture mouse // Clear controllers state ZeroMemory( controllers, sizeof(ControllerState) * MAX_CONTROLLERS ); checkControllers(); // check for connected controllers } catch(...) { throw(GameError(gameErrorNS::FATAL_ERROR, "Error initializing input system")); } }
// ================================================================== // マウスとコントローラの入力を初期化 // マウスをキャプチャする場合、capture = trueを設定 // GameErrorをスロー // ================================================================== void Input::initialize(HWND hwnd, bool capture) { try { mouseCaptured = capture; // 高精細マウスを登録 Rid[0].usUsagePage = HID_USAGE_PAGE_GENERIC; Rid[0].usUsage = HID_USAGE_GENERIC_MOUSE; Rid[0].dwFlags = RIDEV_INPUTSINK; Rid[0].hwndTarget = hwnd; RegisterRawInputDevices(Rid, 1, sizeof(Rid[0])); if(mouseCaptured) SetCapture(hwnd); // マウスをキャプチャ // コントローラの状態をクリア ZeroMemory(controllers, sizeof(ControllerState) * MAX_CONTROLLERS); checkControllers(); // 接続されているコントローラをチェック } catch(...) { throw(GameError(gameErrorNS::FATAL_ERROR, "Error initializing input system")); } }