Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Порожнє вікно ⇐ ПредыдущаяСтр 3 из 3
Перший крок Приклад простої програми (виклик вікна повідомлень з текстом повідомлення, назвою вікна та кнопкою ОК #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; }
Опишемо детальніше всі кроки створення вікна
|