Фильтр - процедура OFNHookProcOldStyle - это определяемая программой или библиотекой процедура обратного вызова, которая используется стандартными диалоговыми окнами Открыть (Open) и Сохранить как (Save As). Функция принимает сообщения или уведомления, предназначенные для процедуры блока диалога.
Тип LPOFNHOOKPROC определяет указатель на эту функцию обратного вызова. OFNHookProcOldStyle - имя - заместитель для определяемого программой или библиотекой имени функции.
Если вы, при создании стандартного диалогового окна Открыть (Open) или Сохранить как (Save As), установили флажок OFN_EXPLORER, а вам потребовалась фильтр - процедура, вы должны использовать фильтр - процедуру OFNHookProc в стиле Проводника.
Синтаксис
UINT_PTR CALLBACK OFNHookProcOldStyle( HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam ); |
Параметры
hdlg
[in] Дескриптор окна блока диалога Открыть (Open) или Сохранить как (Save As) для которого предназначено сообщение.
uiMsg
[in] Идентифицирует принимаемое сообщение.wParam
[in] Определяет дополнительную информацию о сообщении. Точное значение зависит значения параметра uiMsg.lParam
[in] Определяет дополнительную информацию о сообщении. Точное значение зависит значения параметра uiMsg.Если параметр uiMsg обозначает сообщение WM_INITDIALOG, lParam - указатель на структуру OPENFILENAME, содержащую значения установленные тогда, когда создавалось диалоговое окно.
Возвращаемое значение
Если фильтр (hook) - процедура событий возвращает нуль, заданная по умолчанию процедура диалогового окна обрабатывает сообщение.
Если фильтр (hook) - процедура событий возвращает ненулевое значение, заданная по умолчанию процедура диалогового окна игнорирует это сообщение.
Замечания
Когда вы используете функцию GetOpenFileName или GetSaveFileName, чтобы создать диалоговое окно Открыть (Open) или Сохранить как ( Save As) в старом стиле, то можете предусмотреть фильтр - процедуру OFNHookProcOldStyle. Чтобы подключить ее, используйте структуру OPENFILENAME, которую вы передали в функцию создания диалогового окна. Установите указатель на фильтр - процедуру в члене lpfnHook, а в члене Flags установите флажок OFN_ENABLEHOOK.
По умолчанию процедура диалогового окна обрабатывает сообщение WM_INITDIALOG пред передачей его в фильтр - процедуру. Для всех других сообщений, фильтр - процедура первая принимает сообщение. Затем, возвращаемое значение ее определяет, обрабатывать ли заданной по умолчанию процедуре диалогового окна это сообщение или проигнорировать его.
Если фильтр - процедура обрабатывает сообщение WM_CTLCOLORDLG то, она должна возвратить допустимый дескриптор кисти для закрашивания фона диалогового окна. В большинстве случаев, если она обрабатывает какое-либо сообщение WM_CTLCOLOR*, то должна возвратить допустимый дескриптор кисти для закрашивания фона заданного органа управления.
Не вызывайте функцию EndDialog из фильтр - процедуры. Вместо этого она может вызвать функцию PostMessage, чтобы послать сообщение WM_COMMAND со значением IDABORT процедуре диалогового окна. Извещение IDABORT закрывает диалоговое окно и заставляет функцию диалогового окна возвратить значение ЛОЖЬ (FALSE). Если вам нужно узнать почему фильтр - процедура закрыла блок диалога, вы должны предоставить свой собственный механизм связи между фильтр - процедурой и вашей прикладной программой.
Вы можете поделить на подклассы стандартные органы управления общего диалогового окна. Однако и процедура стандартного диалогового окна может также поделить на подклассы органы управления. По этой причине, вы должны делить на подклассы элементы управления тогда, когда ваша фильтр - процедура обрабатывает сообщение WM_INITDIALOG. Это гарантирует то, что ваша процедура подкласса принимает определенные органом управления сообщения перед процедурой подкласса, установленной процедурой диалогового окна.
Смотри также
Обзор Библиотека стандартных диалоговых окон, Функции, используемые библиотекой стандартных диалоговых окон, GetOpenFileName, GetSaveFileName, OFNHookProc, OPENFILENAME, WM_INITDIALOG
Размещение и совместимость OFNHookProcOldStyle |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
- |
Заголовочный файл |
|
- объявлено в |
Commdlg.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |