Ниже приведены некоторые часто используемые методы создания графического пользовательского интерфейса (GUI) библиотеки WIN32 с использованием языка программирования C:
- Создание окна.
Следующий фрагмент кода демонстрирует, как создать базовое окно в 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);
}
}
-
Обработка оконных сообщений.
В предыдущем примере функцияWindowProcотвечает за обработку оконных сообщений. С помощью этой функции вы можете обрабатывать различные сообщения, такие как нажатия кнопок, движения мыши и ввод с клавиатуры. ОператорswitchвнутриWindowProcможет быть расширен для обработки дополнительных сообщений. -
Создание элементов управления.
Элементы управления, такие как кнопки, текстовые поля и раскрывающиеся меню, можно добавить в окно с помощью функцииCreateWindow. Каждый элемент управления имеет собственную оконную процедуру, которая обрабатывает сообщения, относящиеся к конкретному элементу управления. -
Рисование/графика.
Чтобы нарисовать графику в окне, вы можете обработать сообщениеWM_PAINTи использовать функции GDI (интерфейс графического устройства), такие какRectangle,Ellipse,LineToи т. д. Вы также можете использовать GDI+ для более сложных графических операций. -
Обработка пользовательского ввода.
Вы можете обрабатывать пользовательский ввод, обрабатывая такие сообщения, какWM_COMMAND(для нажатий кнопок),WM_NOTIFY(для уведомлений от элементов управления). ),WM_KEYDOWN(для ввода с клавиатуры) и многие другие.