Win32 API. Справочник по стандартному диалоговому окну
Страница 16. Фильтр - процедура OFNHookProcOldStyle


Фильтр - процедура OFNHookProcOldStyle

Фильтр - процедура OFNHookProcOldStyle - это определяемая программой или определяемая библиотекой процедура обратного вызова, которая используется стандартными диалоговыми окнами Открыть (Open) и Сохранить как (Save As). Фильтр - процедура принимает сообщения или предупреждения, предназначенные для процедуры блока диалога.
Если вы, при создании стандартного диалогового окна Открыть (Open) или Сохранить как (Save As), установили флажок OFN_EXPLORER и вам потребовалась фильтр - процедура, вы должны использовать фильтр - процедуру OFNHookProc в стиле Проводника.

Синтаксис

UINT APIENTRY OFNHookProcOldStyle
(
HWND hdlg,// дескриптор окна блока диалога
UINT uiMsg,// идентификатор сообщения
WPARAM wParam,// параметр сообщения
LPARAM lParam // параметр сообщения
);

Параметры
hdlg
Дескриптор окна блока диалога Открыть (Open) или Сохранить как (Save As) для которого предназначено сообщение.
uiMsg
Идентифицирует принимаемое сообщение.
wParam
Определяет дополнительную информацию о сообщении. Точное значение зависит значения параметра uiMsg.
lParam
Определяет дополнительную информацию о сообщении. Точное значение зависит значения параметра uiMsg.
Если параметр uiMsg показывает сообщение WM_INITDIALOG, lParam - указатель на структуру OPENFILENAME, содержащую значения установленные тогда, когда было создано диалоговое окно.

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

Замечания
Когда вы используете функции GetOpenFileName или GetSaveFileName, чтобы создать диалоговое окно Открыть (Open) или Сохранить как (Save As) в старом стиле, вы можете предоставить фильтр - процедуру OFNHookProcOldStyle. Чтобы разрешить работу фильтр - процедуре, используй те структуру OPENFILENAME, которой вы передали обязанности по созданию блока диалога. Установите указатель на ее в элементе lpfnHook, а в элементе Flags установите флажок OFN_ENABLEHOOK.
По умолчанию процедура диалогового окна обрабатывает сообщение WM_INITDIALOG пред передачей его в фильтр - процедуру. Для всех других сообщений, фильтр - процедура первая принимает сообщение. Затем, возвращаемое значение ее определяет, обрабатывает ли заданная по умолчанию процедура диалогового окна сообщение или игнорирует его.
Если фильтр - процедура обрабатывает сообщение WM_CTLCOLORDLG, она должна возвратить дескриптор допустимой кисти для закрашивания фона диалогового окна. В общем случае, если фильтр - процедура обрабатывает какое-либо сообщение WM_CTLCOLOR*, она должна возвратить дескриптор допустимой кисти для закрашивания фона определяемого элемента управления.
Не вызывайте функцию EndDialog из фильтр - процедуры. Вместо этого она может вызвать функцию PostMessage, чтобы послать сообщение со значением IDABORT в процедуру диалогового окна. Извещение IDABORT закрывает диалоговое окно и заставляет функцию диалогового окна возвратить значение ЛОЖЬ (FALSE). Если вам нужно узнать почему фильтр - процедура закрыла блок диалога, вы должны предоставить свой собственный механизм связи между фильтр - процедурой и вашей прикладной программой.
Вы можете поделить на классы стандартные элементы управления обшего диалогового окна. Однако и процедура стандартного диалогового окна может также поделить на классы элементы управления. По этой причине, вы должны делить на классы элементы управления тогда, когда ваша фильтр - процедура обрабатывает сообщение WM_INITDIALOG. Это гарантирует то, что ваша процедура подкласса принимает определенные элементом управления сообщения перед процедурой подкласса, установленной процедурой диалогового окна.
OFNHookProcOldStyle - метка - заместитель для определяемого программой или определенного библиотекой имени функции. Тип LPOFNHOOKPROC - указатель на фильтр - процедуру или OFNHookProcOldStyle или OFNHookProc.

Смотри также
GetOpenFileName, GetSaveFileName, OFNHookProc, OPENFILENAME, WM_INITDIALOG

Размещение и совместимость OFNHookProcOldStyle

Windows NTДа 
Win95Да
Win32sДа
Импортируемая библиотекаОпределяется пользователем
Заголовочный файл-
UnicodeНет
Замечания по платформеLPOFNHOOKPROC

 

 
« Предыдущая статья   Следующая статья »