Public Sub 不规则窗体()'************************************************************************************************************ '皮肤文件最后一字节:0表不用,1表主窗口用点数不规则,2表条形窗体点数不规则,3表主窗体和条形窗体都用点数不规则 '4表主窗口用组合矩形不规则,5表条形窗口用组合矩形不规则,6表主窗口和条形都用组合矩形不规则 ' '点数不规则: '倒数2,3表条形不规则区域的总点数 '倒数4,5表主窗体不规则区域的总点数 ' '组合矩形不规则: '倒数2,3表条不规则的数据大小 '倒数4,5,6,7表主窗体不规则的数据大小 '************************************************************************************************************Dim 文件号 As Integer 文件号 = FreeFileOpen skindir & skinpicture For Binary Access Read As #文件号 Dim 文件长度 As Long Dim 窗体模式 As Integer 文件长度 = LOF(1) Get #文件号, 文件长度, 窗体模式 If 窗体模式 = 0 Then SetWindowRgn frmmain.hwnd, 0, True Close #文件号 Exit Sub End If If frmmain.mnumainws.Checked = True Then Call 条形不规则 Else Call 主窗体不规则 End If Close #文件号End SubPublic Sub 条形不规则()'MsgBox "条形不规则" Dim 文件号 As Integer 文件号 = FreeFileOpen skindir & skinpicture For Binary Access Read As #文件号 Dim 文件长度 As Long Dim 窗体模式 As Integer 文件长度 = LOF(文件号) Get #文件号, 文件长度, 窗体模式 'MsgBox 窗体模式 Select Case 窗体模式 Case 2, 3 Dim 点数 As Integer Dim 点数地址 As Long Dim temp As Integer Get #文件号, 文件长度 - 2, 点数 点数地址 = (文件长度 - 4) - 点数 * 4 Dim 点数数组() As POINTAPI ReDim 点数数组(点数 - 1) As POINTAPI For i = 0 To 点数 - 1 Get #文件号, 点数地址, temp 点数数组(i).x = temp 点数地址 = 点数地址 + 2 Get #文件号, 点数地址, temp 点数数组(i).Y = temp 点数地址 = 点数地址 + 2 Next i rgn = CreatePolygonRgn(点数数组(0), 点数, 1) ReDim 点数数组(0) As POINTAPI SetWindowRgn frmmain.hwnd, rgn, True DeleteObject rgn Case 5, 6 '如果是5,6那么用组合矩形的方法来进行 Dim Ma As 矩形dat Dim 条形数据开始地址 As Long Dim 条形数据大小 As Integer Get #文件号, 文件长度 - 2, 条形数据大小 条形数据开始地址 = (LOF(文件号) - 6) - 条形数据大小 For i = 条形数据开始地址 To 条形数据开始地址 + 条形数据大小 - 1 Step 8 Get #文件号, i, Ma If rgn1 = 0 Then rgn1 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey) If rgn1 <> 0 Then rgn2 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey) CombineRgn rgn1, rgn1, rgn2, 2 DeleteObject rgn2 End If Next i SetWindowRgn frmmain.hwnd, rgn1, True DeleteObject rgn1 Case Else '如果是其它那么设窗体为全显示 SetWindowRgn frmmain.hwnd, 0, True End Select Close #文件号 End Sub Public Sub 主窗体不规则()'MsgBox "主窗体不规则" Dim 文件号 As Integer 文件号 = FreeFileOpen skindir & skinpicture For Binary Access Read As #文件号 Dim 文件长度 As Long Dim 窗体模式 As Byte 文件长度 = LOF(文件号) Get #文件号, 文件长度, 窗体模式 'MsgBox 窗体模式 Select Case 窗体模式 Case 1, 3 'MsgBox "主窗体不规则" Dim 点数1 As Integer Dim 点数2 As Integer Dim 点数地址 As Long Dim temp As Integer Get #文件号, 文件长度 - 4, 点数1 Get #文件号, 文件长度 - 2, 点数2 点数地址 = (文件长度 - 4) - 点数1 * 4 - 点数2 * 4 Dim 点数数组() As POINTAPI ReDim 点数数组(点数1 - 1) As POINTAPI For i = 0 To 点数1 - 1 Get #文件号, 点数地址, temp 点数数组(i).x = temp 点数地址 = 点数地址 + 2 Get #文件号, 点数地址, temp 点数数组(i).Y = temp 点数地址 = 点数地址 + 2 Next i rgn = CreatePolygonRgn(点数数组(0), 点数1, 1) ReDim 点数数组(0) As POINTAPI SetWindowRgn frmmain.hwnd, rgn, True DeleteObject rgn Case 4, 6 '如果是4,6那么用组合矩形的方法来进行 Dim Ma As 矩形dat Dim 主窗体数据开始地址 As Long Dim 主窗体数据大小 As Integer Dim 条形数据大小 As Integer Get #文件号, 文件长度 - 2, 条形数据大小 Get #文件号, 文件长度 - 6, 主窗体数据大小 主窗体数据开始地址 = (LOF(文件号) - 6) - (主窗体数据大小 + 条形数据大小) For i = 主窗体数据开始地址 To 主窗体数据开始地址 + 主窗体数据大小 - 1 Step 8 Get #文件号, i, Ma If rgn1 = 0 Then rgn1 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey) If rgn1 <> 0 Then rgn2 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey) CombineRgn rgn1, rgn1, rgn2, 2 DeleteObject rgn2 End If Next i SetWindowRgn frmmain.hwnd, rgn1, True DeleteObject rgn1 Case Else SetWindowRgn frmmain.hwnd, 0, True End Select Close #文件号 End Sub
我们既不是作者又不是神仙(掐指一算,能知天下事)
又没有那个Dat文件,无法分析
'皮肤文件最后一字节:0表不用,1表主窗口用点数不规则,2表条形窗体点数不规则,3表主窗体和条形窗体都用点数不规则
'4表主窗口用组合矩形不规则,5表条形窗口用组合矩形不规则,6表主窗口和条形都用组合矩形不规则
'
'点数不规则:
'倒数2,3表条形不规则区域的总点数
'倒数4,5表主窗体不规则区域的总点数
'
'组合矩形不规则:
'倒数2,3表条不规则的数据大小
'倒数4,5,6,7表主窗体不规则的数据大小
'************************************************************************************************************Dim 文件号 As Integer
文件号 = FreeFileOpen skindir & skinpicture For Binary Access Read As #文件号
Dim 文件长度 As Long
Dim 窗体模式 As Integer
文件长度 = LOF(1)
Get #文件号, 文件长度, 窗体模式
If 窗体模式 = 0 Then
SetWindowRgn frmmain.hwnd, 0, True
Close #文件号
Exit Sub
End If
If frmmain.mnumainws.Checked = True Then
Call 条形不规则
Else
Call 主窗体不规则
End If
Close #文件号End SubPublic Sub 条形不规则()'MsgBox "条形不规则"
Dim 文件号 As Integer
文件号 = FreeFileOpen skindir & skinpicture For Binary Access Read As #文件号
Dim 文件长度 As Long
Dim 窗体模式 As Integer
文件长度 = LOF(文件号)
Get #文件号, 文件长度, 窗体模式
'MsgBox 窗体模式
Select Case 窗体模式
Case 2, 3
Dim 点数 As Integer
Dim 点数地址 As Long
Dim temp As Integer
Get #文件号, 文件长度 - 2, 点数
点数地址 = (文件长度 - 4) - 点数 * 4
Dim 点数数组() As POINTAPI
ReDim 点数数组(点数 - 1) As POINTAPI
For i = 0 To 点数 - 1
Get #文件号, 点数地址, temp
点数数组(i).x = temp
点数地址 = 点数地址 + 2
Get #文件号, 点数地址, temp
点数数组(i).Y = temp
点数地址 = 点数地址 + 2
Next i
rgn = CreatePolygonRgn(点数数组(0), 点数, 1)
ReDim 点数数组(0) As POINTAPI
SetWindowRgn frmmain.hwnd, rgn, True
DeleteObject rgn
Case 5, 6
'如果是5,6那么用组合矩形的方法来进行
Dim Ma As 矩形dat
Dim 条形数据开始地址 As Long
Dim 条形数据大小 As Integer
Get #文件号, 文件长度 - 2, 条形数据大小
条形数据开始地址 = (LOF(文件号) - 6) - 条形数据大小
For i = 条形数据开始地址 To 条形数据开始地址 + 条形数据大小 - 1 Step 8
Get #文件号, i, Ma
If rgn1 = 0 Then rgn1 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey)
If rgn1 <> 0 Then
rgn2 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey)
CombineRgn rgn1, rgn1, rgn2, 2
DeleteObject rgn2
End If
Next i
SetWindowRgn frmmain.hwnd, rgn1, True
DeleteObject rgn1
Case Else
'如果是其它那么设窗体为全显示
SetWindowRgn frmmain.hwnd, 0, True
End Select
Close #文件号
End Sub
Public Sub 主窗体不规则()'MsgBox "主窗体不规则"
Dim 文件号 As Integer
文件号 = FreeFileOpen skindir & skinpicture For Binary Access Read As #文件号
Dim 文件长度 As Long
Dim 窗体模式 As Byte
文件长度 = LOF(文件号)
Get #文件号, 文件长度, 窗体模式
'MsgBox 窗体模式
Select Case 窗体模式
Case 1, 3
'MsgBox "主窗体不规则"
Dim 点数1 As Integer
Dim 点数2 As Integer
Dim 点数地址 As Long
Dim temp As Integer
Get #文件号, 文件长度 - 4, 点数1
Get #文件号, 文件长度 - 2, 点数2
点数地址 = (文件长度 - 4) - 点数1 * 4 - 点数2 * 4
Dim 点数数组() As POINTAPI
ReDim 点数数组(点数1 - 1) As POINTAPI
For i = 0 To 点数1 - 1
Get #文件号, 点数地址, temp
点数数组(i).x = temp
点数地址 = 点数地址 + 2
Get #文件号, 点数地址, temp
点数数组(i).Y = temp
点数地址 = 点数地址 + 2
Next i
rgn = CreatePolygonRgn(点数数组(0), 点数1, 1)
ReDim 点数数组(0) As POINTAPI
SetWindowRgn frmmain.hwnd, rgn, True
DeleteObject rgn
Case 4, 6
'如果是4,6那么用组合矩形的方法来进行
Dim Ma As 矩形dat
Dim 主窗体数据开始地址 As Long
Dim 主窗体数据大小 As Integer
Dim 条形数据大小 As Integer
Get #文件号, 文件长度 - 2, 条形数据大小
Get #文件号, 文件长度 - 6, 主窗体数据大小
主窗体数据开始地址 = (LOF(文件号) - 6) - (主窗体数据大小 + 条形数据大小)
For i = 主窗体数据开始地址 To 主窗体数据开始地址 + 主窗体数据大小 - 1 Step 8
Get #文件号, i, Ma
If rgn1 = 0 Then rgn1 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey)
If rgn1 <> 0 Then
rgn2 = CreateRectRgn(Ma.sx, Ma.sy, Ma.ex, Ma.ey)
CombineRgn rgn1, rgn1, rgn2, 2
DeleteObject rgn2
End If
Next i
SetWindowRgn frmmain.hwnd, rgn1, True
DeleteObject rgn1
Case Else
SetWindowRgn frmmain.hwnd, 0, True
End Select
Close #文件号
End Sub