Option Explicit'取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时出现的菜单
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
'删除指定的菜单条目。如删除的条目属于一个弹出式菜单,那么这个函数不会同时删除弹出式菜单。首先应该用GetSubMenu函数取得弹出式菜单的句柄,再在以后将其删除
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_REMOVE = &H1000&
Private Const SC_CLOSE = &HF060&
Private Const SC_MAXIMIZE = &HF030&
Private Const SC_MINIMIZE = &HF020&Private Sub qude()
Dim a As Long
a = GetSystemMenu(hwnd, 0)
RemoveMenu a, SC_CLOSE, MF_REMOVE
RemoveMenu a, SC_MINIMIZE, MF_REMOVE
RemoveMenu a, SC_MAXIMIZE, MF_REMOVE
End SubPrivate Sub Command1_Click()
qude
End Sub这个运行后就是让窗口的最大,最小,关闭按钮无效啊,可是怎么只有关闭无效了,另外两个还好好的,疯了啊555555555!!!
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
'删除指定的菜单条目。如删除的条目属于一个弹出式菜单,那么这个函数不会同时删除弹出式菜单。首先应该用GetSubMenu函数取得弹出式菜单的句柄,再在以后将其删除
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_REMOVE = &H1000&
Private Const SC_CLOSE = &HF060&
Private Const SC_MAXIMIZE = &HF030&
Private Const SC_MINIMIZE = &HF020&Private Sub qude()
Dim a As Long
a = GetSystemMenu(hwnd, 0)
RemoveMenu a, SC_CLOSE, MF_REMOVE
RemoveMenu a, SC_MINIMIZE, MF_REMOVE
RemoveMenu a, SC_MAXIMIZE, MF_REMOVE
End SubPrivate Sub Command1_Click()
qude
End Sub这个运行后就是让窗口的最大,最小,关闭按钮无效啊,可是怎么只有关闭无效了,另外两个还好好的,疯了啊555555555!!!
解决方案 »
- 读取text.txt字符到数组出错原因
- 关于VB+SQL程序打包再安装后,其中水晶报表为什么是修改前的那一份?
- 关于VB中DataGrid控件小弟有几个问题,那位好心的大哥帮哈忙啊。前几天有位好心的大哥帮我解决了如何从access中把数据那到树状控件中,在此谢谢你啦。
- VB如何判断某个进程的网络连接是否断开?
- 请 ChenXL注释下程序
- 用过webbrowser控件的高手看一下,中文传送的问题
- 代码写好,下一步怎么做?
- 打架有用过讯雷么?它的窗口是怎样实现的?
- 100分重谢! 如何让系统进入登陆画面?
- [求助]高手请进,有个问题请教~~
- 我的VB为什么总是不能加载OCX控件
- 问高手,如何暂停Windows系统的关闭和注销
MF_REMOVE + MF_BYPOSITION
Public Const MF_REMOVE = &H1000Public Declare Function DrawMenuBar Lib "user32" _
(ByVal hwnd As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" _
(ByVal hMenu As Long) As Long
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
Sub KillSysMenu(hwnd As Long) Dim hMenu As Long
Dim menuItemCount As Long hMenu = GetSystemMenu(hwnd, 0)
If hMenu Then
'获得菜单项总数
menuItemCount = GetMenuItemCount(hMenu)
'移除Close菜单
Call RemoveMenu(hMenu, menuItemCount - 1, _
MF_REMOVE Or MF_BYPOSITION)
'移除分割条
Call RemoveMenu(hMenu, menuItemCount - 2, _
MF_REMOVE Or MF_BYPOSITION)
'重画菜单
Call DrawMenuBar(hwnd)
End If
End Sub
这个是WINDOWS的机制问题,系统菜单的的关闭删除之后会自动的重画标题,使关闭变灰,而删除最大化与最小化不会重画,所以没有变灰,你可以点击最大化与最小化,确实失效了~~~