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