Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






Перший крок

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

#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;

}

 

 

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


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал