Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_Перший крок.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
119.81 Кб
Скачать

Перший крок

Приклад простої програми (виклик вікна повідомлень з текстом повідомлення, назвою вікна та кнопкою ОК

#include <windows.h>

/* Головна програма з 4 параметрами

два перших-реєстраційні номери екземплярів програми(поточний та попередній)

два других стосуються передачі даних через консоль

WINAPI- вказує, що виклик і передача даних- за правилами WINDOWS (_stdcall)

*/

Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance,

LPSTR lpCmdLine, int nCmdShow)

{

// виклик вікна повідомлення з кнопкою ОК текстом у вікні та назвою вікна

MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK);

return 0;

}

Порожнє вікно

Створимо порожнє вікно

#include <windows.h>

// текстова константа куда занесемо назву вікна

const char g_szClassName[] = "myWindowClass";

// Step 4: створюємо віконну процедуру для обробки повідомлень (msg)

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

switch(msg){

// це виникає при натисканні на хрестик справа вверху

case WM_CLOSE:

DestroyWindow(hwnd); // функція ліквідує вікно з номером hwnd

break;

case WM_DESTROY:

PostQuitMessage(0); // посилає повідомленя WM_CLOSE

break;

default:

return DefWindowProc(hwnd, msg, wParam, lParam);

}

return 0;

}

// а це – головна програма з параметрами вже вам відомими

Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance,

LPSTR lpCmdLine, int nCmdShow)

{

// тут будуть розміщені віконні атрибути

WNDCLASSEX wc;

// у цю змінну ОС помістить реєстраційний номер вікна

HWND hwnd;

// а через цей блок буде здійснюватись обмін повідомленнями

MSG Msg;

//Step 1: заповнюємо жаними структуру віконного класу

wc.cbSize = sizeof(WNDCLASSEX);

wc.style = 0;

wc.lpfnWndProc = WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);

wc.hCursor = LoadCursor(NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wc.lpszMenuName = NULL;

wc.lpszClassName = g_szClassName;

wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

if(!RegisterClassEx(&wc)) // якщо не вдасться дані зареєструвати, то

{

MessageBox(NULL, "Window Registration Failed!", "Error!",

MB_ICONEXCLAMATION | MB_OK);

return 0;

}

// Step 2: інакше ОС створить вікно і поверне реєстраційний номер hwnd

hwnd = CreateWindowEx(

WS_EX_CLIENTEDGE,

g_szClassName,

"The title of my window",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,

NULL, NULL, hInstance, NULL);

if(hwnd == NULL) // якщо вікно створити не вдалось, то попередження

{

MessageBox(NULL, "Window Creation Failed!", "Error!",

MB_ICONEXCLAMATION | MB_OK);

return 0;

}

ShowWindow(hwnd, nCmdShow); // інакше вікно показуємо

UpdateWindow(hwnd); // необовязкове поновлення вікна

// Step 3: тепер органзуємо цикл чекання повідомлень від ОС через блок Msg

while(GetMessage(&Msg, NULL, 0, 0) > 0)

{

TranslateMessage(&Msg); // інтерпретація повідомлень

DispatchMessage(&Msg); // відправляємо дещо до віконної процедури

}

return Msg.wParam;

}

Опишемо детальніше всі кроки створення вікна

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]