|
Создание формы или контрола произвольной формы |
|
|
Добавьте на форму 3 CommandButton. Запустите проект и поочередно нажимайте на кнопки Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI,
ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal
hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As
POINTAPI, ByVal nCount As Long) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim Result As Long
'замените цифру '4' ниже на то количество углов,
которое вы хотите получить при создании формы
Dim Points(1 To 4) As POINTAPI
Private Sub Command1_Click()
'демонстрация того, как изменится форма
Call Polyline(Form1.hdc, Points(1), 4)
End Sub
Private Sub Command2_Click()
'создание произвольной формы
hRgn = CreatePolygonRgn(Points(1), 4, 1)
'Если вы хотите создать произвольную форму
любому контролу, замените, к примеру Form1.hWnd на
Command1.hWnd
'вместо Command1 вы можете использовать любой
контрол, имеющий .hWnd
Result = SetWindowRgn(Form1.hWnd, hRgn, True)
End Sub
Private Sub Command3_Click()
'восстановить оригинальные значения формы
Result = SetWindowRgn(Form1.hWnd, 0, True)
End Sub
Private Sub Form_Load()
Points(1).X = 500
Points(1).Y = 500
Points(2).X = 0
Points(2).Y = 0
Points(3).X = 1000
Points(3).Y = 0
Points(4).X = 500
Points(4).Y = 500
End Sub
|
|
|
|
|
|
|