События и сообщения Windows
Опытный программист определенно заметит сходство некоторых событий C++Builder и сообщений Windows. В следующей таблице приведен краткий список событий объекта TForm и соответствующих сообщений Windows, которые вы использовали бы в обычной программе на языке С:
Событие VCL | Сообщение Windows |
OnCreate | WM CREATE |
OnClose | WM DESTROY |
OnReSize | WM SIZE |
OnActivate, OnDeactivate | WMACTIVATE |
OnShow, OnHide | WM SHOWWINDOW |
OnKeyDown | WM KEYDOWN |
OnKeyUp | WM KEYUP |
OnKeyDown | WM KEYDOWN |
OnMouseDown | WM LBUTTONDOWN, WM RBUTTONDOWN |
On Mouse Up | WM LBUTTONUP,WM RBUTTONUP |
OnMouseMove | WMMOUSEMOVE |
OnDblClkk | WM LBUTTONDBLCLK, WMRBUTTONDBLCLK |
OnPaint | WM PAINT |
He всякому сообщению Windows можно найти соответствующее событие VCL. Например, в обычной программе на языке С для Windows сообщение WM_COMMAND используется как для обслуживания нажатий на кнопки, так и выбора команд из меню. В C++Builder для этих целей используются разные события: TButton::OnClick и TMenuItem::OnCUck, соответственно.
С другой стороны, некоторые события VCL расширяют функциональность встроенных сообщений Windows. Так события OnDragOver и OnDragDrop Объекта TForm просто и прямолинейно реализуют операции перетаскивания (drag-and-drop) в вашей программе. Большинство компонент на вкладкахStandard и Win95Палитры компонент лишь специальным образом обрамляют известные элементы управления Windows. Компоненты на других вкладках представляют совершенно новые элементы управления (и события) для особых областей функционирования.
Компоненты вкладокStandard и Win95 инкапсулируют стандартные элементы управления Windows. За взаимодействие между пользователем и программой, которое ранее поддерживалось реакцией на сообщения Windows, теперь отвечают обработчики событий компонент VCL. Однако, в некоторых ситуациях возникает необходимость "взять на себя" те сообщения Windows, которые не имеют соответствующих событий VCL или не адекватны им. Для таких случаев в VCL предусмотрена методика ООП, обеспечивающая непосредственный отклик на события Windows, подобно средствам библиотек базовых классов OWL или MFC. Эта методика, реализуемая с помощью макросов BEGIN_MESSAGE_MAP, MESSAGE.HANDLER и END_MESSAGE_MAP, весьма трудоемка и здесь не рассматривается. Поэтому предварительно тщательно просмотрите имеющиеся в VCL компоненты, которые могут содержать подходящие события.