您的位置:逆风者 VB 正文
原作者:www.upwinder.com 添加时间:2007-09-01 原文发表:2007-08-31 人气:31 来源:未知

本文章共1880字,分2页,当前第1页,快速翻页:
 
  为了学习方便,下面先给出源码,并且已经作了详细的中文注释:

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

【说明】
删除指定的菜单条目。如删除的条目属于一个弹出式菜单,那么这个函数不会同时删除弹出式菜单。首先应该用GetSubMenu函数取得弹出式菜单的句柄,再在以后将其删除

【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError

【备注】
强烈建议大家使用VB菜单的visible属性从菜单中删除条目,而不要用这个函数,否则会造成指定菜单中其他菜单条目的visible属性对错误的菜单条目产生影响

【参数表】
hMenu ---------- Long,菜单的句柄

nPosition ------ Long,欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)

wFlags --------- Long,常数MF_BYCOMMAND或MF_BYPOSITION,取决于nPosition参数

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

Private Sub Command1_Click()
Unload Me
End Sub

Private Sub Form_Load()
Dim R As Integer
MyMenu = GetSystemMenu(Me.hwnd, 0)
RemoveMenu MyMenu, &HF060, R
End Sub

  程序中用到了两个API函数GetSystemMenu、RemoveMenu,其中GetSystemMenu函数用来得到系统菜单的句柄,RemoveMenu用来删除指定的菜单条目,我们先来看看这个函数的声明和参数:

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

   Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
其中各GetSystemMenu参数的意义如下表:

参数 意义
hwnd Long 系统菜单所在窗口的句柄
bRevert Long 如设为TRUE,表示恢复原始的系统菜单
返回值 Long 如执行成功,返回系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会返回零(简单的恢复原始的系统菜单)

  而RemoveMenu参数的意义如下表:

参数 意义
hMenu Long 菜单的句柄
nPosition Long 欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
 

本文章更多内容1 - 2 - 下一页>>
相关文章

Visual Basic动画编程技术
用数据库保存VB程序的用户设置
在VB中存取数据库中的图片
VB5中远程数据库的访问
用VB 5.0从Recordset中打印列表
Text 转换为 Access MDB
用VB建立Access数据库结构
Access97的报表解决方案
掌握开发的武器-语言
将ENTER变成TAB键
VB取磁盘序列号卷标和文件系统类型
Visual Basic 工 程 管 理
熟悉VB的集成开发环境
Visual Basic影音控制
怎样使用有密码的 Access 数据库
利用VB进行多媒体程序设计初步
基于VB的通用折行打印程序
VB驱动pcAnyWhere进行文件传输
创建ActiveX接口移植Excel工作表
怎样关闭一个正在运行的程序

相关评论


本文章所属分类:首页 VB

  热门关键字: