92978b58

Сообщение WM_CONTROL


Рассмотрим параметры сообщения WM_CONTROL , поступающее в функцию родительского окна от переключателей.

Через младшее слово параметра mp1 этого сообщения передается идентификатор переключателя:

id = SHORT1FROMMP (mp1);

Если в окне создано несколько переключателей, следует проанализировать значение id для определения переключателя, который послал сообщение WM_CONTROL .

Старшее слово параметра mp1 содержит код извещения, который для переключателя может иметь значение BN_CLICKED или BN_DBLCLICKED . В первом случае пользователь сделал одиночный щелчок мышью по переключателю, во втором - двойной. Вот пример извлечения кода извещения:

nNotifCode = SHORT2FROMMP (mp1);

Если переключатель был создан с использованием стиля BS_USERBUTTON , в старшем слове параметра mp1 может передаваться код извещения BN_PAINT . В этом случае переключатель должен нарисовать себя в одном из трех состояний: заблокированном, выбранном или обычном. Подробнее об этом мы расскажем в одной из следующих наших книг, посвященных программированию для IBM OS/2.

И, наконец, для обычных переключателей через параметр mp2 сообщения WM_CONTROL передается идентификатор окна переключателя. Для переключателей со стилем BS_USERBUTTON через этот параметр передается указатель на структуру USERBUTTON , определенную следующим образом:

typedef struct _USERBUTTON { HWND hwnd; // идентификатор окна HPS hps; // идентификатор пространства отображения ULONG fsState; // новое состояние переключателя ULONG fsStateOld; // старое состояние переключателя } USERBUTTON; typedef USERBUTTON *PUSERBUTTON;




Начало  Назад  Вперед