Не переводит из VK символа в русские буквы
Есть функция
short GetSymbolFromVK(WPARAM wParam) // переводит код нажатой клавиши в текст
{
BYTE btKeyState[256];
DWORD ProcessId;
HKL hklLayout = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(), &ProcessId)); // узнаем язык клавиатуры
WORD Symbol;
GetKeyboardState(btKeyState);
if ((ToAsciiEx(wParam, MapVirtualKey(wParam, 0), btKeyState, &Symbol, 0, hklLayout) == 1) && GetKeyState(VK_CONTROL) >= 0 && GetKeyState(VK_MENU) >= 0)
return Symbol;
return -1;
}
С английской раскладкой все хорошо, но на русской меняет буквы, например, вместо "П" - "Р".
MSG msg;
GetMessage(&msg, hWnd, 0, 0);
if (msg.message == WM_KEYDOWN) {
if (GetSymbolFromVK(msg.wParam) == -1) return;
test += (GetSymbolFromVK(msg.wParam) );
std::cout << test << std::endl;
}