vb中如何屏蔽标题栏中系统关闭按钮?
解决方案 »
- VB+ACCESS使用LIKE查询出现错误(有变量)
- 求教,MSHFlexGrid的刷新
- datareport控件的 datafield '(empty)' not found 问题
- 请教在access的vba中读取整个目录下面的所有的文件内容的方法,急~~,谢谢。
- datagrid内容输出到excel表格中???
- 用VB自带的打包工具,制作成安装程序后,在安装时,为何提示系统文件要更新,还要我重启
- 我现在正在看一个物流管理系统的软件,发现其中的各个模块,例如定单管理,仓库管理等,都采用EXE文件的方式调用,请问这是最好的编程方
- 有没有这么一个控件
- 如何用VB实现文件上传功能,急!
- 急!打印机走纸问题
- msflexgrid的默认选中问题
- (100分)内网可连接SQL,外网不行?
不过这样有个缺陷
就是最大,最小,按钮都没有了
那你也可以这样 把标题栏全去掉 (flat ) 然后自己在做两幅小图片 模仿最大化 最小化按钮的图形,在每幅图片所在picturebox 或image控件的click 事件中 写代码 当然还可以自己设计标题栏 这样设计的界面还算好看点。
还有api 函数可以实现
private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd 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 Const MF_BYPOSITION = &H400&
private Const MF_REMOVE = &H1000&
private Const SC_CLOSE = &HF060
private Const SC_MAXIMIZE = &HF030
private Const SC_MINIMIZE = &HF020Private Sub Form_Load()
Dim hSysMenu As Long
Dim n As Long
hSysMenu = GetSystemMenu(Me.hwnd, False)
If hSysMenu Then
' 取得系统菜单中的数量
n = GetMenuItemCount(hSysMenu)
If n Then
RemoveMenu hSysMenu, n - 1, MF_BYPOSITION Or MF_REMOVE
'去掉 关闭 按钮
RemoveMenu hSysMenu, n - 2, MF_BYPOSITION Or MF_REMOVE
DrawMenuBar Me.hwnd
End If
End If
End Sub
其实可以不要去掉的,你可以在关程序的事件中加代码判断的,比如::
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 3 Then
Cancel = True
Exit Sub
End IfUnloadMode表示关程序的原因:
0 在窗体是点了“关闭”按钮
1 程序内部的unload语句
2 window的关机
3 任务管理器中的结束
4 mdi只窗体关闭
5 上级窗体关闭
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_BYCOMMAND = &H0&
Private Const MF_BYPOSITION = &H400&
Private Const SC_CLOSE = &HF060&
Private Const WM_CLOSE = &H10
Private Sub Form_Load()
Dim hMenu As Long
hMenu = GetSystemMenu(Me.hwnd, 0)
Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
End Sub