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

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

Обработчик события OnDrawPanel вызывается один раз для каждой па­нели, свойство Style которой имеет значение psOwnerDraw. Если вам нужно рисовать только на одной панели, то реально необходим лишь параметр Rect. Если же вы выводите изображения на несколько панелей, то сначала вам нужно определить, на какой панели рисовать, и только потом начинать вывод изображения. Разобраться с этим вам поможет конкретный пример.

Ранее я упоминал о программе StatTest. На рис. 13.5 показано ее окно во время работы.

Как видите, строка состояния в этой программе имеет несколько панелей. Из них три средние — это панели пользователя. Панели с метками OVR и ЕХТ моделируют строку состояния программы обра­ботки текстов или редактора кода. В таких программах режимы Overtype или Extended Selection могут находиться в состоянии включено/выключено. Если режим включен, текст в панели строки состояния выводится черным цветом. Если режим выключен, текст принимает вид трехмерного текста в недоступном состоянии. Третья панель пользователя содержит один из стандартных значков Windows для иллюстрации вывода графики в строку состояния. Загрузите эту программу с CD-ROM и поэкспериментируйте с ней, чтобы увидеть, как она работает.

Приведенный код может показаться немного устрашающим, но большая его часть — это строки комментариев. Сам код довольно прост. Как объяснено в комментариях, объемный эффект достигается следующим образом: сначала текст рисуется белым цветом, а затем еще раз серым цветом и с небольшим сдвигом. В результате текст выглядит выдавленным на поверхности. Отобра­жение значка осуществляется с помощью функции API Windows Drawl- conExQ.

Работа с пользовательскими панелями строки состояния сначала требует некоторых усилий, но вы скоро обнаружите, что не все так плохо. Вы можете программировать в течение длительного времени и ни разу не использовать эти панели. Но если когда-нибудь они вам понадобятся, то вы будете знать, что эта задача является вполне разрешимой.

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