Кент Рейсдорф. BORLAND C++BUILDER. Раздел 3
Кент Рейсдорф. BORLAND C++BUILDER. Страница 342
От наблюдения за Windows мало пользы, если вы не знаете, что означают те или иные вещи. На самом деле, вы должны потратить большое количество времени, программируя в Windows, прежде чем будете понимать всю информацию, представляемую WinSight.
Программы, подобные C++Builder и Delphi, хороши тем, что позволяют создавать автономные приложения Windows за самое короткое время, которое только возможно. Если у этих сред программирования и есть недостаток, то он заключается в том, что вам не дается возможности узнать, что в действительности заставляет работать программу Windows.
Сообщения — именно они заставляют работать программу Windows. Большое, большое количество сообщений. Windows посылает сообщения окну, чтобы инициировать какие-либо его действия или уведомить окно, что произошло некоторое событие. Например, если окно должно быть перерисовано, Windows посылает ему сообщение WM PAINT. Сообщение WM_PAINT указывает окну на необходимость перерисовки. Когда изменяются размеры окна, Windows посылает сообщение WMWINDOWPOSCHANGING, которое уведомляет окно, что его размеры и/или положение изменяются. За этим сообщением следуют сообщения WMJWINDOWPOSCHANGED и WM_SIZE после того, как размеры окна и его положение были изменены. В типичной среде Windows такого рода вещи происходят десятки или даже сотни раз в секунду.
Существует более 100 сообщений, которые Windows может посылать приложению. Я немного упоминал об этом в 5-й день, «Библиотеки классов С++ и модель визуальных компонентов», где обсуждались события в VCL. Многие из событий, на которые реагирует программа C++Builder — это сообщения Windows. Событие OnCreate генерируется в ответ на сообщение WM_CREATE, событие OnSize генерируется в ответ на сообщение WM_SIZE, событие OnMouseDown соответствует двум сообщениям: WM_LBUTTON- DOWN и WM RBUTTONDOWN. Этот список можно продолжать и продолжать. C++Builder позволяет вам иметь дело с сообщениями на более высоком уровне, освобождая время для написания более важных частей приложения.