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