|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
DialogBoxIndirect
The DialogBoxIndirect macro creates a modal dialog box from a dialog box template in memory. DialogBoxIndirect does not return control until the specified callback function terminates the modal dialog box by calling the EndDialog function. The DialogBoxIndirect macro uses the DialogBoxIndirectParam function.
int DialogBoxIndirect(
HINSTANCE hInstance, // handle to application instance LPDLGTEMPLATE lpTemplate, // identifies dialog box template HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc // pointer to dialog box procedure );
Parameters
hInstance
Identifies the instance of the module that creates the dialog box.
lpTemplate
Pointer to a global memory object containing a template that DialogBoxIndirect uses to create the dialog box. A dialog box template consists of a header that describes the dialog box, followed by one or more additional blocks of data that describe each of the controls in the dialog box. The template can use either the standard format or the extended format. In a standard template for a dialog box, the header is a DLGTEMPLATE structure followed by additional variable-length arrays. The data for each control consists of a DLGITEMTEMPLATE structure followed by additional variable-length arrays.
In an extended template for a dialog box, the header uses the DLGTEMPLATEEX format and the control definitions use the DLGITEMTEMPLATEEX format.
hWndParent
Identifies the window that owns the dialog box.
lpDialogFunc
Pointer to the dialog box procedure. For more information about the dialog box procedure, see DialogProc.
Return Values
If the function succeeds, the return value is the nResult parameter specified in the call to the EndDialog function that was used to terminate the dialog box. If the function fails, the return value is -1.
Remarks
The DialogBoxIndirect macro uses the CreateWindowEx function to create the dialog box. DialogBoxIndirect then sends a WM_INITDIALOG message to the dialog box procedure. If the template specifies the DS_SETFONT style, the function also sends a WM_SETFONT message to the dialog box procedure. The function displays the dialog box (regardless of whether the template specifies the WS_VISIBLE style), disables the owner window, and starts its own message loop to retrieve and dispatch messages for the dialog box.
When the dialog box procedure calls the EndDialog function, DialogBoxIndirect destroys the dialog box, ends the message loop, enables the owner window (if previously enabled), and returns the nResult parameter specified by the dialog box procedure when it called EndDialog. In a standard dialog box template, the DLGTEMPLATE structure and each of the DLGITEMTEMPLATE structures must be aligned on DWORD boundaries. The creation data array that follows a DLGITEMTEMPLATE structure must also be aligned on a DWORD boundary. All of the other variable-length arrays in the template must must be aligned on WORD boundaries.
In an extended dialog box template, the DLGTEMPLATEEX header and each of the DLGITEMTEMPLATEEX control definitions must be aligned on DWORD boundaries. The creation data array, if any, that follows a DLGITEMTEMPLATEEX structure must also be aligned on a DWORD boundary. All of the other variable-length arrays in the template must be aligned on WORD boundaries. All character strings in the dialog box template, such as titles for the dialog box and buttons, must be Unicode strings. To create code that works on both Windows NT and Windows 95, use the MultiByteToWideChar function to generate these Unicode strings.
Windows 95: The system can support a maximum of 16,364 window handles.
See Also
CreateWindowEx, DialogBox, DialogBoxIndirectParam, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
DialogBoxIndirect
Макро DialogBoxIndirect создает модальный диалоговый ящик из диалогового шаблона ящика в памяти. DialogBoxIndirect НЕ возвращает управление пока определенная функция возврата не завершит модальный диалоговый ящик вызывая функцию EndDialog. Макро DialogBoxIndirect использует функцию DialogBoxIndirectParam.
int DialogBoxIndirect(
hInstance HINSTANCE, // ОПЕРИРУЕТСЯ в прикладной пример LPDLGTEMPLATE lpTemplate, // идентифицирует диалоговый шаблон ящика HWND hWndParent, // ручки в окно владельца DLGPROC lpDialogFunc // указатель, чтобы общаться процедура ящика );
Параметры
hInstance
Идентифицирует пример модуля, который создает диалоговый ящик.
lpTemplate
Указатель на глобальный объект памяти, содержащий шаблон, что DialogBoxIndirect используется, чтобы создавать диалоговый ящик. Диалоговый шаблон блока состоит из заголовка, который описывает диалогового блока, сопровождается одним или более дополнительными блоками данных, которые описывают каждые элементы управления в диалоговом блоке. Шаблон может использовать или стандартный формат или расширенный формат. В стандартном шаблоне для диалогового блока, заголовок является структурой DLGTEMPLATE сопровожденной дополнительной переменной-длиной подготавливается. Данные для каждого управления состоит из структуры DLGITEMTEMPLATE сопровожденной дополнительной переменной-длиной подготавливается.
В расширенном шаблоне для диалогового блока, заголовок использует формат DLGTEMPLATEEX и управляющее использование определений формат DLGITEMTEMPLATEEX.
hWndParent
Идентифицирует окно, которое обладает диалоговым блоком.
lpDialogFunc
Указатель диалоговому блоку процедуры. Более подробно о диалоговом блоке процедуры, смотри DialogProc.
Обратные Величины
Если функция добивается успеха, обратная величина является параметром nResult определенным на вызове в функцию EndDialog, что был использован, чтобы завершать диалогового блока. Если функция терпит неудачу, обратная величина - -1.
Замечания
Макро 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 NT так и Windows 95, используйте функцию MultiByteToWideChar, чтобы генерировать эти строки Уникода.
Windows 95: система может поддержать максимум 16,364 ручек окна.
Смотри Также
CreateWindowEx, DialogBox, DialogBoxIndirectParam, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT
|
|
|
|
| |