Ресурсы. Файл описания ресурса, страница 10

Определение диалогового окна в файле DLGBOX.RC

 

TESTDIALOG   DIALOGEX      20,    20,    180,    70 STYLE   DS  MODALFRAME    I    WS   POPUP    |    WS_VISIBLE    |    WS_CAPTION    |    WS_SYSMENU CAPTION   "Test   Dialog" FONT   8,    "MS   Sans   Serif" BEGIN RTEXT                   "Edit   Field   1: " ,-1,36,8,45,8 EDITTEXT             IDC EDIT1,83,6,61,13,ES AUTOHSCROLL    |    WS_BORDER RTEXT                    "Edit   Field   2: " ,-1,36,24,45,8 EDITTEXT             IDC EDIT2,83,22,61,13,ES_AUTOHSCROLL    I    WS_BORDER PUSHBUTTON        "OK" ,IDOK,33,50,50,14 PUSHBUTTON        "Cancel" , IDCANCEL, 95,50,50 , 14 ,WS_GROUP END

 

фрагмент файла DLGBOX.C

 

См.    \local-sources\chap08\0fl-07.txt

 

DialogBoxIndirect                                 * Windows 98   +  Windows 2000

 

Описание

Функция DialogBoxIndirect аналогична функции DialogBox, за исключением того, что данные ресурса диалогового окна должны быть указаны с помощью дескриптора памяти, а не имени ресурса. Шаблон диалогового окна в памяти может быть модифицирован в целях изменения диалогового окна в ходе выполнения приложения (это так называемое "динамическое диалоговое окно"). Дополнительная информация по этой теме приведена в разделе "Динамические диалоговые окна" в начале главы. Косвенное указание данных ресурса диалогового окна позволяет получить в программе больший контроль над тем, как происходит загрузка и исключение данных ресурса.

 

Синтаксис

INT_PTR DialogBoxIndirect( HINSTANCE hlnstance, LPDLGTEMPLATE IpTemplate, HWND hWndParent, DLGPROC dlgprc )

 

Параметры

 

hlnstance

HINSTANCE. Дескриптор экземпляра модуля, который создает диалоговое окно.

 

Ip Template

LPDLGTEMPLATE. Указатель на глобальный объект памяти, который содержит шаблон, используемый для создания диалогового окна. Этот шаблон представлен в виде структуры DLGTEMPLATE, за которой следует одна или несколько структур DLGITEMTEMPLATE.

 

hWndParent

HWND. Дескриптор окна, которое является владельцем данного диалогового окна.

 

dlgprc

DLGPROC. Указатель на процедуру диалогового окна. Процедура диалогового окна обрабатывает сообщения для диалогового окна. Определение функции DialogProc приведено в описании функции CreateDialog.

 

Возвращаемое значение

INT_PTR. Возвращаемое значение равняется параметру nResuh, переданному при вызове функции EndDialog. Возвращаемое значение равно -1, если диалоговое окно не может быть создано.

 

Включаемый файл

winuser.h

 

См. также

DialogBox, DialogBoxIndirectParam, DialogBoxParam, CreateDialoglndirect

 

Пример

Следующий пример аналогичен приведенному в описании функции DialogBox, за исключением тех изменений, которые требуются для использования функции DialogBoxIndirect. Обратите внимание, что нет необходимости разблокировать или освобождать загруженный ресурс диалогового окна.

 

См.    \local-sources\chap08\08-08.txt

 

DialogBoxIndirectParam                       • Windows 98   * Windows 2000

 

Описание

Функция DialogBoxIndirectParam аналогична функции DialogBoxIndirect, за исключением того, что в ней имеется дополнительный параметр. Этот дополнительный параметр позволяет передавать значение LPARAM (обычно дескриптор памяти) в качестве IParam, когда процедура диалогового окна принимает сообщение WM_INITDIALOG.

 

Синтаксис

INT_PTR DialogBoxIndirectParam( HINSTANCE hlnstance, LPCDLGTEMPLATE IpTemplate, HWND hWndParent, DLGPROC dlgprc, LPARAM IParamlnit )

 

Параметры

 

hlnstance

HINSTANCE. Дескриптор экземпляра модуля, который создает диалоговое окно.

 

lp Template

LPCDLGTEMPLATE. Указатель на глобальный объект памяти, который содержит шаблон, используемый для создания диалогового окна. Этот шаблон представлен в виде структуры DLGTEMPLATE, за которой следует одна или несколько структур DLGITEMTEMPLATE.

 

hWndParent

HWND. Дескриптор окна, которое является владельцем данного диалогового окна.

 

dlgprc

DLGPROC. Указатель на процедуру диалогового окна. Процедура диалогового окна обрабатывает сообщения для диалогового окна. Определение функции DialogProc приведено в описании функции CreateDialog.

 

IParamlnit

LPARAM.  Значение,  передаваемое функции   DialogProc в сообщении WM_INITDIALOG. Обычно это значение применяется для передачи дескриптора блока памяти, содержащего данные, которые диалоговое окно должно использовать или изменить.

 

Возвращаемое значение

INT_PTR. Возвращаемое значение равняется параметру nResult, переданному при вызове функции EndDialog. Возвращаемое значение равно -1, если диалоговое окно не может быть создано.

 

Включаемый файл

winuser.h

 

См. также

DialogBox, DialogBoxIndirect, DialogBoxParam

Соответствующие сообщения

WMJNITDIALOG

Пример

В следующем примере создается такое же диалоговое окно, как в примерах, приведенных при описании функций DialogBox и DialogBoxIndirect. В этом случае применяется более сложная функция DialogBoxIndirectParam, которая позволяет передать данные для диалогового окна в определяемой пользователем структуре данных, получившей имя DLGDATA. Поскольку в этой функции применяется косвенная загрузка ресурса диалогового окна, о чем сообщает слово "indirect" в имени функции, данные ресурса обозначены   указателем,   полученным   при   выполнении   комбинации   функций LoadResource и LockResource.

См.     \local-sources\chap08\08-09. txt

DialoqBoxParam                                   * Windows 98   *  Windows 2000

Описание

Функция DialogBoxParam аналогична функции DialogBox, за исключением того, что в ней имеется дополнительный параметр. Этот дополнительный параметр позволяет передавать значение LPARAM (обычно дескриптор памяти) в качестве IParam, когда процедура диалогового окна принимает сообщение WMJNITDIALOG. По-видимому, это одна из самых эффективных функций DialogBox для создания обычных диалоговых окон. Элемент данных LPARAM позволяет обмениваться данными между функцией WndProc программы и функцией диалогового окна без использования глобальных переменных. Функция DialogBoxParam проще в использовании по сравнению с функцией DialogBoxIndirectParam, поскольку для нее требуется только имя определения диалогового окна. Эта функция позволяет избежать сложностей, связанных с отдельной загрузкой данных ресурса диалогового окна, но исключает возможность модифицировать шаблон диалогового окна в памяти в ходе выполнения приложения.

Синтаксис

INT_PTR DialogBoxParam( HINSTANCE hlnstance, LPCTSTR IpszTemplate. HWND hWndParent, DLGPROC dlgprc, LPARAM IParamlnit)

Параметры

hlnstance

HINSTANCE. Дескриптор экземпляра модуля, выполняемый файл которого содержит шаблон диалогового окна.

IpszTemplate

LPCTSTR. Указатель на символьную строку, содержащую имя шаблона диалогового окна в файле ресурса. Если параметр указывает идентификатор ресурса, его старшее слово должно быть равно 0, а младшее слово должно содержать идентификатор. Для создания этого- значения применяется макрокоманда MAKEINTRESOURCE.

hWndParent

HWND. Дескриптор родительского окна. Уничтожение родительского окна автоматически приводит к уничтожению немодального диалогового окна.

dlgprc

DLGPROC. Указатель на процедуру диалогового окна. Процедура диалогового окна обрабатывает сообщения для диалогового окна. Определение функции DialogProc приведено в описании функции CreateDialog.

IParamlnit

LPARAM. Значение, передаваемое функции DialogProc в сообщении WMJNITDIALOG.

Возвращаемое значение

INT_PTR. Возвращаемое значение равняется параметру nResult, переданному при вызове функции EndDialog. Возвращаемое значение равно -1, если диалоговое окно не может быть создано.

 

Включаемый файл

\vinuser.h

 

См. также

DialogBox, DialogBoxIndirectParam, DialogBoxIndirect

 

Соответствующие сообщения

 

WMJNITDIALOG

 

Пример

В следующем примере создается такое же диалоговое окно, как и в примере, приведенном при описании функции DialogBox. Однако в этом случае используется более сложная функция DialogBoxParam. В этом примере показано, как передавать данные для диалогового окна в определяемой пользователем структуре данных, которая носит имя DLGDATA.

 

См.    \local-sources\chap08\08-10. txt

 

DlgDirList                                            • Windows 98   * Windows 2000

 

Описание

Функция DlgDirList позволяет внести в элемент управления списком диалогового окна ряд имен файлов, которые соответствуют шаблону поиска файла. В этот список можно дополнительно включить отображенные диски с буквенным обозначением. ,

 

Синтаксис

int DlgDirList( HWND hwndDlg, LPTSTR IpszPath, int nIDListBox, (int nIDStaticPath, UINT uFileType )

 

Параметры

 

hwndDlg

HWND. Дескриптор диалогового окна, которое содержит список.

 

IpszPath

LPTSTR. Указатель на символьную строку с нулевым символом в конце, содержащую шаблон поиска. Например, строка "C:\DOCUMENTSV.DOC" указывает, что в листинг каталога должны быть внесены все файлы с расширением .DOC, которые находятся в подкаталоге DOCUMENTS. Допустимо также использовать имена путей UNC (Unified Naming Convention — Унифицированное соглашение об именовании). Например, строка "\\MACHINENAME\SHARENAME\DOCUMENTSV.DOC" указывает, что в листинг каталога должны войти все файлы с расширением DOC, которые   находятся   на   указанном   компьютере   и   ресурсе   в   подкаталоге DOCUMENTS.

 

nIDListBox

int. Идентификатор списка. Если этот параметр равен 0, функция DlgDirList исходит из того, что список не существует, и не пытается его заполнить.

 

nWStaticPath

int. Идентификатор статического элемента управления, предназначенного для отображения текущего диска и каталога. Если этот параметр равен 0, функция DlgDirList исходит из того, что такой элемент управления не существует.

 

uftleType

UINT. Атрибуты имен файлов, которые должны быть отображены. Этот параметр должен принимать одно или несколько значений, показанных в табл. 8.3.

 

Возвращаемое значение

int. Если листинг подготовлен (даже пустой), возвращаемое значение отлично от нуля. Если параметр IpszPathне содержит допустимый путь поиска файлов, возвращаемое значение — 0.

 

Таблица 8.3. ЗначенияпараметраuFileType функцииDlgDirList

 

Значение

Описание

 

DDL_ARCHIVE

Включить архивированные файлы.

 

DDL_DIRECTORY

Включить подкаталоги. Имена подкаталогов заключены в квадратные скобки ([]).

 

DDL_DRIVES

Включить диски. Диски перечислены в виде [-Х-], где химя диска.

 

DDL_EXCLUSIVE

Включить только файлы с указанными атрибутами. По умолчанию файлы, предназначенные для чтения/записи, вносятся в список, даже если не указан параметр DDL_READWRITE.

 

DDL_HIDDEN

Включить скрытые файлы.

 

DDL_READONLY

Включить файлы, предназначенные только для чтения.

 

DDL_READWRITE

Включить файлы, предназначенные для чтения/записи, записи без дополнительных атрибутов.

 

DDL_SYSTEM

Включить системные файлы.

 

DDL_POSTMSGS

Отправить сообщения в очередь сообщений приложения. По умолчанию функция  DlgDirList посылает сообщения непосредственно процедуре диалогового окна.