Окна с закруглёнными концами

 

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

Итак, начнём! Выжигай следующие письмена в разделе Declarations модуля формы:

 
Private Declare Function CreateRoundRectRgn Lib "gdi32" _
 (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, _
     ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
 
Private Declare Function SetWindowRgn Lib "user32" _
 (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
 
Dim Rgn2 As Long

Ты должен быть знакомым со всеми этими функциями из прошлого способа создания нестндартных форм. Хотя вру, не со всеми. Есть такая API функция CreateRoundRectRgn, которая создаёт регион прямоугольника с закруглёнными концами.Её аргументы:

X1,Y1 - координаты верхней левой точки прямоугольника, углы которого надо закруглить

X2,Y2 - координаты нижней правой точки

X3 - ширина овала, применяемого для закругления углов

Y3 - его высота

Настало время создать регион. В обработчике загрузки формы напиши:

 
Rgn2 = CreateRoundRectRgn(0, 0, Width / Screen.TwipsPerPixelX, _ 
Height / Screen.TwipsPerPixelY, 100, 100) 

Поиграй над последними двумя аргументами, чтобы достичь нужного результата скругления. Например, вместо 100, 100 напиши 300, 300 и получишь овал. Теперь отрубаем куски, и придаём форме новый цвет:

 
 BackColor = &HEBC236             'Голубоватый оттенок
 SetWindowRgn hWnd, Rgn2, True

Записать всё это ты должен был в процедуру-обработчик загрузки формы. Ну всё, желаю удачи!

Hosted by uCoz