Функция CCHookProc


Фильтр - процедура 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

Нет

Замечания по платформе

Не имеется

 
Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz