黃易群俠傳M脫機外掛應用程式黃易神行
2230
3

[原創] vb程式界面

惡男傳說 發表於 2009-12-9 15:47:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |
使用那個標題的最大化.最小化.還有關閉按鈕消失.然后用自己所擁有的PS圖片添加.需要3張. 還有界面透明和界面圓角. 詳細如下.

標題欄的轉換:

首先把Form的BorderStyle屬性設置為0-None,上面的標題欄就沒了(最大化,最小話和關閉按鈕弄沒了就只能這樣),然後在窗體上添加3個PictureBox控件(建議不要用image控件,因為PictureBox可以控制凹凸感),圖片你就自己弄了,先把3個picturebox控件的borderstyle設為0,下面是3個按鈕的代碼:

'mouse_down和mouse_up主要是讓控件點擊有凹凸感
Option Explicit
Dim hasMax As Boolean '窗體最大化標志

Private Sub Form_Load()
hasMax = False
End Sub

Private Sub Picture1_Click()
'最小化
Form1.WindowState = 1
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.BorderStyle = 1
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.BorderStyle = 0
End Sub

Private Sub Picture2_Click()
'最大化
If hasMax Then
Form1.WindowState = 0 '如果已經最大化則還原窗體大小
Else
Form1.WindowState = 2
End If
hasMax = Not hasMax
End Sub

Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture2.BorderStyle = 1
End Sub

Private Sub Picture2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture2.BorderStyle = 0
End Sub

Private Sub Picture3_Click()
'關閉
End
End Sub

Private Sub Picture3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture3.BorderStyle = 1
End Sub

Private Sub Picture3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture3.BorderStyle = 0
End Sub


接下來是透明度.

Option Explicit
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const WS_EX_LAYERED = &H80000
Const GWL_EXSTYLE = (-20)
Const LWA_ALPHA = &H2
Const LWA_COLORKEY = &H1

Private Sub Form_Load()
Dim sty As Long
sty = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
sty = sty Or WS_EX_LAYERED
SetWindowLong Me.hwnd, GWL_EXSTYLE, sty
SetLayeredWindowAttributes Me.hwnd, 0, 190, LWA_ALPHA  '190是透明度,修改
End Sub

接下來是界面圓角.

'將窗體的BorderStyle屬性設為0
'然後聲明API函數,如下:
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
'我們先來了解一下這幾個函數
'函數CreateRoundRectRgn用於創建一個圓角矩形,該矩形由X1,Y1-X2,Y2確定,
'並由X3,Y3確定的橢圓描述圓角弧度
'CreateRoundRectRgn參數 類型及說明
'X1,Y1 Long,矩形左上角的X,Y坐標
'X2,Y2 Long,矩形右下角的X,Y坐標
'X3 Long,圓角橢圓的寬。其范圍從0(沒有圓角)到矩形寬(全圓)
'Y3 Long,圓角橢圓的高。其范圍從0(沒有圓角)到矩形高(全圓)
'SetWindowRgn用於將CreateRoundRectRgn創建的圓角區域賦給窗體
'DeleteObject用於將CreateRoundRectRgn創建的區域刪除,這是必要的,否則不必要的佔用電腦內存
'接下來聲明一個全局變量,用來獲得區域句柄,如下:
Dim outrgn As Long
Option Explicit
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const WS_EX_LAYERED = &H80000
Const GWL_EXSTYLE = (-20)
Const LWA_ALPHA = &H2
Const LWA_COLORKEY = &H1

'然後分別在窗體Activate()事件和Unload事件中輸入以下代碼
Private Sub Form_Activate()
Call rgnform(Me, 25, 25) '調用子過程
End Sub

Private Sub Form_Load()
Dim sty As Long
sty = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
sty = sty Or WS_EX_LAYERED
SetWindowLong Me.hwnd, GWL_EXSTYLE, sty
SetLayeredWindowAttributes Me.hwnd, 0, 180, LWA_ALPHA  '190是透明度,修改

End Sub

Private Sub Form_Unload(Cancel As Integer)
DeleteObject outrgn '將圓角區域使用的所有系統資源釋放
End Sub
'接下來我們開始編寫子過程
Private Sub rgnform(ByVal frmbox As Form, ByVal fw As Long, ByVal fh As Long)
Dim w As Long, h As Long
w = frmbox.ScaleX(frmbox.Width, vbTwips, vbPixels)
h = frmbox.ScaleY(frmbox.Height, vbTwips, vbPixels)
outrgn = CreateRoundRectRgn(0, 0, w, h, fw, fh)
Call SetWindowRgn(frmbox.hwnd, outrgn, True)
End Sub
'好了,程序可以直接運行了,看看效果如何,如果把Call rgnform(Me, 20, 20)中
'的20改為50又會怎樣呢?
'60呢?100呢?
'所以通過改變參數fw和fh的值就可以實現圓角窗體了。
收藏收藏 分享分享 讚 幹 分享分享 FB分享
回覆

使用道具 舉報


billy1111111 當前離線
UID
485787
熱心
1164 值
嘉獎
1 次
違規
0 次
在線時間
508 小時
經驗
1240 點
積分
48906
精華
0
最後登錄
2015-1-15
閱讀權限
60
註冊時間
2007-8-9
論壇幣
45957 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 7Rank: 7Rank: 7
billy1111111 2010-5-19 15:23:44
=  =看完就起瘋了...vb到底是用什麼寫的?它的基本架構是什麼?這或許是我以為會知道的...
回覆

使用道具 舉報

sammyiannie 當前離線
UID
632864
熱心
18 值
嘉獎
0 次
違規
0 次
在線時間
7 小時
經驗
14 點
積分
64
精華
0
最後登錄
2018-8-6
閱讀權限
20
註冊時間
2007-11-8
論壇幣
19 幣
聯合幣
6 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
sammyiannie 2010-8-26 00:37:18
這對我而言還太深...
以後再來重新看一遍,
推推推 以後一定會用的到的
回覆

使用道具 舉報

嗜血天魔 當前離線
UID
967705
熱心
297 值
嘉獎
0 次
違規
0 次
在線時間
45 小時
經驗
262 點
積分
604
精華
0
最後登錄
2015-10-3
閱讀權限
30
註冊時間
2008-8-4
論壇幣
587 幣
聯合幣
6 枚
幸運鑽
0 顆
招待卷
0 點
Yahoo! 查看詳細資料
Rank: 4Rank: 4
嗜血天魔 2010-9-15 23:21:34
vb簡單說應該是用"圖"寫程式
你先購出一張你要的介面再進去選寫你要執行的程式
(以前高職老師教的是這樣)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊


手機版 | Archiver | 外掛聯合國

GMT+8, 2025-1-19 03:27 , Processed in 0.038053 second(s), 17 queries , Memcache On.

版權說明:
  本站不會製作、經銷、代理外掛程式。僅免費提供外掛程式下載前之掃毒及掃木馬等安全檢測驗證,協助會員遠離盜號危險程式。本站所有資料均來自網際網路收集整理,說明文字暨下載連結轉載自原程 式開發站。站上出現之公司名稱、遊戲名稱、程式等,商標及著作權,均歸各公司及程式原創所有,本站程式所有權歸外掛聯合國所有。本程式所有權歸外掛聯合國所有.......

回頂部
第二步?
第三步?