Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 119

Функции VCL не имеют аргументов по умолчанию

Для иллюстрации давайте рассмотрим функцию MessageBox() из API Windows. Эта функция принимает четыре аргумента: дескриптор окна, со­держащего окно сообщения, текст сообщения, заголовок окна сообщения и параметр Flag, несущий информацию о том, какие кнопки и пиктограммы отображаются в окне сообщения. В MFC или OWL вы можете вывести со­общение, указав только его текст:

MessageBox("This is a message");

Это возможно благодаря наличию аргументов по умолчанию в OWL- и MFC-версиях функции MessageBox(). Вы можете указать дополнительные ар­гументы, но если этого не делать, будут использованы аргументы по умол­чанию. Это удобно для вывода сообщений с минимальными затратами. А вот VCL-эквивалент предыдущей строки:

Application->MessageBox("This is a message", "Message", MB_OK);

Поскольку в VCL отсутствуют аргументы по умолчанию, вы должны указать все аргументы при вызове функции. Это менее удобно, но не смер­тельно, конечно. Заметьте, что во всех трех случаях (MFC, OWL и VCL) библиотека берет на себя передачу дескриптора окна.

Классы VCL не поддерживают множественное наследование

Это означает, что вы не можете создать новый компонент на основе двух уже существующих компонентов. Я не вижу здесь серьезного ограничения, поскольку множественное наследование используется не часто. Обычные клас­сы Си++, которые вы пишете для приложений C++Builder, могут использо­вать множественное наследование.

Структура VCL

Библиотека визуальных компонентов тщательно продумана. Как и боль­шинство хороших библиотек, VCL максимально использует возможности на­следования. Основу VCL составляют классы, представляющие компоненты. Остальные классы VCL не имеют отношения к компонентам. Они выполняют различные вспомогательные и служебные задачи.

Web-дизайн (с) 2010 All rights reserved