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