wm_keyup 메시지가 올바르게 전송되지 않아서 발생한다고 생각되는 문제가 있습니다. 나는 당신이 당신의 캐릭터를 움직일 때 동일한 문제가 Minecraft에서 발생하고 입력이 '막히게 될 것'이라고 믿는다. 키의 동작은 누른 후에도 계속되고 키를 다시 누를 때까지 중지되지 않습니다. 창과 키보드 사이에 문제가 될 수 있다고 들었지만 완전히 확신 할 수는 없습니다. 또한 대부분의 다른 주류 게임에는이 문제가 없으므로 올바른 방법이 있어야합니다.wm_keyup으로 인해 키보드 입력이 중단됨
case WM_KEYDOWN:
for (list<KeyInput>::iterator t = key_inputs.begin(); t != key_inputs.end(); ++t)
(*t).PushKeyDown(ConvertKeyCode(wparam));
return 0;
case WM_KEYUP:
for (list<KeyInput>::iterator t = key_inputs.begin(); t != key_inputs.end(); ++t)
(*t).PushKeyUp(ConvertKeyCode(wparam));
return 0;
각 KeyInput 객체가 키 입력을 채워집니다 및 키보드 입력이 요청으로 비워 큐를 가지고 :이처럼 내 윈도우 프로 시저 코드는 모습입니다. 이 코드는 멀티 스레드 게임용이며이 기술은 모든 스레드에서 입력이 누락되지 않도록합니다. KeyInput 객체에서 상호 배제를 사용하고 있습니다.
내 게임에서 Minecraft보다이 문제가 더 많이 발생하고 이유가 없습니다. 이전에 단순하고 비 멀티 스레드 코드를 작성했을 때도 알았습니다. 이 문제를 해결하는 방법을 모르겠습니다.
누구든지 제공하는 도움이나 제안에 감사드립니다.
글쎄, WM_ACTIVATEAPP에 신경을 쓰고 있습니까? –