Ввод с клавиатуры с помощью Windows API C ++ - PullRequest
0 голосов
/ 09 сентября 2018

Мне действительно нужна помощь здесь. Я пытаюсь создать систему ввода, используя Windows API, но я действительно не могу понять, как ее использовать. Я получил код ниже от

https://docs.microsoft.com/en-us/windows/desktop/learnwin32/keyboard-input

Я понимаю, что он возвращает какой-то результат в зависимости от нажатой клавиши, но как мне получить результат, возвращаемый этой функцией? Как мне это использовать? Любая помощь будет оценена.

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    wchar_t msg[32];
    switch (uMsg)
    {
    case WM_SYSKEYDOWN:
        swprintf_s(msg, L"WM_SYSKEYDOWN: 0x%x\n", wParam);
        OutputDebugString(msg);
        break;

    case WM_SYSCHAR:
        swprintf_s(msg, L"WM_SYSCHAR: %c\n", (wchar_t)wParam);
        OutputDebugString(msg);
        break;

    case WM_SYSKEYUP:
        swprintf_s(msg, L"WM_SYSKEYUP: 0x%x\n", wParam);
        OutputDebugString(msg);
        break;

    case WM_KEYDOWN:
        swprintf_s(msg, L"WM_KEYDOWN: 0x%x\n", wParam);
        OutputDebugString(msg);
        break;

    case WM_KEYUP:
        swprintf_s(msg, L"WM_KEYUP: 0x%x\n", wParam);
        OutputDebugString(msg);
        break;

    case WM_CHAR:
        swprintf_s(msg, L"WM_CHAR: %c\n", (wchar_t)wParam);
        OutputDebugString(msg);
        break;

    /* Handle other messages (not shown) */

    }
    return DefWindowProc(m_hwnd, uMsg, wParam, lParam);
}

1 Ответ

0 голосов
/ 09 сентября 2018

В отличие от приложений на базе MS-DOS, приложения на основе Windows управляются событиями. Они не делают явных вызовов функций (таких как вызовы библиотеки времени выполнения C) для получения ввода. Вместо этого они ждут, пока система передаст им ввод. Система передает все входные данные для приложения в различные окна приложения.

В каждом окне есть функция, называемая оконной процедурой, которую система вызывает всякий раз, когда у нее есть вход для окна. Оконная процедура обрабатывает ввод и возвращает управление системе.

Ваш код просто реализует WindowProc, который ожидает сообщений Windows и обрабатывает тему, информация о полученном сообщении доступна с использованием параметров реализованной функции.

Вы можете найти полезную информацию о системе сообщений Windows здесь .

А вот документация WM_SYSKEYDOWN , например.

А вот документация WindowProc .

Внимательно прочитайте документацию, которая поможет вам понять систему, лежащую в основе системы сообщений Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...