Кент Рейсдорф. 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 не имеют отношения к компонентам. Они выполняют различные вспомогательные и служебные задачи.