Студопедия

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

КАТЕГОРИИ:

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






Допоміжні функції створення вікон






Обробка повідомлень в першу чергу передбачає визначення поточного стану вікон і управління цим станом, видачу тих чи інших повідомлень користувачу. Win32 API містить множину функцій, пов’язаних зі створенням вікон. Це функції пошуку, визначення стану, пересування вікон, а також обміну повідомленнями з користувачем.

Функції пошуку і визначення стану вікон. Часто потрібно визначити, чи існує деяке вікно. На це питання відповідає функція IsWindow:

BOOL IsWindow (HWND hwnd);

Функція IsWindowEnabled визначає, чи дозволяє вікно hwnd введення від миші чи з клавіатури:

BOOL IsWindowEnabled (HWND hwnd);

Для дозволу чи заборони вікну hwnd введення від миші чи з клавіатури викликають функцію EnableWindow:

BOOl EnableWindow (HWND hwnd, BOOL bEnable);

Фокус введення з клавіатури вікну hwnd передає функція SetFocus:

SetFocus (hwnd);

Наступна функція повертає ненульове значення, якщо вікно hwnd згорнуте:

BOOl lslconic (HWND hwnd);

Функція FindWindow запитує дескриптор недочірнього вікна класу lpClassName із заголовком lpWindowName:

HWND FindWindow (LPCTSTR lpClassName, LPCTSTR lpWindowName);

Функції переміщення вікон. Для зміни розмірів та положення вікна hwnd викликають функцію MoveWindow:

BOOL MoveWindow(HWND hwnd,

int x, //нова координата лівого краю вікна

int y, //нова координата верхнього краю вікна

int nWidth, //нова ширина вікна

int nHeight, //нова висота вікна

BOOL bRepaint); // прапорець перефарбування вікна

Функція SetWindowPos змінює розміри, положення на екрані і позицію вікна hwnd по відношенню до інших вікон:

BOOL SetWindowPos(HWND hwnd,

HWND hWndInsertAfter, //дескриптор порядку розташування

int x, //нова координата лівого краю

int y, //нова координата верхнього краю

int cx, //нова ширина

int cy, //нова висота

UINT uFlags); //прапорець позиціювання

Функція SetForegroundWindow розміщує потік, який створив вікно hwnd, на передній план і активізує вікно hwnd:

BOOl SetForegroundWindow (HWND hwnd);

Для переміщення вікна важливо знати системні метрики екрану і вікна. Їх одержують за допомогою функції GetSystemMetrics. Вона повертає метрики і поточні установки конфігурації системи. Метрики системи – це габарити (ширина і висота) відображуваних елементів. Всі габарити повертаються в пікселях. Функція GetSystemMetrics оголошена наступним чином:

Int GetSystemMetrics(int nIndex);

Функція GetWindowRect обирає координати прямокутника, який обрамляє вікно hwnd:

BOOl GetWindowRect (HWND hwnd, LPRECT lpRect);

Функція GetClientRect обирає координати прямокутника, який обрамляє робочу область вікна:

BOOL GetClientRect (HWND hwnd, LPRECT lpRect);

Повідомлення додатку для користувача. Для виведення текстових повідомлень і одержанні відповіді користувача вживають вікно повідомлення. Функція MessageBox створює, відображає, забезпечує роботу і закриває вікно повідомлення:

int WINAPI MessageBox(

HWND hwnd, //дескриптор батьківського вікна

LPCTSTR lpText, //адреса тексту повідомлення

LPCTSTR lpCaption, //адреса заголовку вікна повідомлення

UINT uType); //стиль вікна повідомлення

При виклику функції MessageBeep комп’ютер програє звук з множини зареєстрованих в системі звуків:

BOOL MessageBeep (UINT uType);

Якщо потрібно звернути увагу користувача на певне вікно, то можна декілька раз змінити підсвічування вікна та/або його піктограми.З цією метою використовують FlashWindow, яка за один виклик один раз змінює підсвічування вікна hwnd:

BOOL FlashWindow (HWND hwnd, BOOL bInvert);

Наступний фрагмент 4 рази змінює підсвічування вікна з інтервалом в 1с:

For (int i=1; i< =4; i++)

{ Flash Window (hwnd, TRUE);

Sleep (1000); // 1000 мілісекунд

}

При і=1 вікно hwnd прийме вигляд неактивного вікна і його потік призупиняється на 1с:

FlashWindow (hwnd, TRUE);

Sleep(1000);

Це зводиться до простої затримки часу.

При і=2 вікно hwnd прийме вигляд активного вікна і його потік призупиняється на 1с.

При і=3 вікно hwnd прийме вигляд неактивного вікна і його потік призупиняється на 1с.

При і=4 вікно hwnd прийме вигляд активного вікна і його потік призупиняється на 1с.

 


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

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