Главная » C++, C++ Builder » Круглое окно в CBuilder

0

Последний пример, который мы рассмотрим в этой главе, наиболее ярко иллюстрирует необходимость использования  Windows  API.  Возможность поддерживать непрямоугольные  окна

— одна из самых приятных вещей, добавленных в Windows API в Windows 95 и NT. В предыдущих версиях операционной системы Windows было невозможно сделать по-настоящему непрямоугольное окно, хотя вы могли нарисовать окно, выглядящее овальным или круглым, но реально область окна все равно оставалась прямоугольной.

Однако с выпуском Windows 95 и NT корпорация Microsoft добавила поддержку концепции области окна. Область окна — это форма (геометрическая фигура), которая определяет, как окно выглядит. Области (regions) использовались в течение многих лет для определения части окна, в которой можно рисовать. Только в последних реализациях операционной системы область может служить рамкой, ограничивающей окно. Область окна определяет не только часть окна, на которой можно рисовать, но также и область, скрытую окном, и часть окна, отзывающую ся на нажатия кнопки мыши. В прошлых версиях операционной системы окно могло выглядеть круглым, но реагировало оно на нажатие кнопки в любом месте прямоугольника. Кроме того, область позади окна не обновлялась, когда окно, находящееся там, изменялось, так как система Windows считала, что эту область по-прежнему занимает верхнее «круглое» окно.

Как я уже говорил, все изменилось в новых версиях Windows. Сейчас вы можете сделать окно действительно круглым, более того, вы можете даже сделать окно с дыркой посередине. Это приводит ко многим интересным возможностям для вашего приложения. Теперь можно представлять пользователю разнообраз ные красочные эффекты, так что он потратит еще больше времени на общение с вашей программой.

На этом примере мы увидим, как создать форму с круглой кнопкой, а затем добавим возможность сделать круглой саму форму.

Круглооконная  форма

В поиске более интересных форм круглая форма с круглыми кнопками — одно из интересных нововведений. В данном подходе есть свои проблемы (как мы увидим далее, изучив вопрос), но нет  ничего  такого,  чего  нельзя  было  бы  достичь  при  должном  усердии  (то  есть  длительном

программировании).

На рис. 9.6 показана программа, которую мы будем разрабатывать. Конечно, форма не круглая; на самом деле она эллиптическая. Точно так же и кнопка является эллиптической. Круг  —  это частный случай эллипса, у которого обе оси одинаковые. Если вы хотите сделать кнопку именно круглой, то все, что нужно сделать, — это вписать ее на форме в квадрат. Аналогично, чтобы сделать форму круглой, сделайте ее ширину равной высоте.

С другой стороны, на рис. 9.7 показана форма, с которой мы будем работать. Как видите, образ формы и кнопки устанавливается во время работы программы, а не во время дизайна приложения, так как технология, которую мы будем использовать для создания круглой формы, может быть применена только во время работы программы.

Рис. 9.6. Окно круглой формы

Рис. 9.7. Вид окна формы во время дизайна

Источник: Теллес М. – Borland C++ Builder. Библиотека программиста – 1998

По теме:

  • Комментарии