如何禁止窗口改变大小,同时允许最小化、最大化
编号:QA003257
建立日期: 2000年8月24日 最后修改日期:2000年8月27日
所属类别:
Q
张洛惠:
操作系统:WindowsNT Server 4.0
编程工具:VB6.0
问题:用VB制作Form时,通过对Property的简单设定,可得到右上角为隐藏窗口符,不可使用状态的全画面表示符,及关闭窗口的叉子符号的Form,这时如果把鼠标放在窗口的边缘上可拉动着调整窗口的大小,但我想要的Form是在其右上角有那三个符号(或只有第一个及第三个符号),把鼠标放在Form的边缘上不会出现可拉动的状态即就是无法调整Form的大小,在别的地方看到过人家做出的这种Form,很是喜欢,可是自己怎么也做不出来,想请专家帮帮忙,拜托了,谢谢,等候您的解答,再见!
A回答:
BorderStyle改为FixedSingle后,再把下面的MinButton和/或MaxButton设为True就可以了。
主持人注:下面的两种方法也可以满足要求,虽然比上面的方法麻烦,但可以供大家开阔思路。
Chen的意见:
Private Const WS_THICKFRAME = &H40000
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE = (-16)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Sub Form_Load()
Dim xl As Long
Me.Show
Debug.Print Hex(Not WS_THICKFRAME)
xl = GetWindowLong(Form1.hwnd, GWL_STYLE)
xl = xl And (Not WS_THICKFRAME)
SetWindowLong Form1.hwnd, GWL_STYLE, xl
End Sub
欢迎参观我的VB站点 http://www.applevb.com/
李海的意见:
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const SC_SIZE = &HF000
Private Const MF_BYCOMMAND = &H0&
Private Sub Form_Load()
Dim hMenu As Long, Success As Long
hMenu = GetSystemMenu(Form1.hwnd, 0)
Success = DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND)
End Sub
此问题由阿欧回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 窗体与菜单, form, window, tform。
| |
|
|
| |
|
|