(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Непрямоугольные полупрозрачные формы

Филипп Рендор

Проводя курсы по основам работы с продуктам Borland ("Основы разработки приложений с помощью Delphi", "Основы разработки приложений с помощью C++Builder"), достаточно часто слушатели просят рассказать о различных "украшательных" возможностях при программировании: нестандартные (непрямоугольные) изображения окон программы, "круглые" кнопки и т.п. Программа курсов достаточно насыщена. Для того чтобы облегчить начинающим программистам процесс создания собственных, оригинальных форм приложений, был сделан перевод данной статьи. Следует сказать, что указанная технология не является единственной, и отражает далеко не все доступные программисту возможности. Необходимо учесть и тот факт, что "оригинальность" хороша при тщательно продуманном и эргономичном общем дизайне, с сохранением стандартных действий пользователя. Впрочем, это вопрос из несколько другой области. А, кстати, вопросы создания собственных VCL-компонентов, типа "круглых" кнопок (как и многие другие вопросы) у нас так же рассматриваются, в одном из курсов по Borland.

А.А. Бородовицын, технический специалист компании "Интерфейс"

Сегодня часто встречаются на практике нестандартные пользовательские интерфейсы Их можно увидеть в действии в таких приложениях как WinAmp или Windows Media Player. Однако теперь это легко может сделать любой программист, придав особую изюминку своему приложению.

Техника, описываемая в данной статье, доступна только для ПО, работающего под управлением ОС Windows 2000/XP, так как в основе ее лежит использование интерфейса API, введенного в ОС Windows 2000. Поэтому, приложение должно при запуске проверять версию действующей ОС и корректно завершать работу, если версия ОС не соответствует заданному образцу.

Создание непрямоугольных форм, т.е. форм неровных очертаний с элементами разной степени полупрозрачности, осуществляется с помощью новой функциональной возможности под названием многослойные окна (layered windows).

Проверка на соответствие ОС Windows 2000/XP

К событию OnCreate основной формы приложения нужно добавить следующие строчки:

В этом программном коде Win32 API не используется. Вместо этого применяются глобальные переменные, которые во время исполнения программы определяются библиотекой VCL. Они определены в модуле SysUtils и их значения вычисляются во время запуска приложения. Для получения более подробной информации о версии данной ОС из семейства Windows можно использовать следующий набор переменных:

Win32Platform

определяет платформу операционной системы

Win32MajorVersion определяет номер старшей версии операционной системы
Win32MinorVersion определяет номер младшей версии операционной системы
Win32BuildNumber определяет номер подверсии операционной системы
Win32CSDVersion определяет номер последнего служебного пакета Service Pack,
установленного в системе

Создание многослойного окна

Для того чтобы создать многослойное окно, необходимо добавить в заданную форму расширенный стиль окна: WS_EX_LAYERED. Это можно сделать, подменив в форме метод CreateParams:

В зависимости от трансляции Win32 API, установленной на компьютере, константа WS_EX_LAYERED может быть уже определена.

Добавление прозрачности и полупрозрачности

Win32 API реализует прозрачность и полупрозрачность с помощью функции SetLayeredWindowAttributes:

Параметры данной функции определены в следующей таблице.

hWnd Дескриптор многослойного окна, задаваемый свойством Handle объекта TForm.
crKey Код прозрачности цвета, используемый при создании многослойного окна. Все пиксели данной формы, использующие этот цвет, будут прозрачными.
bAlpha Значение параметра используется для определения прозрачности многослойного окна. Если его значение равно 0, то окно - прозрачное, при значении 255 окно - непроницаемо.
dwFlags Параметр указывает на действие, которое нужно выполнить. Возможные значения:LWA_COLORKEY - использует crKey для определения прозрачности цвета; LWA_ALPHA - использует bAlpha для определения прозрачности многослойного окна.

Таким образом, для создания полупрозрачной (на 50%) формы с прозрачными пикселями цвета clBlue необходимо к событию OnCreate добавить следующий код:

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

Перемещение формы без заголовка окна

При создании приложения с нестандартным пользовательским интерфейсом можно избавиться от классического очертания окна, а также от его заголовка. Для этого необходимо задать стиль BorderStyle данной формы как bsNone. Однако может потребоваться сохранить подвижность формы подобно стандартным приложениям. Этого можно добиться небольшой модификацией порядка работы сообщения WM_NCHITTEST, посылаемого операционной системой. После такой модификации любые щелчки пользователя в клиентской области формы будут восприняты ОС Windows как щелчки мышью на заголовке окна, что и позволит перемещать форму.

Заключение

В данной статье была представлена информация об интерфейсе API, доступном в ОС Windows 2000/XP. С его помощью любому приложению можно придать оригинальный, более привлекательный для современных пользователей вид.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 05.05.2003 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
EMS Data Export for PostgreSQL (Business) + 1 Year Maintenance
IBM RATIONAL Rose Enterprise Floating User License + Sw Subscription & Support 12 Months
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
erwin Data Modeler Navigator Edition r9.7 - Product plus 1 Year Enterprise Maintenance Commercial
Quest Software. SQL Navigator for Oracle
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Вопросы и ответы по MS SQL Server
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100