Уведомляющие сообщения пользовательского органа управления


Органы управления - дочерние окна. Когда система создает органы управления для диалогового окна, каждый орган управления - это дочерний элемент диалогового окна. Когда приложение создает орган управления, то орган управления - дочерний элемент окна, идентифицированного приложением. Эти отношения важны, потому что орган управления отправляет сообщения, называемые уведомляющими сообщениями (notification messages), своему родительскому окну, когда события, такие как ввод данных пользователем, происходят в органе управления. Приложение зависит от этих уведомляющих сообщений, чтобы определить, какое действие пользователь желает, чтобы приложение получило.

Орган управления должен отправить уведомляющее сообщение своему родительскому окну, чтобы уведомить родителя о том, что пользователь вводит данные или изменяет орган управления. Уведомляющее сообщение - это сообщение WM_COMMAND, которое включает в себя идентификатор органа управления и код уведомления, идентифицирующий природу события. Идентификатор органа управления (control identifier) - это уникальное число, которое приложение использует, чтобы идентифицировать орган управления при отправке сообщения. Приложение устанавливает идентификатор для органа управления, когда оно создает его. Приложение определяет идентификатор или в параметре hMenu функции CreateWindowEx или в члене id структуры DLGITEMTEMPLATEEX.

Поскольку орган управления не устанавливает свой идентификатор, он должен извлечь его прежде, чем он сможет отправлять уведомляющие сообщения. Орган управления должен использовать функцию GetDlgCtrlID, чтобы извлечь свой собственный идентификатор. Хотя идентификатор органа управления определяется как дескриптор меню, когда орган управления создается, однако функция GetMenu не может использоваться, чтобы извлечь этот идентификатор. Альтернативно, орган управления может извлечь идентификатор из члена hMenu структуры CREATESTRUCT, обрабатывая сообщение WM_CREATE.

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

Hosted by uCoz