Віконні повідомлення і функції роботи з вікнами

Вікно це не тільки область на екрані, за допомогою якої додаток може представити свій висновок, це ще й адресат подій і повідомлень в середовищі Windows

Вікно ідентифікується по дескриптору вікна Цей дескриптор (змінна типу HWND) однозначно визначає кожне вікно в системі Windows організовує свої вікна в ієрархічну структуру:

– кожне вікно має батька, коренем дерева всіх вікон є вікно робочого столу, створюваного Windows при завантаженні

– для всіх вікон верхнього рівня (для головних вікон додатків і інших перекриваються і спливаючих вікон додатків) батьківським вікном є робочий стіл

Батько дочірнього вікна вікно верхнього рівня або інше дочірнє вікно, більш високого рівня по ієрархії

Між вікнами верхнього рівня (перекриваються і спливаючі вікна) існує ще одна ієрархічна звязок Власником вікна верхнього рівня може бути інше вікно того ж рівня Вікно, що має власника, завжди відображається поверх свого власника і зникає при мінімізації вікна-власника Типовим випадком володіння одного вікна верхнього рівня іншим є додаток, що відображає діалогове вікно Діалогове вікно не є дочірнім вікном (воно є спливаючим вікном), але його власником залишається вікно програми

Вікно, як правило, реагує на безліч повідомлень Рассмот рим найбільш часто оброблювані повідомлення:

– WMCREATE надсилається вікна перед тим, як вікно стане видимим, при отриманні повідомлення додаток може ініціалізувати потрібні дані

– WMDESTROY надсилається вікна, яке вже видалено з екрану і має бути зруйновано

– WMCLOSE вказує, що вікно має бути закрито Додаток може при його обробці, наприклад, вивести діалогове вікно підтвердження закриття вікна

– WMQUIT повідомлення, що вимагає завершити додаток

– WMQUERYENDSESSION повідомляє додаток про намір Windows закінчити сеанс Додаток може повернути значення FALSE у відповіді на це повідомлення, запобігши цим вимикання Windows Після обробки повідомлення WMQUERYENDSESSION Windows посилає всім додаткам повідомлення WMENDSESSION з результатами цієї обробки

– WMENDSESSION надсилається додаткам після обробки повідомлення WMQUERYENDSESSION Воно вказує, чи повинна Windows вимкнутися, або виключення відкладено При вказівці вимикання сеанс Windows може закінчитися в будь-який час після обробки повідомлення WMENDSESSION усіма додатками Тому важливо, щоб програми виконали всі завдання по забезпеченню безпечного завершення роботи

– WMACTIVATE вказує, що вікно верхнього рівня буде активізовано або Вимкнено Повідомлення спочатку надсилається вікна, яке має бути Вимкнено, а потім вікна, яке повинно бути активізовано

– WMSHOWWINDOW вказує, що вікно повинно бути приховано або відображено

– WMENABLE надсилається вікна, коли воно стає доступним або недоступним Недоступне вікно не може приймати дані, що вводяться від миші або клавіатури

– WMMOVE вказує, що розташування вікна змінилося

– WMSIZE вказує, що розмір вікна був змінений

– WMSETFOCUS вказує отримання вікном фокуса клавіатури

– WMKILLFOCUS вказує, що вікно повинно втратити фокус клавіатури

Розглянемо функції, що дозволяють додатком досліджувати ієрархію вікон, знаходити, переміщати, змінювати режим відображення, змінювати вид вікна:

AnimateWindow дає можливість виробляти спеціальні ефекти при показі або приховуванні вікон Є чотири типи мультиплікації: ролик, слайд, згортання чи розгортання і плавне перетікання

CloseWindow згортає (але не руйнує) певну вікно

FindWindow використовується для пошуку вікна верхнього рівня по імені його класу вікна або по заголовку вікна

FlashWindow призначена для створення вікна з миготливим заголовком, використовується для залучення уваги до вікна

FlashWindowEx вдосконалений варіант FlashWindow

GetClientRect повертає координати клієнтської області вікна

GetParent повертає дескриптор батьківського вікна для зазначеного

GetDesktopWindow повертає дескриптор вікна робочого столу Windows

GetTitleBarlnfo повертає інформацію про рядок заголовка

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

GetWindowPlacement повертає дані про розташування вікна

GetWindowTextLength повертає довжину (кількість символів) тексту рядка заголовка для вікна, якщо вікно має область заголовка Якщо вікно елемент управління, функція повертає довжину тексту всередині елемента керування

IsChild перевіряє, чи є вікно дочірнім вікном або породженим вікном для зазначеного батьківського вікна

IsWindow визначає, чи відповідає заданий дескриптор існуючого вікна

IsWindowVisible повертає інформацію про стан заданого вікна

MoveWindow змінює розташування і розміри вікна Для вікна верхнього рівня розташування вьгаісляется щодо лівого верхнього кута екрану Для дочірнього вікна розташування вьгаісляется щодо лівого верхнього кута клієнтської області батьківського вікна

Openlcon відновлює згорнуте вікно

SetWindowPlacement встановлює в стан показу і відновлює, згортає і розгортає вікно

SetWindowText копіює текст рядка заголовка вікна (якщо воно має її) в буфер Якщо вікно елемент управління, текст елемента керування копіюється

ShowWindow встановлює стан показу вікна WindowFromPoint відшукує дескриптор вікна, яке містить задану точку

Джерело: Сучкова, ЛІ Win32 API: основи програмування: навчальний посібник / ЛІ Сучкова АлтГТУ ім ШІ Ползунова -Барнаул, АлтГТУ, 2010 138 с, іл

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*