窗体右上角的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
|