VB中如何使程序运行时窗口不能通过拖动改变大小,但是能最小化?

如题:我想设计一个程序,但是它运行的时候不能手动改变大小,但是能最小化,不能最大化。用FormLoad代码实现这个过程。Form里面那个BorderStyle属性设置了不能改变窗口大小,但是最小化就没有了。还有用Resize方法使窗口不变,但是运行的时候最大化最小化仍旧要出错…………实在没法了啊!!

请高手解答…………
MaxiumBox 和MiniumBox是什么属性?、属性窗口里面没有啊(只有MaxButton,MinButton)!!它们和MaxButton,MinButton一样吗?、

解决办法分三步:

一、窗体属性设置:BorderStyle=2,MaxButton=False

二、在窗体代码区复制下面代码:
Option Explicit

Private Sub Form_Load()
lockform Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
Unlockform
End Sub

三、建立一个模块,复制下面代码
Option Explicit
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam 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
Private Type PointAPI
X As Long
Y As Long
End Type
Private Type MINMAXINFO
ptReserved As PointAPI
ptMaxSize As PointAPI
ptMaxPosition As PointAPI
ptMinTrackSize As PointAPI
ptMaxTrackSize As PointAPI
End Type
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)

Private Const WM_GETMINMAXINFO = &H24
Private Const GWL_WNDPROC = (-4)

Dim OldProc&
Dim mhWnd&, mkd As Long, mgd As Long

' 锁定窗体边界
Sub lockform(nhWnd As Form) '锁定

If OldProc <> 0 Then Exit Sub

mhWnd& = nhWnd.hwnd
mgd = nhWnd.Height / Screen.TwipsPerPixelY
mkd = nhWnd.Width / Screen.TwipsPerPixelX
OldProc = SetWindowLong(mhWnd&, GWL_WNDPROC, AddressOf WinProc)

End Sub

Sub Unlockform() '解除锁定

If OldProc = 0 Then Exit Sub

SetWindowLong mhWnd, GWL_WNDPROC, OldProc
OldProc = 0
End Sub

Function WinProc&(ByVal hwnd&, ByVal wMsg&, _
ByVal wParam&, ByVal lParam&)

Select Case wMsg&
Case WM_GETMINMAXINFO
Dim MinMax As MINMAXINFO

CopyMemory MinMax, ByVal lParam, Len(MinMax)

MinMax.ptMinTrackSize.X = mkd
MinMax.ptMinTrackSize.Y = mgd
MinMax.ptMaxTrackSize.X = mkd
MinMax.ptMaxTrackSize.Y = mgd

CopyMemory ByVal lParam, MinMax, Len(MinMax)

WinProc& = 1
Exit Function
End Select

WinProc& = CallWindowProc(OldProc, hwnd, wMsg, wParam, lParam)
End Function

四、运行程序,OK!
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-10-23
他说的就是,只不过那个max是maxium的缩写罢了。就是最大化和最小化可操作性的属性设置,如果他们的值为False,那就意味着最大化和最小化是不允许的,反之如果值为true则可以在运行期间使窗体可大可小。
第2个回答  2009-10-23
将窗体的 FormBordStyle 设置为任意 Fix 开头的,然后将 MaxiumBox 设置为 False,保留 MiniumBox 为 True
第3个回答  2012-08-17
Dim w As Integer, h As Integer '窗口初始宽度和高度用于保持窗口尺寸不变

Private Sub Form_Load()

w = Me.Width '保存窗口初始宽度
h = Me.Height '保存窗口初始高度
End Sub

Private Sub Form_Resize()
If Me.WindowState = 0 Then '只有窗口正常显示(非最大化最小化)时才进行设置
Me.Width = w
Me.Height = h
End If
End Sub
第4个回答  2009-10-23
把form窗口的borderstyle属性值设为3就可以
第5个回答  2009-10-23
Private Sub Form_Resize()过程来解决!

visual basic vb如何让窗口不能拉大拉小?
回答:最简单的方法:将窗体的BorderStyle属性设置为1-Fixed Single,然后将MinButton属性设置为True就可以了,这样窗体右上角三个按钮都存在,但却是只可以最小化,不能最大化,也不能拖动改变它的大小。

vb的窗体最大化最小化的按钮怎么设置
1、在电脑端打开vb软件,连续点击两次编辑代码时,代码窗口最大化。2、在vb程序窗口的界面的右上角,菜单栏上出显示【最小化按钮、还原按钮、关闭按钮】,点此按钮可对窗体进行最小化、还原、关闭设置。3、如果点击中间的【还原按钮】选项按钮,可以设置为vb的原始界面,则为常规界面。4、界面恢复为原...

在vb中,如何让窗本只有最小化和关闭按钮,且不能让使用...
回答:窗体的BorderStyle属性设为1 - fixed single,MinButton属性设置为True

VB6.0 屏蔽最大化与最小化 和窗口大小更改。
把窗体的 BorderStyle 属性设为 1,这样窗体就无法通过拖动边框来改变大小了;把 MaxButton 属性设为 False,这样就屏蔽了最大化按钮;把 MinButton 属性设为 False,这样就屏蔽了最小化按钮。

vb中怎样让窗体不能够拉伸
艹,不懂就别回答,浪费表情,把MDIChild=false,就可以了,不最大化是MaxButton设为false,不最小化MinButton设为false,如果是正解,顶一下哦

VB怎么控制窗口大小,只能让他保持这么大?
将窗口的BorderStyle属性设置为Fixed Single即可,如果还需要最小化按钮,将MinButton属性设置为True。另外,楼上说的SetWindowPos完全不是用来限制窗口大小的,它只是用来设置窗口大小、位置和Z序等而已。如果要通过其他方法限制窗口大小,可以通过响应WM_GETMINMAXINFO消息来实现(这需要替换窗口过程)以下内容...

VB如何设置窗体只能关闭、最小化和还原且尺寸固定
1,打开VB,新建工程。2,将窗体的BorderStyle设为1,即指定大小模式,不能更改。3,将MinButton设为True,即允许最小化。4,再加上默认存在的关闭,程序运行后窗体就只能关闭、最小化和还原且尺寸固定了。

VB中如何禁止拖动窗口边缘改变大小?
设置form的Borderstyle的值为1 并且 MInButton 设置为True 就OK了!

VB窗口不能拖动边缘改变大小
属性窗口中把窗体属性FormBorderStyle改为FixedSingle,即“固定边框”,就不允许更改大小了;BackgroundImageLayout改为Stretch,即“拉伸”,就可以使背景图片始终填充窗口

用vb怎么实现把自动的窗口最小化?
如果用API的话 ShowWindow 和 SendMessage都可以实现让窗口最小化 ShowWindow(hwnd, SW_MINIMIZE);Public Const SW_MINIMIZE = 6 SendMessage(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);Public Const WM_SYSCOMMAND = &H112 Public Const SC_MINIMIZE = &HF020& ...

相似回答