上一篇 | 下一篇

形状不规则的窗体

发布: 2008-6-26 09:17 | 作者: admin | 来源: | 查看: 0次

这也是使用Region的观念,设定一个Region的范围,而後使用SetWindowRgn API,

这将使得该Window显示的范围只有在该Region之内,之外的区域全然没有办法显示

请先查Mouse是否处於不规则区域内

'需一个Command Button

Option Explicit

Const ALTERNATE = 1

Const WINDING = 2

Private Type POINTAPI

X As Long

Y As Long

End Type

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 DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Private hRegion As Long

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Form_Load()

Dim p(9) As POINTAPI

p(0).X = 135: p(0).Y = 66

p(1).X = 121: p(1).Y = 107

p(2).X = 80: p(2).Y = 107

p(3).X = 111: p(3).Y = 132

p(4).X = 97: p(4).Y = 175

p(5).X = 135: p(5).Y = 149

p(6).X = 172: p(6).Y = 175

p(7).X = 158: p(7).Y = 132

p(8).X = 190: p(8).Y = 107

p(9).X = 149: p(9).Y = 107

hRegion = CreatePolygonRgn(p(0), 10, ALTERNATE)

Me.Picture = LoadPicture("c:\windows\setup.bmp")

Me.ScaleMode = 3

Me.Move ScaleX(80, vbPixels, vbTwips), ScaleX(66, vbPixels, vbTwips), _

ScaleX(200, vbPixels, vbTwips), ScaleX(180, vbPixels, vbTwips)

Command1.Move 110, 80, 40, 40

Command1.Caption = "Exit"

Call SetWindowRgn(Me.hWnd, hRegion, True)

End Sub

字号: | 推荐给好友

评分:0

我来说两句