如何把MDI窗体上的关闭,最小化,最大化这几个按纽去掉呢

ljzhost 2001-12-14 05:54:58
如何把MDI窗体上的关闭,最小化,最大化这几个按纽去掉呢
...全文
70 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cws111 2002-03-07
  • 打赏
  • 举报
回复
把整个标题去掉不就去掉啦吗,在VB中除了用API函数外是无法去掉,关闭按钮的,最大化和最小化可将其设为false而去掉
zyl910 2002-03-06
  • 打赏
  • 举报
回复
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then
……
End If

End Sub
dominiczhong 2002-03-06
  • 打赏
  • 举报
回复
我来借鸡生蛋

那如何跟踪 最小化 及 最大化 按纽?
当我最小化时,将程序缩小之后并 扔到 拖盘去?
daryl715 2002-03-06
  • 打赏
  • 举报
回复
灰化关闭按钮你满意吗?

form:
Option Explicit

Private m_blnCloseEnabled As Boolean

Private Sub Form_Load()
m_blnCloseEnabled = True
Command1.Caption = "Disable"
End Sub

Private Sub Command1_Click()
m_blnCloseEnabled = Not m_blnCloseEnabled
EnableCloseButton Me.hWnd, m_blnCloseEnabled

If m_blnCloseEnabled Then
Command1.Caption = "Disable"
Else
Command1.Caption = "Enable"
End If
End Sub

通用模块:
Option Explicit

Private Const SC_CLOSE As Long = &HF060&
Private Const MIIM_STATE As Long = &H1&
Private Const MIIM_ID As Long = &H2&
Private Const MFS_GRAYED As Long = &H3&
Private Const WM_NCACTIVATE As Long = &H86

Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

Private Declare Function GetSystemMenu Lib "user32" ( _
ByVal hWnd As Long, ByVal bRevert As Long) As Long

Private Declare Function GetMenuItemInfo Lib "user32" Alias _
"GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, _
ByVal b As Boolean, lpMenuItemInfo As MENUITEMINFO) As Long

Private Declare Function SetMenuItemInfo Lib "user32" Alias _
"SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, _
ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long

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 IsWindow Lib "user32" _
(ByVal hWnd As Long) As Long



Public Function EnableCloseButton(ByVal hWnd As Long, Enable As Boolean) _
As Integer
Const xSC_CLOSE As Long = -10



EnableCloseButton = -1
If IsWindow(hWnd) = 0 Then Exit Function



Dim hMenu As Long
hMenu = GetSystemMenu(hWnd, 0)



Dim MII As MENUITEMINFO
MII.cbSize = Len(MII)
MII.dwTypeData = String(80, 0)
MII.cch = Len(MII.dwTypeData)
MII.fMask = MIIM_STATE

If Enable Then
MII.wID = xSC_CLOSE
Else
MII.wID = SC_CLOSE
End If

EnableCloseButton = -0
If GetMenuItemInfo(hMenu, MII.wID, False, MII) = 0 Then Exit Function



Dim lngMenuID As Long
lngMenuID = MII.wID

If Enable Then
MII.wID = SC_CLOSE
Else
MII.wID = xSC_CLOSE
End If

MII.fMask = MIIM_ID
EnableCloseButton = -2
If SetMenuItemInfo(hMenu, lngMenuID, False, MII) = 0 Then Exit Function



If Enable Then
MII.fState = (MII.fState Or MFS_GRAYED)
MII.fState = MII.fState - MFS_GRAYED
Else
MII.fState = (MII.fState Or MFS_GRAYED)
End If

MII.fMask = MIIM_STATE
EnableCloseButton = -3
If SetMenuItemInfo(hMenu, MII.wID, False, MII) = 0 Then Exit Function



SendMessage hWnd, WM_NCACTIVATE, True, 0

EnableCloseButton = 0

End Function
zyl910 2002-03-06
  • 打赏
  • 举报
回复
试一试:

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex 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 Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000

Private Const GWL_STYLE = (-16)

Private Sub Form_Load()
Dim TempLng As Long

TempLng = GetWindowLong(Me.hwnd, GWL_STYLE)
TempLng = TempLng And Not WS_MINIMIZEBOX '最小化
TempLng = TempLng And Not WS_MAXIMIZEBOX '最大化
SetWindowLong Me.hwnd, GWL_STYLE, TempLng

End Sub
pengnick 2002-03-06
  • 打赏
  • 举报
回复
关注
jackwang2002 2002-02-25
  • 打赏
  • 举报
回复
我试了,用楼上的方法操作mdiform,可是还是不行,只对关闭起作用
fraser01 2001-12-14
  • 打赏
  • 举报
回复
用API,当心程序不能退出噢!!
下面是例子:

Private Sub Command2_Click()
RemoveMenu GetSystemMenu(hwnd, 0), SC_CLOSE, MF_REMOVE
RemoveMenu GetSystemMenu(hwnd, 0), SC_MAXIMIZE, MF_REMOVE
RemoveMenu GetSystemMenu(hwnd, 0), SC_MINIMIZE, MF_REMOVE
End Sub

Private Sub Command3_Click()
End
End Sub

模块:
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const WS_EX_TOOLWINDOW = &H80&
Public Const GWL_EXSTYLE = (-20)
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const SWP_FRAMECHANGED = &H20
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOZORDER = &H4
Public Const SWP_NOSIZE = &H1
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Const MF_BYPOSITION = &H400&
Public Const MF_REMOVE = &H1000&
Public Const SC_CLOSE = &HF060
Public Const SC_MAXIMIZE = &HF030
Public Const SC_MINIMIZE = &HF020


ljzhost 2001-12-14
  • 打赏
  • 举报
回复
不好意思,楼上的朋友
在MDI窗体中,是没有ControlBox这个属性的
zymfy 2001-12-14
  • 打赏
  • 举报
回复
ControlBox = False
sonicdater 2001-12-14
  • 打赏
  • 举报
回复
你去搜索一个 这个 主题。 问的人太多。
相关推荐
发帖
VB基础类

7681

社区成员

VB 基础类
社区管理员
  • VB基础类社区
加入社区
帖子事件
创建了帖子
2001-12-14 05:54
社区公告
暂无公告