VB6.0可通過Height、Width 屬性設(shè)置窗體的外部高度和寬度,包括邊框和標(biāo)題欄。
10年積累的網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有南皮免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
通常有兩種辦法:
第一種就是在窗體屬性窗口進(jìn)行設(shè)置。
第二種也可在程序運(yùn)行中通過代碼改變。
擴(kuò)展資料
第二種方法詳細(xì)演示程序:
Height、Width 屬性示例
這個(gè)程序在窗體被運(yùn)行時(shí),將窗體的大小設(shè)置為屏幕大小的百分之七十五并使窗體居中顯示。
如果想要運(yùn)行這個(gè)程序,請(qǐng)將代碼粘貼到窗體的聲明部分。然后按 F5?鍵并單擊窗體。
VB6.0可通過Height、Width 屬性設(shè)置窗體的外部高度和寬度,包括邊框和標(biāo)題欄。
既可以是設(shè)計(jì)時(shí)在窗體屬性窗口進(jìn)行設(shè)置,也可在程序運(yùn)行中通過代碼改變。
Height、Width 屬性示例:
這個(gè)例子在窗體被加載時(shí),將窗體的大小設(shè)置為屏幕大小的百分之七十五并使窗體居中顯示。要嘗試這個(gè)例子,請(qǐng)將代碼粘貼到窗體的聲明部分。然后按 F5
鍵并單擊窗體。
Private Sub Form_Click()
Width = Screen.Width * 0.75 ' 設(shè)置窗體的寬度。
Height = Screen.Height * 0.75 ' 設(shè)置窗體的高度。
Left = (Screen.Width - Width) / 2 ' 在水平方向上居中顯示。
Top = (Screen.Height - Height) / 2 ' 在垂直方向上居中顯示。
End Sub
修改大小,可以設(shè)置對(duì)應(yīng)的屬性
width
:寬,
height:高
修改位置
top
:頂點(diǎn),從屏幕上面開始為0,越往下,值越大,可以為負(fù)數(shù),為負(fù)時(shí)會(huì)跑到屏幕上面去
left
:水平起點(diǎn),從屏幕左邊開始為0,同理與top
建議使用
move
方法
,具體看參數(shù),
從來只有高分辨率下為低分辨率環(huán)境開發(fā)程序的。既然開發(fā)環(huán)境是低分辨率,那就只能利用代碼初始化各個(gè)控件的位置和大小了。隨測(cè)隨改。
在VB中,BorderStyle屬性為0的窗體沒有邊框,并且也沒有與邊框相關(guān)的元素。這種窗體具有簡(jiǎn)潔、占用空間少等優(yōu)點(diǎn),用它可以設(shè)計(jì)出某些富有個(gè)性的窗體。但是,由于它沒有標(biāo)題欄,窗體不能移動(dòng),同時(shí)也不能改變大小,在某些情況下會(huì)給使用者造成一定的麻煩。本文介紹在VB中如何用API函數(shù)操作無邊框窗體。
移動(dòng)窗體
新建一標(biāo)準(zhǔn)工程,設(shè)置Form1的BorderStyle屬性為0。此時(shí)運(yùn)行程序后,無法移動(dòng)窗體。為能移動(dòng)窗體,在Form1的代碼窗口聲明下列函數(shù)和常數(shù):
Option Explicit
Private Declare Function ReleaseCapture Lib “user32” ()AsLong
Private Declare Function SendMessage Lib “user32”Alias“SendMessageA” (ByVal hwnd As Long, ByVal wMsg As Long,
ByVal wParam As Long, lParam As Any) As Long
Const WM_SYSCOMMAND = H112
Const SC_MOVE = HF012
在Form_MouseDown事件中輸入以下代碼:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer,XAs Single, Y As Single)
按下鼠標(biāo)左鍵
If Button = vbcenterButton Then
為當(dāng)前的應(yīng)用程序釋放鼠標(biāo)捕獲
ReleaseCapture
移動(dòng)窗體
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
End If
End Sub
注意:此時(shí)窗體上不能放置除Shape控件以外的任何控件,否則,在被控件遮住的地方點(diǎn)按鼠標(biāo)還是無法移動(dòng)窗體。要使點(diǎn)按控件也能移動(dòng)窗體,需再添加一個(gè)該控件的MouseDown事件過程,代碼與上述過程代碼相似。
改變窗體的大小
為了改變窗體的大小,需要添加一個(gè)Timer控件,以定時(shí)捕獲鼠標(biāo)在窗體中的位置。當(dāng)鼠標(biāo)位于窗體邊緣時(shí),改變鼠標(biāo)的形狀,以通知用戶可以進(jìn)行改變大小的操作。為此,將Timer控件的Interval屬性設(shè)為100(即每過100毫秒檢測(cè)一下鼠標(biāo)位置),其他取默認(rèn)值。
在Form1的代碼窗口中再添加下列兩個(gè)函數(shù),并定義兩個(gè)自定義變量和一個(gè)字符串變量:
取得窗體位置的函數(shù)
Private Declare Function GetWindowRect Lib “user32” (ByVal hwndAsLong, lpRect As RECT) As Long
取得鼠標(biāo)位置的函數(shù)
Private Declare Function GetCursorPos Lib “user32” (lpPointAsPOINTAPI) As Long
鼠標(biāo)位置變量
Private Type POINTAPI
x As Long
y As Long
End Type
窗體位置變量
Private Type RECT
center As Long
Top As Long
center As Long
Bottom As Long
End Type
所要執(zhí)行的動(dòng)作變量,是移動(dòng)還是改變大小及從哪個(gè)方向改變大小
Dim Action As String
在Timer1控件的Timer事件過程中添加以下代碼:
Private Sub Timer1_Timer()
Dim MyRect As RECT
Dim MyPoint As POINTAPI
MyRect返回當(dāng)前窗口位置
Call GetWindowRect(Me.hwnd, MyRect)
MyPoint返回當(dāng)前鼠標(biāo)位置
Call GetCursorPos(MyPoint)
Select Case True
鼠標(biāo)位于窗體左上方
Case MyPoint.x MyRect.center + 5 And MyPoint.y ="" p=""
Screen.MousePointer = vbSizeNWSE
Action = “centerUp”
鼠標(biāo)位于窗體右下方
Case MyPoint.x MyRect.center - 5 And MyPoint.yMyRect.Bottom - 5
Screen.MousePointer = vbSizeNWSE
Action = “centerDown”
鼠標(biāo)位于窗體右上方
Case MyPoint.x MyRect.center - 5 And MyPoint.y="" p="" +=""
’45度雙向鼠標(biāo)指針
Screen.MousePointer = vbSizeNESW
Action = “centerUp”
鼠標(biāo)位于窗體左下方
Case MyPoint.x MyRect.center + 5 And MyPoint.yMyRect.Bottom - 5
Screen.MousePointer = vbSizeNESW
Action = “centerDown”
鼠標(biāo)位于窗體左邊
Case MyPoint.x MyRect.center + 5
水平雙向鼠標(biāo)指針
Screen.MousePointer = vbSizeWE
Action = “center”
鼠標(biāo)位于窗體右邊熱門推薦: C++程序設(shè)計(jì)之四書五經(jīng) 談?wù)凧AVA程序的反編譯1 2
MyRect.center - 5
Screen.MousePointer = vbSizeWE
Action = “center”
鼠標(biāo)位于窗體上方
Case MyPoint.y MyRect.Top + 5
垂直雙向鼠標(biāo)指針
Screen.MousePointer = vbSizeNS
Action = “Up”
鼠標(biāo)位于窗體下方
Case MyPoint.y MyRect.Bottom - 5
Screen.MousePointer = vbSizeNS
Action = “Down”
鼠標(biāo)位于窗體其他位置
Case Else
默認(rèn)鼠標(biāo)指針
Screen.MousePointer = 0
Action = “Move”
End Select
End Sub
當(dāng)利用SendMessage函數(shù)由系統(tǒng)向窗口發(fā)送改變大小的信息時(shí),只要將上面移動(dòng)窗體的語(yǔ)句“SendMessageMe.hwnd,WM_SYSCOMMAND, SC_MOVE, 0”中的第3個(gè)參數(shù)改為相應(yīng)的常數(shù)即可。
VB中HF001~HF008分別是從左、右、上、左上、右上、下、左下、右下8個(gè)方向改變窗體大小的常數(shù)。結(jié)合移動(dòng)窗體的代碼,將上述Form_MouseDown事件的代碼綜合如下(也可以把這8個(gè)常數(shù)聲明為自定義常數(shù)):
Private Sub Form_MouseDown(Button As Integer, Shift As Integer,xAs Single, y As Single)
按下鼠標(biāo)左鍵
If Button = vbcenterButton Then
為當(dāng)前的應(yīng)用程序釋放鼠標(biāo)捕獲
ReleaseCapture
Select Case Action
Case “center”
SendMessage Me.hwnd, WM_SYSCOMMAND, HF001, 0
Case “center”
SendMessage Me.hwnd, WM_SYSCOMMAND, HF002, 0
Case “Up”
SendMessage Me.hwnd, WM_SYSCOMMAND, HF003, 0
Case “centerUp”
SendMessage Me.hwnd, WM_SYSCOMMAND, HF004, 0
Case “centerUp”
SendMessage Me.hwnd, WM_SYSCOMMAND, HF005, 0
Case “Down”
SendMessage Me.hwnd, WM_SYSCOMMAND, HF006, 0
Case “centerDown”
SendMessage Me.hwnd, WM_SYSCOMMAND, HF007, 0
Case “centerDown”
SendMessage Me.hwnd, WM_SYSCOMMAND, HF008, 0
Case “Move”
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
End Select
End If
End Sub
窗體初始化時(shí),設(shè)定Windowstate= maximized.
窗體分辨率仍然可以設(shè)成1920x1080。設(shè)計(jì)元素的時(shí)候拖拽,或者使用代碼初始化控件。