VB示例:VB中使窗体右上角的X按钮失效
来源:百度文库 编辑:神马文学网 时间:2024/04/29 23:45:07
为了进修方便,下面先给出源码,并且已经做了细致的中文注释:
-------------------------------------------
使窗体右上角的X按钮失效
-------------------------------------------
程序说明:
本例利用API函数GetSystemMenu得到系统菜单的句柄
X按钮是系统菜单的一菜单项,然后用RemoveMenu函数
删去这一菜单项,也就是使X按钮失效了。
-------------------------------------------
【VB声明】
PrivateDeclareFunctionGetSystemMenuLib"user32"(ByValhwndAsLong,ByValbRevertAsLong)AsLong
【说明】
取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口右上角的控制框时出现的菜单
【前往值】
Long,如执行成功,前往系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会前往零(简单的恢复原始的系统菜单)
【备注】
在vb里使用:系统菜单会向窗口发送一条WM_SYSCOMMAND消息,而不是WM_COMMAND消息
【参数表】
hwnd-----------Long,窗口的句柄
bRevert--------Long,如设为TRUE,表示接收原始的系统菜单
PrivateDeclareFunctionGetSystemMenuLib"user32"(_
ByValhwndAsInteger,_
ByValbRevertAsInteger_
)AsInteger
【VB声明】
PrivateDeclareFunctionRemoveMenuLib"user32"(ByValhMenuAsLong,ByValnPositionAsLong,ByValwFlagsAsLong)AsLong
【说明】
删除指定的菜单条目。如删除的条目属于一个弹出式菜单,那么这个函数不会同时删除弹出式菜单。首先应该用GetSubMenu函数取得弹出式菜单的句柄,再在以后将其删除
【前往值】
Long,非零表示成功,零表示失败。会设置GetLastError
【备注】
强烈建议大家使用vb菜单的visible属性从菜单中删除条目,而不要用这个函数,否则会形成指定菜单中其他菜单条目的visible属性对错误的菜单条目产生影响
【参数表】
hMenu----------Long,菜单的句柄
nPosition------Long,欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
wFlags---------Long,常数MF_BYCOMMAND或MF_BYPOSITION,取决于nPosition参数
PrivateDeclareFunctionRemoveMenuLib"user32"(_
ByValhMenuAsInteger,_
ByValnPositionAsInteger,_
ByValwFlagsAsInteger_
)AsInteger
PrivateSubCommand1_Click()
UnloadMe
EndSub
PrivateSubForm_Load()
DimRAsInteger
MyMenu=GetSystemMenu(Me.hwnd,0)
RemoveMenuMyMenu,&HF060,R
EndSub
程序中用到了两个API函数GetSystemMenu、RemoveMenu,其中GetSystemMenu函数用来得到系统菜单的句柄,RemoveMenu用来删除指定的菜单条目,我们先来看看这个函数的声明和参数:
PrivateDeclareFunctionGetSystemMenuLib"user32"(ByValhwndAsLong,ByValbRevertAsLong)AsLong
PrivateDeclareFunctionRemoveMenuLib"user32"(ByValhMenuAsLong,ByValnPositionAsLong,ByValwFlagsAsLong)AsLong
其中各GetSystemMenu参数的意义如下表:
参数意义
hwndLong系统菜单所在窗口的句柄
bRevertLong如设为TRUE,表示恢复原始的系统菜单
前往值Long如执行成功,前往系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会前往零(简单的恢复原始的系统菜单)
而RemoveMenu参数的意义如下表:
参数意义
hMenuLong菜单的句柄
nPositionLong欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
wFlagsLong常数MF_BYCOMMAND=&H0&或MF_BYPOSITION=&H400&,取决于nPosition参数
前往值Long,非零表示成功,零表示失败
然后就能够在程序中使用这两个函数了,我们在窗体的Form_Load()过程中加入如下代码:
MyMenu=GetSystemMenu(Me.hwnd,0) 得到系统菜单的句柄,Me.hwnd表示当前窗体的句柄
RemoveMenuMyMenu,&HF060,MF_BYCOMMAND 移去“关闭”菜单项,&HF060“关闭”菜单项的命令ID
接着我们运行程序,看看窗体右上角的X按钮是不是已经不可点击了,系统菜单中的“关闭”项也消失了,很有趣,不过一定记着为程序留一个“退出”按钮哦!
->
-------------------------------------------
使窗体右上角的X按钮失效
-------------------------------------------
程序说明:
本例利用API函数GetSystemMenu得到系统菜单的句柄
X按钮是系统菜单的一菜单项,然后用RemoveMenu函数
删去这一菜单项,也就是使X按钮失效了。
-------------------------------------------
【VB声明】
PrivateDeclareFunctionGetSystemMenuLib"user32"(ByValhwndAsLong,ByValbRevertAsLong)AsLong
【说明】
取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口右上角的控制框时出现的菜单
【前往值】
Long,如执行成功,前往系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会前往零(简单的恢复原始的系统菜单)
【备注】
在vb里使用:系统菜单会向窗口发送一条WM_SYSCOMMAND消息,而不是WM_COMMAND消息
【参数表】
hwnd-----------Long,窗口的句柄
bRevert--------Long,如设为TRUE,表示接收原始的系统菜单
PrivateDeclareFunctionGetSystemMenuLib"user32"(_
ByValhwndAsInteger,_
ByValbRevertAsInteger_
)AsInteger
【VB声明】
PrivateDeclareFunctionRemoveMenuLib"user32"(ByValhMenuAsLong,ByValnPositionAsLong,ByValwFlagsAsLong)AsLong
【说明】
删除指定的菜单条目。如删除的条目属于一个弹出式菜单,那么这个函数不会同时删除弹出式菜单。首先应该用GetSubMenu函数取得弹出式菜单的句柄,再在以后将其删除
【前往值】
Long,非零表示成功,零表示失败。会设置GetLastError
【备注】
强烈建议大家使用vb菜单的visible属性从菜单中删除条目,而不要用这个函数,否则会形成指定菜单中其他菜单条目的visible属性对错误的菜单条目产生影响
【参数表】
hMenu----------Long,菜单的句柄
nPosition------Long,欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
wFlags---------Long,常数MF_BYCOMMAND或MF_BYPOSITION,取决于nPosition参数
PrivateDeclareFunctionRemoveMenuLib"user32"(_
ByValhMenuAsInteger,_
ByValnPositionAsInteger,_
ByValwFlagsAsInteger_
)AsInteger
PrivateSubCommand1_Click()
UnloadMe
EndSub
PrivateSubForm_Load()
DimRAsInteger
MyMenu=GetSystemMenu(Me.hwnd,0)
RemoveMenuMyMenu,&HF060,R
EndSub
程序中用到了两个API函数GetSystemMenu、RemoveMenu,其中GetSystemMenu函数用来得到系统菜单的句柄,RemoveMenu用来删除指定的菜单条目,我们先来看看这个函数的声明和参数:
PrivateDeclareFunctionGetSystemMenuLib"user32"(ByValhwndAsLong,ByValbRevertAsLong)AsLong
PrivateDeclareFunctionRemoveMenuLib"user32"(ByValhMenuAsLong,ByValnPositionAsLong,ByValwFlagsAsLong)AsLong
其中各GetSystemMenu参数的意义如下表:
参数意义
hwndLong系统菜单所在窗口的句柄
bRevertLong如设为TRUE,表示恢复原始的系统菜单
前往值Long如执行成功,前往系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会前往零(简单的恢复原始的系统菜单)
而RemoveMenu参数的意义如下表:
参数意义
hMenuLong菜单的句柄
nPositionLong欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
wFlagsLong常数MF_BYCOMMAND=&H0&或MF_BYPOSITION=&H400&,取决于nPosition参数
前往值Long,非零表示成功,零表示失败
然后就能够在程序中使用这两个函数了,我们在窗体的Form_Load()过程中加入如下代码:
MyMenu=GetSystemMenu(Me.hwnd,0) 得到系统菜单的句柄,Me.hwnd表示当前窗体的句柄
RemoveMenuMyMenu,&HF060,MF_BYCOMMAND 移去“关闭”菜单项,&HF060“关闭”菜单项的命令ID
接着我们运行程序,看看窗体右上角的X按钮是不是已经不可点击了,系统菜单中的“关闭”项也消失了,很有趣,不过一定记着为程序留一个“退出”按钮哦!
->
VB示例:VB中使窗体右上角的X按钮失效
VB.NET中多窗体同步的解决方案
vb数据窗体架构的说明
vb中print方法详解及示例
VB - 浅谈圆角窗体
VB创建汉字窗体1
VB treeview使用示例代码(从数据库中读入
Vb中控件的自动排列-VB控件
如何用VB创建汉字窗体
vb窗体所有事件(4)
vb窗体所有事件(1)
vb窗体所有事件(2)
vb窗体所有事件(11)
轻松打造VB.NET特殊窗体
vb.net入门——在 Windows 窗体中执行拖放操作
VB中DataCombo 和 DataList 控件的使...
VB示例:用VB制造文件下载程序
VB.Net窗体控件响应键盘回车等事件的实例
VB中OLE调用的优化方法
VB中Grid控件的打印方法
vb中msflexgrid的使用举例
vb中msflexgrid的使用举例
VB中字符串符号$的问题
VB 用API创建动态菜单示例