На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Explorer-Style Hook Procedures



You can customize an Explorer-style Open or Save As dialog box by providing a hook procedure, a custom template, or both. If you provide a hook procedure for an Explorer-style dialog box, the system creates a dialog box that is a child of the default dialog box. The hook procedure acts as the dialog procedure for the child dialog box. This child dialog box is based on the custom template, or on a default template if none is provided. For more information, see Explorer-Style Custom Templates.To enable a hook procedure for an Explorer-style Open or Save As dialog box, use the OPENFILENAME structure when you create the dialog box. Set the OFN_ENABLEHOOK and OFN_EXPLORER flags in the Flags member and specify the address of an OFNHookProc hook procedure in the lpfnHook member. If you provide a hook procedure and omit the OFN_EXPLORER flag, you must use an OFNHookProcOldStyle hook procedure and you will get the old-style user-interface. For more information, see Customizing Old-Style Dialog Boxes.

An Explorer-style hook procedure receives a variety of messages while the dialog box is open. These include the following:

· The WM_INITDIALOG message and other standard dialog box messages such as the WM_CTLCOLORDLG control color message.
· A set of WM_NOTIFY notification messages indicating actions taken by the user or other dialog box events.
· Messages for any additional controls that you defined by specifying a child dialog template.



In addition, there is a set of messages that you can send to an Explorer-style dialog box to get information or to control the behavior and appearance of the dialog box.
If you provide a hook procedure for an Explorer-style dialog box, the default dialog box procedure creates a child dialog box when the default dialog procedure is processing its WM_INITDIALOG message. The hook procedure acts as the dialog procedure for the child dialog box. At this time, the hook procedure receives its own WM_INITDIALOG message with the lParam parameter set to the address of the OPENFILENAME structure used to initialize the dialog box. After the child dialog finishes processing its own WM_INITDIALOG message, the default dialog procedure moves the standard controls, if necessary, to make room for any additional controls of the child dialog box. The default dialog procedure then sends the CDN_INITDONE notification message to the hook procedure.

The hook procedure receives WM_NOTIFY notification messages indicating actions taken by the user in the dialog box. You can use some of these messages to control the behavior of the dialog box. For example, the hook procedure receives the CDN_FILEOK message when the user chooses a filename and clicks the OK button. In response to this message, the hook procedure can use the SetWindowLong function to reject the selected name and force the dialog box to remain open.

The lParam parameter for each WM_NOTIFY message is a pointer to an OFNOTIFY structure that defines the action. The code member in the header for the OFNOTIFY structure contains one of the following notification codes.

CDN_FILEOK The user clicked the OK button; the dialog box is about to close.
CDN_FOLDERCHANGE The user opened a new folder or directory.
CDN_HELP The user clicked the Help button.
CDN_INITDONE The system has finished initializing the dialog box, and the dialog box has finished processing the WM_INITDIALOG message. Also, the system has finished arranging controls in the common dialog box to make room for the controls of the child dialog box (if any).
CDN_SELCHANGE The user selected a new file or folder from the file list.
CDN_SHAREVIOLATION The common dialog box encountered a sharing violation on the file about to be returned.
CDN_TYPECHANGE The user selected a new file type from the list of file types.



These WM_NOTIFY messages supersede the FILEOKSTRING, LBSELCHSTRING, SHAREVISTRING, and HELPMSGSTRING registered messages used by previous versions of the Open and Save As dialog boxes. However, the hook procedure also receives the superseded message after the WM_NOTIFY message if the WM_NOTIFY processing does not use SetWindowLong to set a nonzero DWL_MSGRESULT value.
To retrieve information about the status of the dialog box or to control the behavior and appearance of the dialog box, the hook procedure can send the following messages to the dialog box.

CDM_GETFILEPATH Retrieves the path and filename of the selected file.
CDM_GETFOLDERIDLIST Retrieves the item identifier list corresponding to the current folder that the dialog box has open. For more information about item identifier lists, see Item Identifiers and Identifier Lists.
CDM_GETFOLDERPATH Retrieves the path of the current folder or directory for the dialog box.
CDM_GETSPEC Retrieves the filename (not including the path) of the file currently selected in the dialog box.
CDM_HIDECONTROL Hides the specified control.
CDM_SETCONTROLTEXT Sets the text in the specified control.
CDM_SETDEFEXT Sets the default filename extension for the dialog box.



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

ПРОЦЕДУРЫ Захвата Explorer-Style



Вы можете модифицировать по заказу пользователя Исследователя-стиля Открытого или Сохранять Как диалоговый ящик обеспечивая рычажную процедуру, заказной шаблон, или оба. Если Вы обеспечиваете рычажную процедуру для Исследователя-стиля диалогового ящика, система создает диалоговый ящик, который - ребенок встроенного диалогового ящика. Рычажная процедура действует как диалоговая процедура для диалогового ящика ребенка. Этот диалоговый ящик ребенка основан в заказном шаблоне, или во встроенном шаблоне если ничто не предусмотрен. Более подробно, смотри Заказные Шаблоны Explorer-Style.Для того, чтобы приспосабливаться рычажную процедуру для Исследователя-стиля Открытого или Сохранять Как диалоговый ящик, используйте структуру OPENFILENAME когда Вы создаете диалоговый ящик. Установите OFN_ENABLEHOOK и флаги OFN_EXPLORER на члене Флагов и определяют адрес процедуры захвата OFNHookProc на члене lpfnHook. Если Вы обеспечиваете рычажную процедуру и опускаете флаг OFN_EXPLORER, Вы должны использовать процедуру захвата OFNHookProcOldStyle и Вы получите старый стиль-интерфейс потребителя. Более подробно, видьте как Модифицировать по заказу пользователя Диалога Old-Style Боксировало.

Исследователь-стиль процедуры захвата получает ряд сообщений пока диалоговый ящик открытый. Эти включают следующее:

Сообщение WM_INITDIALOG и другие стандартные диалоговые сообщения ящика как например, управляющее цветное сообщение WM_CTLCOLORDLG.
Набор сообщений уведомления WM_NOTIFY, указывающего действия взятые потребителем или другими диалоговыми событиями ящика.
Сообщения для любых дополнительных элементов управления, которые Вы определили определением диалогового шаблона ребенка.



Кроме того, есть установка сообщений, которые Вы можете послать диалоговому блоку стиля Explorer-, чтобы получать информацию или, чтобы управлять поведением и появлением диалогового блока.
Если Вы обеспечиваете рычажную процедуру для диалогового блока стиля Explorer-, по умолчанию диалоговый блок процедуры создает диалогового блока ребенка когда по умолчанию диалоговая процедура обрабатывает свое сообщение WM_INITDIALOG. Рычажная процедура действует как диалоговая процедура для диалогового блока ребенка. В на этот раз, рычажная процедура получает свое собственное сообщение WM_INITDIALOG с параметром lParam установленным по адресу структуры OPENFILENAME использованным, чтобы инициализировать диалогового блока. После того, как диалог ребенка завершит обработку собственного сообщения WM_INITDIALOG, по умолчанию диалоговая процедура перемещает стандартные элементы управления, если необходимо, чтобы освобождать для любого дополнительного управления ребенком общаться блок. По умолчанию диалоговая процедура затем посылает сообщение уведомления CDN_INITDONE в рычажную процедуру.

Рычажная процедура получает сообщения уведомления WM_NOTIFY, указывающие действия взятые пользователем в диалоговом блоке. Вы можете использовать некоторые из них сообщения, чтобы управлять поведением диалогового блока. Например, рычажная процедура получает сообщение CDN_FILEOK когда пользователь выбирает filename и щелкает кнопку OK. В ответ на это сообщение, рычажная процедура может использовать функцию SetWindowLong, чтобы отвергать выбранное имя и заставлять диалогового блока, чтобы оставаться открытым.

Параметр lParam для каждого сообщения WM_NOTIFY - указатель в структуре OFNOTIFY, которая определяет действие. Кодовый элемент в заголовке для структуры OFNOTIFY содержит один из следующих кодов уведомления.

CDN_FILEOK пользователь щелкал кнопку OK; диалоговый блок собирается закрываться.
CDN_FOLDERCHANGE пользователь открывал новую папку или директорий.
CDN_HELP пользователь щелкал кнопку Подсказки.
CDN_INITDONE система завершила инициализируя диалогового блока, и диалоговый блок завершил обрабатывая сообщение WM_INITDIALOG. Также, система завершила устраивая элементы управления в общем диалоговом блоке, чтобы освобождать для управления ребенком общаться блок (если имеется).
CDN_SELCHANGE пользователь выбирался новый файл или папку из файлового списка.
CDN_SHAREVIOLATION общий диалоговый блок сталкивался с использующим нарушением в файле вновь возвращавшем.
CDN_TYPECHANGE пользователь выбирался новый файловый тип из списка файловых типов.



Эти сообщения WM_NOTIFY заменяют FILEOKSTRING, LBSELCHSTRING, SHAREVISTRING, и HELPMSGSTRING зарегистрировавший, что сообщения использовались предшествующими версиями Открывать и Сохранять Как диалоговые блоки. Тем не менее, рычажная процедура также получает замененное сообщение после сообщения WM_NOTIFY если обработка WM_NOTIFY не использует SetWindowLong, чтобы устанавливать ненулевую величину DWL_MSGRESULT.
Чтобы извлекать информацию о статусе диалогового блока или, чтобы управлять поведением и появлением диалогового блока, рычажная процедура может послать следующие сообщения диалоговому блоку.

CDM_GETFILEPATH Извлекает путь и filename выбранного файла.
CDM_GETFOLDERIDLIST Извлекает список идентификатора пункта, соответствуемый в текущую папку, которую диалоговый блок имеет открытый. Более подробно о списках идентификатора пункта, смотри Идентификаторы Пункта и Списков Идентификатора.
CDM_GETFOLDERPATH Извлекает путь текущей папки или директория для диалогового блока.
CDM_GETSPEC Извлекает filename (не включая путь) файла к настоящему времени выбранного в диалоговом блоке.
CDM_HIDECONTROL Прячут определенное управление.
CDM_SETCONTROLTEXT Устанавливает текст на определенном управлении.
CDM_SETDEFEXT Устанавливает по умолчанию filename расширение для диалогового блока.



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz