DialogBoxIndirect макрос створює модальне діалогове вікно діалоговому вікні шаблон в пам'яті. DialogBoxIndirect не повертає керування поки вказаного зворотного виклику функції припиняється модальне діалогове вікно шляхом виклику функції EndDialog . DialogBoxIndirect макрос використовується функція DialogBoxIndirectParam.
int DialogBoxIndirect ( HINSTANCE hInstance, / / ручка екземпляр програмиLPDLGTEMPLATElpTemplate, / / ідентифікує діалоговому вікні шаблонHWNDhWndParent, / / ручка власник вікноDLGPROClpDialogFunc / / вказівник на діалоговому вікні процедури);
У стандартний шаблон для діалогове вікно заголовок є DLGTEMPLATE структурою слідують додаткові змінної довжини масивів. Дані для кожного з елементів керування складається з DLGITEMTEMPLATE структури, після чого додаткові змінної довжини масивів.
У шаблоні "розширені" для діалогове вікно верхнього колонтитула використовується формат DLGTEMPLATEEX і керування визначень, використовуйте формат DLGITEMTEMPLATEEX.
Якщо функція завершено успішно, значення, що повертається є параметр nResult , вказаний у виклику функції EndDialog , яка була використана для припинення діалогового вікна.
Якщо функцію не вдається, значення, що повертається, є – 1. Щоб отримати докладні відомості про помилку, зателефонуйте GetLastError.
DialogBoxIndirect макрос функція CreateWindowEx використовується для створення діалогового вікна. DialogBoxIndirect потім відправляє повідомлення WM_INITDIALOG у діалоговому вікні порядку. Якщо шаблон визначає стиль DS_SETFONT, функція також надсилає повідомлення WM_SETFONT у діалоговому вікні порядку. Функція діалогове вікно (незалежно від того, чи шаблон визначає стиль WS_VISIBLE), власник вікна а вимикає починає свою власну повідомлення петлі для отримання та відправлення повідомлення для діалогового вікна.
Коли діалоговому вікні порядок закликає EndDialog функції, DialogBoxIndirect руйнує діалогового вікна, закінчується повідомлення петлі, дозволяє власник вікна (якщо увімкнуто) та повертає nResult параметр визначений діалоговому вікні процедури, коли він називається EndDialog.
У стандартних діалоговому вікні шаблон DLGTEMPLATE структури і кожен з DLGITEMTEMPLATE структури повинні вирівнюються по DWORD кордонів. Створення масиву даних, що йде за DLGITEMTEMPLATE структура повинна бути вирівняні на межу DWORD . Всі інші змінної довжини масивів у шаблоні повинні повинні бути вирівняні на слів кордонів.
У шаблоні вікні Розширений діалоговому DLGTEMPLATEEX заголовка і кожен визначень управління DLGITEMTEMPLATEEX повинні вирівнюються по межі DWORD . Створення даних масиву, якщо будь-яке, що йде за DLGITEMTEMPLATEEX структури також повинні бути вирівняні на межу DWORD . Всі з іншими масивами змінної довжини, у шаблоні повинні бути вирівняні на слів кордонів.
Всі рядки символів в діалоговому вікні шаблон, такі як назви для діалогового вікна та кнопки, повинні бути рядків Юнікод. Створювати код, що працює на обох Windows і Windows NT, функція MultiByteToWideChar використовується для створення цих рядків Юнікод.
Windows 95 і пізніших:Система може підтримувати максимум 255 елементів керування в діалоговому вікні шаблон. Щоб розмістити більше ніж 255 елементів керування в діалоговому вікні, створити елементи керування в обробник WM_INITDIALOG повідомлення, а не розміщення їх у шаблоні.
Windows CE: У структуру DLGTEMPLATE в діалоговому шаблон, на які посилаються lpTemplate параметра. підтримуються не всі стилі
nbsp; Windows &NT: вимагає 3.1 або пізнішої версії.
Windows:Вимагає Windows 95 або пізнішої версії.
Windows CE:Потрібна Версія 1.0 або пізнішу версію.
Заголовка:Оголошена в winuser.h.
Імпортувати бібліотеки:Використання user32.lib.
Юнікод:Реалізований у вигляді Юнікод і ANSI версії на Windows NT.
Діалогове вікно огляд коробки, діалоговому вікні функції, CreateWindowEx, DialogBox, DialogBoxIndirectParam, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT