Создание графического интерфейса библиотеки WIN32 на C: методы и примеры кода

Ниже приведены некоторые часто используемые методы создания графического пользовательского интерфейса (GUI) библиотеки WIN32 с использованием языка программирования C:

  1. Создание окна.
    Следующий фрагмент кода демонстрирует, как создать базовое окно в WIN32:
#include <windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    const char className[] = "MyWin32Class";

    // Register the window class
    WNDCLASS wc = {0};
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = className;

    RegisterClass(&wc);

    // Create the window
    HWND hwnd = CreateWindow(className, "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);

    if (hwnd == NULL)
        return 0;

    ShowWindow(hwnd, nCmdShow);

    // Message loop
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return (int)msg.wParam;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
}
  1. Обработка оконных сообщений.
    В предыдущем примере функция WindowProcотвечает за обработку оконных сообщений. С помощью этой функции вы можете обрабатывать различные сообщения, такие как нажатия кнопок, движения мыши и ввод с клавиатуры. Оператор switchвнутри WindowProcможет быть расширен для обработки дополнительных сообщений.

  2. Создание элементов управления.
    Элементы управления, такие как кнопки, текстовые поля и раскрывающиеся меню, можно добавить в окно с помощью функции CreateWindow. Каждый элемент управления имеет собственную оконную процедуру, которая обрабатывает сообщения, относящиеся к конкретному элементу управления.

  3. Рисование/графика.
    Чтобы нарисовать графику в окне, вы можете обработать сообщение WM_PAINTи использовать функции GDI (интерфейс графического устройства), такие как Rectangle, Ellipse, LineToи т. д. Вы также можете использовать GDI+ для более сложных графических операций.

  4. Обработка пользовательского ввода.
    Вы можете обрабатывать пользовательский ввод, обрабатывая такие сообщения, как WM_COMMAND(для нажатий кнопок), WM_NOTIFY(для уведомлений от элементов управления). ), WM_KEYDOWN(для ввода с клавиатуры) и многие другие.