【实例说明】 每个窗体的标题上都设置了“关闭”、“最大化”、“最小化”按钮。如果不想使用这些按钮,该如何屏蔽这三个按钮?下面的程序就是屏蔽这三大按钮的例子。
【编程思路】 本例用到了API函数中的GetSystemMenu函数和RemoveMenu函数,用GetSystemMenu函数得到系统菜单的句柄,用RemoveMenu函数删除指定的菜单条目。下面是这两个函数的用法:
(1)GetSystemMenu函数功能:对系统菜单进行复制或修改。
函数声明:
Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, _ ByVal bRevert As Long) _ As Long
参数:hWnd参数,为窗口句柄;bRevert参数,指定要执行的操作。
返回值:当brevert参数为false,返回值为窗口菜单拷贝的句柄;否则,返回值为null。
(2)RemoveMenu:从指定菜单中删除一个菜单项或分离一个子菜单。
函数声明:
Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, _ ByVal nPosition As Long, _ ByVal wFlags As Long) As Long
参数:hMenu参数,指定被修改的菜单的句柄;nPosition参数,指定要删除的菜单项;Wflags参数,指定对参数 nPosition的含义进行解释。此参数必为下列值之一。MF_BYCOMMAND:表示nPosition给出菜单项的表示符 (默认)。MF_BYPSITION:表示nPosition给出菜单项相对于0的位置。
返回值:函数调用成功,返回非0值;否则返回0的值。
【设计步骤】 1.新建一个标准工程,创建一个新窗体,命名为Form1。
2.在窗体上放置一个CommandButton控件。
3.源程序 [素材源程序下载]
Private Const MF_REMOVE = &H1000&
Private Const SC_COLSE = &HF060
Private Const SC_MAXIMIZE = &HF030
Private Const SC_MINIMIZE = &HF020
'API函数声明
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
Private Sub Form_Load()
' 关闭、最大化、最小化按钮不可用
RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_COLSE, MF_REMOVE
RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_MAXIMIZE, MF_REMOVE
RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_MINIMIZE, MF_REMOVE
End Sub
Private Sub Command1_Click()
End
End Sub
|