Кент Рейсдорф. BORLAND C++BUILDER. Раздел 4
Кент Рейсдорф. BORLAND C++BUILDER. Страница 420
Именно на это тратят свое время программисты на Си (или программисты на Си++, не использующие библиотеки). Теперь сопоставьте приведенную процедуру с тем, как делает то же самое VCL:
int length = Edit->SelLength;
Что вы предпочтете? Независимо от своего источника, командные сообщения используются очень интенсивно как программистами, так и самой Windows.
Уведомляющие сообщения, с другой стороны, посылаются только самой средой Windows. Эти сообщения говорят Windows, что что-то произошло внутри элемента управления. Например, сообщение EN_CHANGE посылается после изменения содержимого элемента редактирования. Для компонентов Edit, MaskEdit и Memo в VCL определено событие OnChange, которое генерируется в ответ на уведомляющее сообщение EN_CHANGE (а также на некоторые другие). Программисты, использующие традиционные инструментальные средства программирования в Windows, должны перехватывать эти сообщения и обрабатывать их так, как им это необходимо. Все это переводит нас к следующей теме: параметры сообщения.
WPARAM, LPARAM и раскрытие сообщений
Каждое сообщение Windows имеет два параметра: WPARAM (сокращение от word parameter — параметр с длиной в одно машинное слово) и LPARAM (сокращение от long parameter — параметр типа long).
Эти два параметра могут рассматриваться аналогично параметрам функции. После получения сообщения Windows, параметры можно проверить на предмет извлечения информации, относящейся к посланному сообщению. Например, сообщение WM_LBUTTONDOWN — это уведомляющее сообщение, которое посылается после щелчка левой кнопкой мыши в пределах окна. WPARAM для сообщения WM_LBUTTONDOWN содержит специальный код, который сообщает, какие другие кнопки мыши, а также клавиши на клавиатуре, были нажаты, когда произошло данное событие. LPARAM содержит координаты курсора мыши в момент щелчка. Координата х содержится в младшем слове, а координата у — в старшем слове.