Уроки Iczelion'а




Урок 11. Больше о диалоговых окнах - часть 2


Hиже приведен прототип функции GetOрenFileName.

GetOpenFileName proto lpofn:DWORD

Вы можете видеть, что она получает только один параметр, указатель на структуру OPENFILENAME. Возвращаемое значение TRUE показывает, что пользователь выбрал файл, который нужно открыть, FALSE означает обратное. Сейчас мы рассмотрим на структуру OPENFILENAME:

OPENFILENAME STRUCT lStructSize DWORD ? hwndOwner HWND ? hInstance HINSTANCE ? lpstrFilter LPCSTR ? lpstrCustomFilter LPSTR ? nMaxCustFilter DWORD ? nFilterIndex DWORD ? lpstrFile LPSTR ? nMaxFile DWORD ? lpstrFileTitle LPSTR ? nMaxFileTitle DWORD ? lpstrInitialDir LPCSTR ? lpstrTitle LPCSTR ? Flags DWORD ? nFileOffset WORD ? nFileExtension WORD ? lpstrDefExt LPCSTR ? lCustData LPARAM ? lpfnHook DWORD ? lpTemplateName LPCSTR ? OPENFILENAME ENDS

Давайте рассмотрим значение часто используемых параметров.

lStructSize размер структуры OPENFILENAME в байтах.
hwndOwner Хэндл файлового диалогового окна.
hInstance Хэндл процесса, который создает файловое диалоговое окно.
lрstrFilter Строка-фильтр состоит из парных строк, разделенных null'ом. Первая строка в каждой паре - это описание. Вторая строка - это шаблон фильтра. Hапример:

FilterString db "All Files (*.*)",0, "*.*",0 db "Text Files (*.txt)",0,"*.txt",0,0

Отметьте, что шаблон во второй строке каждой пары действительно используется для отфильтровки файлов. Также отметьте, что вам нужно добавить дополнительный 0 в конце фильтровых строк, чтобы указать конец.

Определите, какая пара фильтровых строк будет использоваться при первом отображении файлового диалогового окна. Индекс основывается на единице, то есть первая пара - 1, вторая - 2 и так далее. Поэтому в вышеприведенном экземпляре, если мы укажем nFilterIndex как 2, будет использован второй шаблон - "*.txt".

lрstrFile Указатель на буфер, который содержит имя файла, используемого для инициализации edit control'а имени файла на диалоговом окне. Буфер должен быть длиной по крайней мере 260 байтов.

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

nMaxFile размер буфера.
lрstrTitle Указатель на заголовок открытого файлового диалогового окна.
Flags Определите стили и характеристики диалогового окна.
nFileOffset После того, как юзер выбрал файл для отрытия, этот параметр содержит индекс первого символа собственно названия файла. Hапример, если полное имя с путем "c:\windows\system\lz32.dll", то этот параметр будет содержать значение 18.
nFileExtension После того, как пользователь выберет файл для открытия, этот параметр содержит индекс первого символа расширения файла.
<


Содержание  Назад  Вперед