Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »Информатика

Работа с регионами в Visual C++

Тип: статья
Категория: Информатика
Скачать
Купить
Работа с регионами в Visual C++Vander NunesВ Win32 API есть набор функций для работы с регионами. При помощи регионов Вы можете создавать различные поверхности, используя только стандартные геометрические фигуры. Ну а дальше всё зависит от Вашей выдумки.Итак, приступим к определениям:HRNG:Это всего лишь тип данных, означающий "хэндл региона". Такой хэндл потребуется для каждого региона, с которым Вы захотите работать.Пример использования:HRGN hRegion = CreateRectRgn(x,y,x+128,y+128);После завершения работы с регионом, необходимо удалить объект, связанный с регионом при помощи функции DeleteObject().CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn, EqualRgn, ExtCreateRegion, FillRgn, FrameRgn, GetPolyFillMode, GetRegionData, GetRgnBox, InvertRgn, OffsetRgn, PaintRgn, PtInRegion, RectInRegion, SetPolyFillMode.Это основные функции, которые предназначены для создания и работы с регионами. Как видно из названий, регионы можно создавать круглые, квадратные, а также любой другой формы.SetWindowRgnПри помощи этой функции можно прикрепить регион к любому окну. Например, после использования этой функции, окно может выглядеть следующим образом:Чтобы проделать такое с окном, понадобятся следующие функции:// эта функция создаёт круглый регион.HRGN CreateEllipticRgn ( int nLeftRect, // x-координата верхнего-левого угла int nTopRect, // y-координата верхнего-левого угла int nRightRect, // x-координата нижнего-правого угла int nBottomRect // y-координата нижнего-правого угла);// эта функция совмещает два регионаint CombineRgn ( HRGN hrgnDest, // хэндл конечного региона HRGN hrgnSrc1, // хэндл исходного региона HRGN hrgnSrc2, // хэндл исходного региона int fnCombineMode // режим совмещения регионов);// эта функция прикрепляет регион к окну.// чтобы убрать регион с окна, надо вместо хэндла региона поставить NULL.int SetWindowRgn ( HWND hWnd, // хэндл окна, на которое будет установлен регион HRGN hRgn, // хэндл региона BOOL bRedraw // флаг перерисовки окна);Ну а теперь взглянем на реальный код, который демонстрирует создание окна, изображение которого приведено выше:// --------------------------------------------------// Создаём круглый регион.// Используем отрицательную начальную координату, чтобы наш элипс// захватил заголовок окна.// --------------------------------------------------HRGN hRegion1 = CreateEllipticRgn(20,-20,190,150);// --------------------------------------------------// создаём ещё один круглый регион в другом месте.// --------------------------------------------------HRGN hRegion2 = CreateEllipticRgn(140,100,300,240);// --------------------------------------------------// склеиваем два региона, чтобы сделать новый регион.// итоговый регион будет помещён в region1,// подобно операции://// hRegion1 = hRegion1 + hRegion2.//// в функции CombineRgn() можно использовать набор операций RGN_.// --------------------------------------------------CombineRgn(hRegion1, hRegion1, hRegion2, RGN_OR);// --------------------------------------------------// прикрепляем регион к окну// --------------------------------------------------SetWindowRgn(hWnd, hRegion1, true);// --------------------------------------------------// удаляем объекты регионов// --------------------------------------------------DeleteObject(hRegion1);DeleteObject(hRegion2);Чтобы вернуть окно в нормальное состояние (без региона), воспользуйтесь следующей функцией:SetWindowRgn(hWnd, NULL, true);Скачать пример - 13Кб СКИНЫТема скинов довольно популярна в программировании. При помощи скинов мы можем придать стандартному окну привлекательный вид:Для этого необходим битмап, который заполнит всё окно. На приведённой картинке используется окно размером 320х240 и такого же размера битмап.Давайте создадим небольшое демонстрационное приложение...
Другие файлы:

Программирование на Visual C++
Книга дает описание системы программирования Visual С++ 6.0, наиболее авторитетной из средств для операционных систем Windows.Рассмотрены интегрирован...

Visual Basic на практике
В книге обобщен многолетний опыт авторов популярного сайта VBStreets.ru. Рассмотрен широкий круг практических вопросов по программированию в Visual Ba...

Sams Teach Yourself Visual C# 2008 in 24 Hours
With Microsoft’s introduction of the .NET platform, a new, exciting programming language was born. Visual C# is now the language of choice for develop...

A Programmer's Introduction to Visual Basic .NET
A Programmer's Introduction to Visual Basic .NET helps current Visual Basic developers identify and understand some of the major changes are between V...

Visual Basic.Net Black Book
Visual Basic .NET Black Book is a comprehensive reference and problem-solving guide for Visual Basic programmers. It covers Visual Basic.NET tips, ex...