国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
vb教程之操作VB中的無邊框窗體
  湖南省郴州市蘇仙區(qū)信用聯(lián)社(423000) 段岳輝 

在VB中,BorderStyle屬性為0的窗體沒有邊框,并且也沒有與邊框相關(guān)的元素。這種窗體具有簡潔、占用空間少等優(yōu)點(diǎn),用它可以設(shè)計(jì)出某些富有個(gè)性的窗體。但是,由于它沒有標(biāo)題欄,窗體不能移動(dòng),同時(shí)也不能改變大小,在某些情況下會給使用者造成一定的麻煩。本文介紹在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” () As Long 
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, X As Single, Y As Single) 
'按下鼠標(biāo)左鍵 
If Button = vbLeftButton 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毫秒檢測一下鼠標(biāo)位置),其他取默認(rèn)值。 
在Form1的代碼窗口中再添加下列兩個(gè)函數(shù),并定義兩個(gè)自定義變量和一個(gè)字符串變量: 
'取得窗體位置的函數(shù) 
Private Declare Function GetWindowRect Lib “user32” (ByVal hwnd As Long, lpRect As RECT) As Long  
'取得鼠標(biāo)位置的函數(shù) 
Private Declare Function GetCursorPos Lib “user32” (lpPoint As POINTAPI) As Long  
'鼠標(biāo)位置變量 
Private Type POINTAPI  
x As Long 
y As Long 
End Type 
'窗體位置變量 
Private Type RECT  
Left As Long 
Top As Long 
Right 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.Left + 5 And MyPoint.y < MyRect.Top + 5  
Screen.MousePointer = vbSizeNWSE  
Action = “LeftUp” 
'鼠標(biāo)位于窗體右下方 
Case MyPoint.x > MyRect.Right - 5 And MyPoint.y > MyRect.Bottom - 5  
Screen.MousePointer = vbSizeNWSE  
Action = “RightDown” 
'鼠標(biāo)位于窗體右上方 
Case MyPoint.x > MyRect.Right - 5 And MyPoint.y < MyRect.Top + 5 
’45度雙向鼠標(biāo)指針  
Screen.MousePointer = vbSizeNESW  
Action = “RightUp” 
'鼠標(biāo)位于窗體左下方 
Case MyPoint.x < MyRect.Left + 5 And MyPoint.y > MyRect.Bottom - 5  
Screen.MousePointer = vbSizeNESW  
Action = “LeftDown” 
'鼠標(biāo)位于窗體左邊 
Case MyPoint.x < MyRect.Left + 5  
'水平雙向鼠標(biāo)指針 
Screen.MousePointer = vbSizeWE  
Action = “Left” 
'鼠標(biāo)位于窗體右邊 
Case MyPoint.x > MyRect.Right - 5  
Screen.MousePointer = vbSizeWE  
Action = “Right” 
'鼠標(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)窗體的語句“SendMessage Me.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, x As Single, y As Single) 
'按下鼠標(biāo)左鍵 
If Button = vbLeftButton Then  
'為當(dāng)前的應(yīng)用程序釋放鼠標(biāo)捕獲 
ReleaseCapture  
Select Case Action 
Case “Left” 
SendMessage Me.hwnd, WM_SYSCOMMAND, &HF001, 0 
Case “Right” 
SendMessage Me.hwnd, WM_SYSCOMMAND, &HF002, 0 
Case “Up” 
SendMessage Me.hwnd, WM_SYSCOMMAND, &HF003, 0 
Case “LeftUp” 
SendMessage Me.hwnd, WM_SYSCOMMAND, &HF004, 0 
Case “RightUp” 
SendMessage Me.hwnd, WM_SYSCOMMAND, &HF005, 0 
Case “Down” 
SendMessage Me.hwnd, WM_SYSCOMMAND, &HF006, 0 
Case “LeftDown” 
SendMessage Me.hwnd, WM_SYSCOMMAND, &HF007, 0 
Case “RightDown” 
SendMessage Me.hwnd, WM_SYSCOMMAND, &HF008, 0 
Case “Move” 
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0 
End Select 
End If 
End Sub 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
在Visual Basic中如何拖動(dòng)窗體或控件_VB窗體文章_VB_編程開發(fā)_芯友網(wǎng)
vb、vfb制作右擊菜單
鼠標(biāo)移動(dòng)窗體或控件
如何在VB中判斷Windows9x的運(yùn)行模式
SendMessage函數(shù)
WIN32無邊框窗體的縮放、移動(dòng)與WM
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服