Страница 13 из 59
Фильтр - процедура CFHookProc Фильтр - процедура CFHookProc - определяемая программой или определенная библиотекой процедура повторного вызова, которая используется стандартным диалоговым окном Шрифт (Font). Фильтр - процедура принимает сообщения или сообщения, предназначенные для заданной по умолчанию процедуры диалогового окна. Синтаксис UINT APIENTRY CFHookProc ( HWND hdlg,// дескриптор окна блока диалога UINT uiMsg,// код сообщения WPARAM wParam,// параметр сообщения LPARAM lParam // параметр сообщения );
Параметры hdlg Дескриптор окна блока диалога Шрифт (Font), для которого предназначено сообщение. uiMsg Идентифицирует полученное сообщение. wParam Определяет дополнительную информацию о сообщении. Точное значение зависит от значения параметра uiMsg. lParam Определяет дополнительную информацию о сообщении. Точное значение зависит от значения параметра uiMsg. Если параметр uiMsg обозначает сообщение WM_INITDIALOG, lParam - указатель на структуру CHOOSEFONT, содержащую значения, которые были определены, когда было создано стандартное диалоговое окно. Возвращаемые значения. Если фильтр - процедура возвращает нуль, заданная по умолчанию процедура диалогового окна обрабатывает сообщение. Если фильтр - процедура возвращает значение отличное от нуля, заданная по умолчанию процедура диалогового окна игнорирует сообщение. Замечания Когда вы используете функцию ChooseFont, чтобы создать Диалоговое окно Шрифт (Font), вы можете предоставить фильтр - процедуру CFHookProc, чтобы обработать сообщения или предупреждения, предназначенные для процедуры диалогового окна. Чтобы разрешить действие фильтр - процедуры, используйте структуру CHOOSEFONT, которую вы передали в функцию создания диалоговое окна. Установите адрес фильтр - процедуры в элементе lpfnHook, и установите флажок CF_ENABLEHOOK в элементе Flags. Заданная по умолчанию процедура диалогового окна обрабатывает сообщение WM_INITDIALOG перед передачей его в фильтр - процедуру. Все другие сообщения, сначала принимает фильтр - процедура. Затем, возвращаемое значение фильтр - процедурой определяет, обрабатывает ли заданная по умолчанию процедура диалогового окна сообщение или игнорирует его. Если фильтр - процедура обрабатывает сообщение WM_CTLCOLORDLG, она должна возвратить допустимый дескриптор кисти для закрашивания фона диалогового окна. Вообще, если фильтр - процедура обрабатывает какое-либо сообщение WM_CTLCOLOR*, она должна возвратить допустимый дескриптор кисти для закрашивания фона определяемого элемента управления. Не вызывайте функцию EndDialog из фильтр - процедуры. Вместо этого, она может вызывать функцию PostMessage, чтобы послать сообщение WM_COMMAND со значением IDABORT в процедуру диалогового окна. Посылка IDABORT закрывает диалоговое окно и вынуждает функцию блока диалога возвратить значение ЛОЖЬ (FALSE). Если Вам нужно знать, почему фильтр - процедура закрыла диалоговое окно, вы должны предоставить свой собственный механизм связи между фильтр - процедурой и вашей прикладной программой. Вы можете делить на подклассы стандартные элементы управления общего диалогового окна. Однако, и процедура стандартного диалогового окна может тоже делить на подклассы элементы управления. По этой причине, вы должны делить на подклассы элементы управления тогда, когда ваша фильтр - процедура обрабатывает сообщение WM_INITDIALOG. Это гарантирует, что ваша процедура подкласса получит определенные элементом управления сообщения раньше процедуры подкласса, установленной процедурой диалогового окна. CFHookProc - метка - заместитель для определяемого программой или определенного библиотекой имени функции. Тип LPCFHOOKPROC - указатель на фильтр - процедуру CFHookProc. Смотри также ChooseFont, CHOOSEFONT, EndDialog, PostMessage, WM_INITDIALOG, WM_CTLCOLORDLG Размещение и совместимость CFHookProc Windows NTДа Win95Да Win32sДа Импортируемая библиотекаОпределяемая пользователем Заголовочный файлcommdlg.h УникодНет Замечания по платформеLPCFHOOKPROC |