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

tokimemo 2005-04-02 11:07:45
如题。
难道要利用API不成?
还有怎么让子窗体最大化?
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧