Настроювані діалогові вікна

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

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

Багато додатків створення нового діалоговому вікні перший отримання інформації про клас для попередньо діалоговому вікні класу і передачі її GetClassInfo функцію, яка заповнює WNDCLASS структури з інформацією. Застосування змінює окремі члени структури, такі як ім'я класу, пензля та значок, потім реєструється новий клас за допомогою RegisterClass функції. Якщо застосунок заповнює WNDCLASS структури на свій власний, його необхідно встановити cbWndExtra член DLGWINDOWEXTRA, яка є кількість додаткових байтів система вимагає для кожного діалогового вікна. Якщо програма також використовує додаткових байтів для кожного діалогового вікна, вони повинні бути поза додаткових байтів, що вимагається в системі.

Вікно процедура діалоговому вікні має однакові параметри та вимоги будь-які інші вікна процедури. На відміну від інших процедур вікно Однак, порядок це діалогове вікно слід викликати функції DefDlgProc , а не DefWindowProc функція для будь-яких повідомлень, що це не обробки. DefDlgProc здійснює те саме повідомлення за промовчанням обробки як вікно процедура попередньо діалогового вікна, яка включає в себе виклик процедури діалоговому вікні.

Програми можна також створити настроювані діалогові вікна subclassing вікно процедура попередньо діалогового вікна. Функція SetWindowLong дозволяє встановити адресу вікно процедури для даного вікна програми. Застосунок може також спробувати підкласу за допомогою функції SetClassLong , але робити так зачіпає всі діалогові вікна в системі, не тільки ті, що належать до застосування.

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