VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 任意多边形的窗口
发表评论(0)作者:, 平台:, 阅读:11488, 日期:2000-03-12
声明:

Private Type POINTAPI

X As Long

Y As Long

End Type

Dim XY() As POINTAPI


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

该例子把窗口变成了一个 T 型:

Private Sub Form_Load()

Me.ScaleMode = vbPixels

End Sub


Private Sub Command1_Click()

Dim hRgn As Long

Dim lRes As Long

ReDim XY(7) As POINTAPI 'T 形需要 8 个点

With Me

XY(0).X = 0

XY(0).Y = 0

XY(1).X = .ScaleWidth

XY(1).Y = 0

XY(2).X = .ScaleWidth

XY(2).Y = .ScaleHeight / 2

XY(3).X = .ScaleWidth - (.ScaleWidth / 3)

XY(3).Y = .ScaleHeight / 2

XY(4).X = .ScaleWidth - (.ScaleWidth / 3)

XY(4).Y = .ScaleHeight

XY(5).X = .ScaleWidth / 3

XY(5).Y = .ScaleHeight

XY(6).X = .ScaleWidth / 3

XY(6).Y = .ScaleHeight / 2

XY(7).X = 0

XY(7).Y = .ScaleHeight / 2

End With


hRgn = CreatePolygonRgn(XY(0), 8, 2)

lRes = SetWindowRgn(Me.hWnd, hRgn, True)

End Sub