打印本文 打印本文 关闭窗口 关闭窗口
使窗体右上角的X按钮失效
作者:武汉SEO闵涛  文章来源:敏韬网  点击数827  更新时间:2009/4/23 14:59:17  文章录入:mintao  责任编辑:mintao
  窗体右上角的X按钮通常用来关闭一个程序,这个小X按钮实际上是和系统菜单的“关闭”菜单项关联在一起的,什么?不知道什么是系统菜单,系统菜单是指我们点击窗体左上角的小图标时所弹出的菜单,其中好象有“恢复”、“移动”、“最大化”、“最小化”、“关闭”这么几个按钮。这个菜单用普通的方法是不能编辑和改变的,但是我们可以通过API函数GetSystemMenu来得到它的句柄,然后通过菜单相关的API函数就能改变它了,下面一起看看怎么做吧。

  为了学习方便,下面先给出源码,并且已经作了详细的中文注释:

-------------------------------------------
使窗体右上角的X按钮失效
-------------------------------------------
程序说明:
本例利用API函数GetSystemMenu得到系统菜单的句柄
X按钮是系统菜单的一菜单项,然后用RemoveMenu函数
删去这一菜单项,也就是使X按钮失效了。
-------------------------------------------
【VB声明】

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

【说明】
取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时出现的菜单

【返回值】
Long,如执行成功,返回系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会返回零(简单的恢复原始的系统菜单)

【备注】
在vb里使用:系统菜单会向窗口发送一条WM_SYSCOMMAND消息,而不是WM_COMMAND消息

【参数表】
hwnd ----------- Long,窗口的句柄

bRevert -------- Long,如设为TRUE,表示接收原始的系统菜单

Private Declare Function GetSystemMenu Lib "user32" ( _
ByVal hwnd As Integer, _
ByVal bRevert As Integer _
) As Integer
【VB声明】

Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long

打印本文 打印本文 关闭窗口 关闭窗口