VB无边框窗体如何改变大小

一、VB无边框窗体如何改变大小

‘加一个标签控件,其他的也可以 Option Explicit Private Sub Form_Load() Label1.BackColor = vbBlack Label1.Height = 200 Label1.Width = 200 Label1.Left = Me.Width - Label1.Width Label1.Top = Me.Height - Label1.Height End Sub Private Sub Form_Resize() Label1.Left = Me.Width - Label1.Width Label1.Top = Me.Height - Label1.Height End Sub Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button 0 Then If Me.Width + X > 500 Then Me.Width = Me.Width + X If Me.Height + Y > 500 Then Me.Height = Me.Height + Y End If End Sub==============下面这个更好点~Option Explicit Private Const WM_NCLBUTTONDOWN = &HA1 Private Const HTLEFT = 10 Private Const HTRIGHT = 11 Private Const HTTOP = 12 Private Const HTBOTTOM = 15 Private Const HTBOTTOMRIGHT = 17 Private Const HTBOTTOMLEFT = 16 Private Const HTTOPLEFT = 13 Private Const HTTOPRIGHT = 14 ‘sendmessage函数声明 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 Private Declare Function ReleaseCapture Lib “user32” () As Long Private Declare Function SetCapture Lib “user32” (ByVal hwnd As Long) As Long Private intEdge As Integer ‘临界距离,鼠标在离边框距离小于等于该值则判定在边框上…… Private Sub Form_Load() ‘相当于三个象素 intEdge = Me.ScaleX(3, vbPixels, Me.ScaleMode) End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘Critical:将处理四角的代码放在前面 If X + intEdge >= ScaleWidth And Y + intEdge >= ScaleHeight Then ‘右下角 ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTBOTTOMRIGHT, 0 ElseIf Y + intEdge >= ScaleHeight And X <= intEdge Then ‘左下角 ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTBOTTOMLEFT, 0 ElseIf Y <= intEdge And X <= intEdge Then ‘左上角 ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTTOPLEFT, 0 ElseIf Y <= intEdge And X + intEdge <= ScaleWidth Then ‘右上边 ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTTOPRIGHT, 0 ElseIf X + intEdge >= ScaleWidth And Y <= ScaleHeight Then ‘右边 ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTRIGHT, 0 ElseIf Y + intEdge >= ScaleHeight And X <= ScaleWidth Then ‘下边 ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTBOTTOM, 0 ElseIf X <= intEdge And Y <= ScaleHeight Then ‘左边 ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTLEFT, 0 ElseIf Y <= intEdge And X <= ScaleWidth Then ‘上边 ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTTOP, 0 End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘Critical:将处理四角的代码放在前面 Label1.Caption = X & “ ” & Y If (X + intEdge >= ScaleWidth And Y + intEdge >= ScaleHeight) Or (Y <= intEdge And X <= intEdge) Then ‘右下\左上角 MousePointer = vbSizeNWSE ElseIf Y + intEdge >= ScaleHeight And X <= intEdge Or Y <= intEdge And X + intEdge <= ScaleWidth Then ‘左下\右上角 MousePointer = vbSizeNESW ElseIf X + intEdge >= ScaleWidth And Y <= ScaleHeight Or X <= intEdge And Y <= ScaleHeight Then ‘左、右 MousePointer = vbSizeWE ElseIf Y + intEdge >= ScaleHeight And X <= ScaleWidth Or Y <= intEdge And X <= ScaleWidth Then ‘上边下边 MousePointer = vbSizeNS Else MousePointer = vbNormal End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) SetCapture hwnd End Sub

VB无边框窗体如何改变大小

二、VB 无边框窗体如何改变大小

很简单啊,窗口里放入一个Label1,再把上面的代,运行即可。鼠标放到窗口右下角的黑色小块(也就是Label1),点住拖动即可任意改变窗体大小了。

三、VB无边框窗体如何改变大小?

在VB中,BorderStyle属性为0的窗体没有边框,并且也没有与边框相关的元素。这种窗体具有简洁、占用空间少等优点,用它可以设计出某些富有个性的窗体。但是,由于它没有标题栏,窗体不能移动,同时也不能改变大小,在某些情况下会给使用者造成一定的麻烦。本文介绍在VB中如何用API函数操作无边框窗体。移动窗体  新建一标准工程,设置Form1的BorderStyle属性为0。此时运行程序后,无法移动窗体。为能移动窗体,在Form1的代码窗口声明下列函数和常数:  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)  按下鼠标左键  If Button = vbcenterButton Then  为当前的应用程序释放鼠标捕获  ReleaseCapture  移动窗体  SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0  End If  End Sub  注意:此时窗体上不能放置除Shape控件以外的任何控件,否则,在被控件遮住的地方点按鼠标还是无法移动窗体。要使点按控件也能移动窗体,需再添加一个该控件的MouseDown事件过程,代码与上述过程代码相似。  改变窗体的大小  为了改变窗体的大小,需要添加一个Timer控件,以定时捕获鼠标在窗体中的位置。当鼠标位于窗体边缘时,改变鼠标的形状,以通知用户可以进行改变大小的操作。为此,将Timer控件的Interval属性设为100(即每过100毫秒检测一下鼠标位置),其他取默认值。  在Form1的代码窗口中再添加下列两个函数,并定义两个自定义变量和一个字符串变量:  取得窗体位置的函数  Private Declare Function GetWindowRect Lib “user32” (ByVal hwndAsLong, lpRect As RECT) As Long  取得鼠标位置的函数  Private Declare Function GetCursorPos Lib “user32” (lpPointAsPOINTAPI) As Long  鼠标位置变量  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  所要执行的动作变量,是移动还是改变大小及从哪个方向改变大小  Dim Action As String  在Timer1控件的Timer事件过程中添加以下代码:  Private Sub Timer1_Timer()  Dim MyRect As RECT  Dim MyPoint As POINTAPI   MyRect返回当前窗口位置  Call GetWindowRect(Me.hwnd, MyRect)   MyPoint返回当前鼠标位置  Call GetCursorPos(MyPoint)  Select Case True  鼠标位于窗体左上方  Case MyPoint.x   Screen.MousePointer = vbSizeNWSE  Action = “centerUp”  鼠标位于窗体右下方  Case MyPoint.x > MyRect.center - 5 And MyPoint.y>MyRect.Bottom - 5  Screen.MousePointer = vbSizeNWSE  Action = “centerDown”  鼠标位于窗体右上方  Case MyPoint.x > MyRect.center - 5 And MyPoint.y  ’45度双向鼠标指针  Screen.MousePointer = vbSizeNESW  Action = “centerUp”  鼠标位于窗体左下方  Case MyPoint.x MyRect.Bottom - 5  Screen.MousePointer = vbSizeNESW  Action = “centerDown”  鼠标位于窗体左边  Case MyPoint.x MyRect.Bottom - 5  Screen.MousePointer = vbSizeNS  Action = “Down”  鼠标位于窗体其他位置  Case Else  默认鼠标指针  Screen.MousePointer = 0  Action = “Move”  End Select  End Sub  当利用SendMessage函数由系统向窗口发送改变大小的信息时,只要将上面移动窗体的语句“SendMessageMe.hwnd,WM_SYSCOMMAND, SC_MOVE, 0”中的第3个参数改为相应的常数即可。  VB中&HF001~&HF008分别是从左、右、上、左上、右上、下、左下、右下8个方向改变窗体大小的常数。结合移动窗体的代码,将上述Form_MouseDown事件的代码综合如下(也可以把这8个常数声明为自定义常数):  Private Sub Form_MouseDown(Button As Integer, Shift As Integer,xAs Single, y As Single)  按下鼠标左键  If Button = vbcenterButton Then  为当前的应用程序释放鼠标捕获  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

四、vb的窗体最大化最小化的按钮怎么设置

1、在电脑端打开vb软件,连续点击两次编辑代码时,代码窗口最大化。

2、在vb程序窗口的界面的右上角,菜单栏上出显示【最小化按钮、还原按钮、关闭按钮】,点此按钮可对窗体进行最小化、还原、关闭设置。

3、如果点击中间的【还原按钮】选项按钮,可以设置为vb的原始界面,则为常规界面。

4、界面恢复为原始界面,窗口即为默认大小,如下图所示。

5、窗口可以通过拉伸调节其大小,使得代码窗口易于编辑和查看。

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。