Нестандартное изменение краев формы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alfa
Бывалый
Бывалый
 
Сообщения: 249
Зарегистрирован: 12.01.2003 (Вс) 20:15
Откуда: Россия, Красноярск

Нестандартное изменение краев формы

Сообщение Alfa » 16.08.2003 (Сб) 20:10

Господа. Мне для моей программы требуется другой интерейс. Там чтобы можно было из квадратной формы сделать ее круглой и так далее?

Messir
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 15.08.2003 (Пт) 14:29

Сообщение Messir » 16.08.2003 (Сб) 22:14

Для этого юзай регионы. Например, чтобы форма была овальной (и как частный случай круглой) юзай CreateEllipticRgn, чтобы были скругленные края - CreateRoundRectRgn, а чтобы форма была прозивольной формы, т.е. многоугольник - CreatePolygonRgn или CreatePolyPolygonRgn. Также можно комбинировать регионы с различными эффектами.
А после того, как создал регион, вызывай SetWindowRgn!!! И дело в шляпе!
<<MESS WITH THE BEST,
DIE LIKE THE REST>>

mark+
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 156
Зарегистрирован: 03.07.2003 (Чт) 0:04
Откуда: Kurgan

Сообщение mark+ » 16.08.2003 (Сб) 22:20

Сходи на www.vbscanner.narod.ru и всё! :P :P :P :lol:

_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

Сообщение _NeoN_ » 17.08.2003 (Вс) 11:03

Код: Выделить всё
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long

Dim stPts(9) As POINTAPI
Dim StarForm As Long
Dim i As Long

stPts(0).x = 0: stPts(0).y = 23
stPts(1).x = 19: stPts(1).y = 21
stPts(2).x = 27: stPts(2).y = 0
stPts(3).x = 31: stPts(3).y = 21
stPts(4).x = 59: stPts(4).y = 23
stPts(5).x = 33: stPts(5).y = 29
stPts(6).x = 42: stPts(6).y = 50
stPts(7).x = 27: stPts(7).y = 35
stPts(8).x = 9: stPts(8).y = 49
stPts(9).x = 16: stPts(9).y = 32
StarForm = CreatePolygonRgn(stPts(0), 10, 1)
setWindowRgn [color=red]hwnd_окна[/color], StarForm, True

будет красивая звездочка.. =)

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 17.08.2003 (Вс) 11:46

Вот. Программа НЕ моя.
Нет меня больше


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList