如何把MDI窗体上的关闭,最小化,最大化这几个按纽去掉呢
解决方案 »
- 请问有谁做过中介管理系统的?教教小弟啦~~~
- vb oralce plsql 取数据的格式问题,请看。
- 帮看个有关数据库的错误!
- 在vb可以象VC手工设置栈空间大小吗?
- 在先等待--100分 如何捕捉鼠标单击事件(不是在我的程序中,系统级的),要求用timer控件去捕捉。
- 请问如何获得一个EXE程序对外连接的IP和端口
- Chm电子书制作工具,那一款最方便优秀?
- 如何在两个程序间传递参数?
- 怎样取得一个局域网里所有机器的名字和IP地址?(初学),望各位帮忙!我将不胜感激!
- 怎么根据文件名,让文件列表框中的相应文件高亮显示
- 求救----WINSOCK问题!!!!!!!!!!!!!!!在线等待!
- 请教高手:VB与Matlab用Matrix接口如何画三维图形?
我认为不行.
:)不知道是不是真的不行.
GetSystemMenu,RemoveMenu等东东
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 DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&
Private Sub Form_Load()
Dim hSysMenu As Long, nCnt As Long, i As Long
hSysMenu = GetSystemMenu(Me.hwnd, False)
If hSysMenu Then
nCnt = GetMenuItemCount(hSysMenu)
For i = nCnt To 0 Step -1
RemoveMenu hSysMenu, i, MF_BYPOSITION Or MF_REMOVE ' Remove the seperator
DrawMenuBar Me.hwnd
Me.Caption = "Try to close me!"
Next
End If
End Sub
以下是使 MDI 主窗体"窗口化"按钮失效的代码,你可以参照一下来控制其它的按钮
==================================
'MDIForm1
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 DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&Private Sub MDIForm_Load()
Me.WindowState = 2
Dim hSysMenu As Long, nCnt As Long
hSysMenu = GetSystemMenu(Me.hwnd, False)
If hSysMenu Then
nCnt = GetMenuItemCount(hSysMenu)
If nCnt Then
RemoveMenu hSysMenu, 0, MF_BYPOSITION Or MF_REMOVE
DrawMenuBar Me.hwnd
End If
End If
prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc
End SubPrivate Sub MDIForm_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
End Sub=================================================================
'Module1
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
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Const GWL_WNDPROC = (-4)
Public Const WM_NCLBUTTONDBLCLK = &HA3Public prevWndProc As LongPublic Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error GoTo ShowErr If Msg = WM_NCLBUTTONDBLCLK Then
Exit Function
End If
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Exit Function
ShowErr:
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Exit Function
End Function
Top
回复人: jackwang2002(jack) ( ) 信誉:100 2002-2-25 13:25:00 得分:0
我试了,用楼上的方法操作mdiform,可是还是不行,只对关闭起作用
Top
回复人: pengnick(pengnick) ( ) 信誉:100 2002-3-6 20:28:56 得分:0
关注
Top
回复人: zyl910(高三学习忙,在线时间:星期日20:00) ( ) 信誉:165 2002-3-6 20:29:22 得分:0
试一试:Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const WS_MINIMIZEBOX = &H20000Private Const WS_MAXIMIZEBOX = &H10000Private 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
Top
回复人: daryl715(海军少校) ( ) 信誉:100 2002-3-6 20:40:46 得分:0
灰化关闭按钮你满意吗?form:Option ExplicitPrivate m_blnCloseEnabled As BooleanPrivate Sub Form_Load() m_blnCloseEnabled = True Command1.Caption = "Disable"End SubPrivate 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 IfEnd Sub通用模块:Option ExplicitPrivate 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 = &H86Private 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 LongEnd TypePrivate Declare Function GetSystemMenu Lib "user32" ( _ ByVal hWnd As Long, ByVal bRevert As Long) As LongPrivate Declare Function GetMenuItemInfo Lib "user32" Alias _ "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, _ ByVal b As Boolean, lpMenuItemInfo As MENUITEMINFO) As LongPrivate Declare Function SetMenuItemInfo Lib "user32" Alias _ "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, _ ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As LongPrivate Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As LongPrivate Declare Function IsWindow Lib "user32" _ (ByVal hWnd As Long) As LongPublic 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