Коды извещения
Текстовый редактор посылает в родительское окно сообщение WM_COMMAND с параметром wParam, равным идентификатору редактора. Этот идентификатор можно использовать для того чтобы различать сообщения, поступающие от разных органов управления (в частности, от разных текстовых редакторов, если в одном окне их создано несколько штук).
Младшее слово параметра lParam содержит идентификатор окна, полученный от функции CreateWindow при создании редактора.
Старшее слово параметра lParam содержит код извещения. Анализируя этот код, приложение может определить событие, послужившее причиной появления сообщения WM_COMMAND.
Приведем список кодов извещений.
Код извещения | Описание |
EN_CHANGE | Изменилось содержимое текста в окне редактирования |
EN_ERRSPACE | Произошла ошибка при попытке получить дополнительную память |
EN_HSCROLL | Выполнена свертка текста по горизонтали. Пользователь использовал горизонтальную полосу просмотра для свертки текста, но изменения в окне редактирования еще не произошли |
EN_KILLFOCUS | Текстовый редактор потерял фокус ввода |
EN_MAXTEXT | При вводе очередного символа произошло переполнение, так как было превышен максимально допустимый для редактора размер текста |
EN_SETFOCUS | Текстовый редактор получил фокус ввода |
EN_UPDATE | Содержимое текстового редактора будет изменено. Пользователь ввел один символ текста или выполнил другую операцию редактирования, но выполнение этой операции еще не отразилось на содержимом окна редактирования. После этого извещения после отображения изменений придет извещение с кодом EN_CHANGE |
EN_VSCROLL | Выполнена свертка текста по вертикали. Пользователь использовал вертикальную полосу просмотра для свертки текста, но изменения в окне редактироания еще не произошли |
Ваше приложение должно обрабатывать, по крайней мере, извещение с кодом EN_ERRSPACE, которое приходит в том случае, если редактор текста не смог заказать для себя дополнительную память.
Так же как редактор текста, список посылает в родительское окно сообщение WM_COMMAND (если он создан со стилем LBS_NOTIFY). Параметр wParam этого сообщения содержит идентификатор органа управления (в данном случае, идентификатор списка). Младшее слово параметра lParam содержит идентификатор окна списка, а старшее - код извещения.
Приведем список кодов извещения, поступающих от органа управления класса "listbox".
Код извещения | Описание |
LBN_DBLCLK | Двойной щелчок левой клавишей мыши по строке списка |
LBN_ERRSPACE | Ошибка при попытке заказать дополнительную память |
LBN_KILLFOCUS | Список теряет фокус ввода |
LBN_SELCANCEL | Пользователь отменил выбор в списке. Это извещение используется в Windows версии 3.1 и более поздних версий |
LBN_SELCHANGE | Изменился номер выбранной строки (т. е. пользователь выбрал другую строку) |
LBN_SETFOCUS | Список получает фокус ввода |
Список "combobox" посылает в родительское окно сообщение WM_COMMAND. Параметр wParam этого сообщения содержит идентификатор списка. Младшее слово параметра lParam содержит идентификатор окна списка, а старшее - код извещения.
Приведем список кодов извещения, поступающих от органа управления класса "combobox".
Код извещения | Описание |
CBN_CLOSEUP | Список исчез (стал невидим) |
CBN_DBLCLK | Двойной щелчок левой клавишей мыши по строке списка, имеющего стиль CBS_SIMPLE |
CBN_DROPDOWN | Список стал видимым |
CBN_EDITCHANGE | Пользователь изменил содержимое окна редактирования, причем изменения уже отображены |
CBN_EDITUPDATE | Пользователь изменил содержимое окна редактирования, изменения еще не отображены |
CBN_ERRSPACE | Ошибка при попытке заказать дополнительную память |
CBN_KILLFOCUS | Список теряет фокус ввода |
CBN_SELENDCANCEL | Пользователь отменил выбор в списке. |
CBN_SELENDOK | Пользователь выбрал строку в списке. |
CBN_SELCHANGE | Изменился номер выбранной строки (т. е. пользователь выбрал другую строку) |
CBN_SETFOCUS | Список получает фокус ввода |