怎样才能使MDI窗体上的最大、最小化按钮无效。

tokimemo 2005-04-02 11:07:45
如题。
难道要利用API不成?
还有怎么让子窗体最大化?
...全文
53 点赞 收藏 4
写回复
4 条回复
tokimemo 2005年04月06日
因为不是系统,只是一个应用程序.所以窗口不能太大.
好了,结贴!
回复 点赞
Gutta 2005年04月02日
chendjin(谢谢,我要充电。)正解

但是我不明白的是楼主为什么要让MDI主窗体的最大化和最小化按钮失效呢?

要知道如果是一个系统而言,MDI窗体一般是主窗体,一个系统的主窗体怎么可以没有最大化和最小化按钮呢?

个人建议。
回复 点赞
chendjin 2005年04月02日
'使用API函数,MDIForm是没有maxbutton,minbutton这两个属性的。

'---------------------------------------------------------------

Private Declare Function GetSystemMenu Lib "USER32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "USER32" (ByVal hMenu As Long) As Long
Private Declare Function RemoveMenu Lib "USER32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags 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 Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000
Private Const GWL_STYLE = (-16)
Private Const MF_BYPOSITION = &H400&
Private Const MF_REMOVE = &H1000&


Private Sub MDIForm_Load()
Dim lWnd As Long
DisableX
lWnd = GetWindowLong(Me.hwnd, GWL_STYLE)
lWnd = lWnd And Not (WS_MINIMIZEBOX)
lWnd = lWnd And Not (WS_MAXIMIZEBOX)
lWnd = SetWindowLong(Me.hwnd, GWL_STYLE, lWnd)
End Sub


Private Sub DisableX()
Dim hMenu, nCount, LO As Long
hMenu = GetSystemMenu(Me.hwnd, 0)
nCount = GetMenuItemCount(hMenu)
LO = RemoveMenu(hMenu, nCount - 3, MF_REMOVE Or MF_BYPOSITION)
LO = RemoveMenu(hMenu, nCount - 4, MF_REMOVE Or MF_BYPOSITION)
End Sub
回复 点赞
wynbfqny 2005年04月02日
.maxbutton=false
.WindowState =2
回复 点赞
发动态
发帖子
VB基础类
创建于2007-09-28

2748

社区成员

19.7w+

社区内容

VB 基础类
社区公告
暂无公告