新人学点游戏相关的。
game.cpp:
LPDIRECTINPUT8 dinput;
LPDIRECTINPUTDEVICE8 dimouse;
LPDIRECTINPUTDEVICE8 dikeyboard;
bool Directinput_init(HWND hwnd)
{
HRESULT result;
result = DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&dinput, NULL);
dinput->CreateDevice(GUID_SysKeyboard, &dikeyboard, NULL);
dikeyboard->SetDataFormat(&c_dfDIKeyboard);
dikeyboard->SetCooperativeLevel(hwnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
dikeyboard->Acquire();
dinput->CreateDevice(GUID_SysMouse, &dimouse, NULL);
dimouse->SetDataFormat(&c_dfDIMouse);
dimouse->SetCooperativeLevel(hwnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
dimouse->Acquire();
d3ddev->ShowCursor(false);
return true;
}
这个是初始化阶段,装载输入设备。
然后如果鼠标点击该窗口以外的部分,或者切换出窗口,则再切换回这个窗口时输入设备都失灵,查看visual studio的调试信息,在切换出窗口的时候有几个线程结束。
那么我需要每次用game的窗口时都重新加载输入设备吗?或者是上面的代码中,SetCooperativeLevel()参数设置有问题?
game.cpp:
LPDIRECTINPUT8 dinput;
LPDIRECTINPUTDEVICE8 dimouse;
LPDIRECTINPUTDEVICE8 dikeyboard;
bool Directinput_init(HWND hwnd)
{
HRESULT result;
result = DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&dinput, NULL);
dinput->CreateDevice(GUID_SysKeyboard, &dikeyboard, NULL);
dikeyboard->SetDataFormat(&c_dfDIKeyboard);
dikeyboard->SetCooperativeLevel(hwnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
dikeyboard->Acquire();
dinput->CreateDevice(GUID_SysMouse, &dimouse, NULL);
dimouse->SetDataFormat(&c_dfDIMouse);
dimouse->SetCooperativeLevel(hwnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
dimouse->Acquire();
d3ddev->ShowCursor(false);
return true;
}
这个是初始化阶段,装载输入设备。
然后如果鼠标点击该窗口以外的部分,或者切换出窗口,则再切换回这个窗口时输入设备都失灵,查看visual studio的调试信息,在切换出窗口的时候有几个线程结束。
那么我需要每次用game的窗口时都重新加载输入设备吗?或者是上面的代码中,SetCooperativeLevel()参数设置有问题?