Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
.docx
Скачиваний:
8
Добавлен:
30.10.2018
Размер:
824.42 Кб
Скачать

18. ВікнаWindows.Процедура створенняд очірнього вікна. Повідомлення wm_create.

Повідомлення WM_CREATE надсилається тоді, коли программа запитує, викликомякої функції CreateWindowExабоCreateWindow має бути створено вікно. Віконна процедура нового вікна приймає це повідомлення після того, як вікно створено, але дотого, яквікно стає видимим. Повідомлення надсилається перед поверненням значення функцією CreateWindowExабоCreateWindow.

Синтаксис

WM_CREATE

lpcs=(LPCREATESTRUCT)lParam;//структуразданимистворення

Параметри

lParam

ЗначенияlParam.ВказуєнаструктуруCREATESTRUCT,якаміститьінформаціющодостворюваноговікна.ЧлениCREATESTRUCTідентичніпараметрамфункціїCreateWindowEx.

Значення,щоповертаються

Якщопрограмаобробляєцеповідомлення,воноповертає0,щобпродовжитиствореннявікна.Якщоприкладнапрограмаповертає-1,товікноруйнується,іфункціяCreateWindowExабоCreateWindowповертаєзначеннядескриптораНЕХАЙ(NULL).

Дочірнєвікно

Дочірнєвікно(child window)маєстильWS_CHILDтаобмеженоробочоїобластюйогобатьківськоговікна.Прикладнапрограмазазвичайвикористовуєдочірнівікна,щобподілитиробочуобластьбатьківськоговікнанафункціональніобласті.Вистворюєтедочірнєвікно,визначаючистильWS_CHILDуфункціїCreateWindowEx.

Дочірнєвікноповинноматибатьківськевікно.Вивизначаєтебатьківськевікно,коли ВивикликаєтеCreateWindowEx.ЯкщоВивизначаєтестильWS_CHILDвCreateWindowEx,аленевизначаєтебатьківськевікно,Windowsнестворюєвікно.

Дочірнєвікномаєробочуобласть,але ніякихіншихфункцій,якщовониявно незатребувані.Прикладнапрограмаможезажадатирядокзаголовка,менювікна,кнопкизгортання ірозгортаннявікна,рамкуілінійкипрокруткидлядочірньоговікна,аледочірнєвікно неможематименю.Якщоприкладнапрограмавизначаєдескрипторменю,абоколивонареєструєкласдочірньоговікна,або коли створює дочірнєвікно, дескриптор меню ігнорується.

Прикладнапрограмаможезмінюватибатьківськевікноіснуючогодочірньоговікна,викликаючи функціюSetParent.Уцьомувипадку,Windowsвидаляєдочірнєвікнозробочоїобластістарогобатьківського вікната переносить йогодо робочої областінового батьківського вікна. Якщо SetParent визначає значення дескриптораНЕХАЙ(NULL), вікно робочого столустаєновимбатьківськимвікном.У цьому випадку, дочірнєвікномалюється всамомуголовномувікні,поза рамками будь-якого іншого вікна. ФункціяGetParent відновлює дескриптор батьківського вікна для дочірнього вікна.

Батьківське вікно поступається частиною своєї робочої області дочірньому вікна, і дочірнє вікно приймає всю інформацію для цієї області.Клас вікна неповинен бути той же самий для кожного з дочірніх вікон батьківського вікна.Це означає,що прикладна программа може заповнювати батьківське вікно дочірніми вікнами,які виглядають по-різному і виконують різні завдання. Наприклад, діалогове вікно може містити багато типів елементів управління,кожне з них дочірнє вікно,яке приймає різні типии даних від користувача.

/*Функция обработки сообщения WMCREATE о создании главного окна*/

BOOL OnCreate (HWND hwnd,LPCREATESTRUCT){

WNDCLASS we;

memset (we, 0, sizeof (we) ) ;

we . lpszClassName=szResidueClass,- //Имядочернегоокна

we.lpfnWndProc=ResidueWindowProc;//Оконнаяфункциядочернегоокна

we.hlnstance=hl;//Дескрипторэкземпляраприложения

wc.hbrBackground=GetStockBrush(LTGRAY_BRUSH);

RegisterClass(&wc);//Регистрируем дочернее окно (остатка времени)

/•Создадим дочернее окно*/

hwndResidue=CreateWindow(szResidueClass,NULL,

WS_CHILD|WS_DLGFRAME|WS_VISIBLE, 220,10,130,100,hwnd,NULL,hi,NULL);

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