我想让窗口外观不要那个关闭的"X",最小化和最大化的图表在属性窗口里可以设置是否需要,但是那个关闭的我就不知道在哪设置或者实现了.
最好整个标题栏都不要,请问高手该如何实现呀?
最好整个标题栏都不要,请问高手该如何实现呀?
解决方案 »
- vb程序运行一段时间后内存不断增加,怎么解决?
- 怎么判断一个窗口已经打开?
- 求教:采用DTS从SQL2000中导出Excel格式数据
- 怎样控制MSHFLexGrid翻到最后一页?
- 如何在一个程序的设计中,建立一个文件?以便被这个程序调用???
- form从其它程序回来后如何马上控制form中的textbox
- 安装VB时提示注册MSADDNDR.DLL失败。推出安装。怎样解决,我不想重装系统。
- 动态实现水晶报表
- 关于文本框获取的数字比较大小的问题
- 怎样用vb编写自动加入日志文件到数据库
- 想做个判断,如果错误那们就蓝频死机(winme),或者在未提示下 重启.删除莫些文件
- 如何让DBGrid控件显示指定的数据
ByVal hwnd As Long, _
ByVal bRevert As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" ( _
ByVal hMenu As Long) As Long
Public Declare Function RemoveMenu Lib "user32" ( _
ByVal hMenu As Long, _
ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Public Declare Function DrawMenuBar Lib "user32" ( _
ByVal hwnd As Long) As LongPublic Const MF_BYPOSITION = &H400&
Public Const MF_DISABLED = &H2&
'*----------------------------------------------------------*
'* Name : DisableX *
'*----------------------------------------------------------*
'* Purpose : Disables the close button ('X') on form. *
'*----------------------------------------------------------*
'* Parameters : frm Required. Form to disable 'X'-button *
'*----------------------------------------------------------*
'* Description: This function disables the X-button on a *
'* : form, to keep the user from closing a form *
'* : that way, but keeps the min & max buttons. *
'*----------------------------------------------------------*
Public Sub DisableX(frm As Form)
Dim hMenu As Long, nCount As Long 'Get handle to system menu
hMenu = GetSystemMenu(frm.hwnd, 0) 'Get number of items in menu
nCount = GetMenuItemCount(hMenu) 'Remove last item from system menu (last item is 'Close')
Call RemoveMenu(hMenu, nCount - 1, MF_DISABLED Or MF_BYPOSITION) 'Redraw menu
DrawMenuBar frm.hwndEnd Sub
Menu将关闭(Close)的MenuItem去除掉便可以了,去除後,又该如何Enable "X"呢,那
便是再将 关闭(Close)的MenuItem加回去,但这里有个小问题,加回去之後"X"仍是暗
灰色,要等到我们做了某些固定的动作之後(如TitleBar上click一下,或选一下System
Menu等),它才会再度变Enable的颜色,我不知道让TitleBar上的这些东西Refresh要送
什麽讯息,知道者请告诉我,所以现在我暂且Send一个在TitleBar上按下Mouse左键的讯
息给Form,令"X"能出现Enable的颜色。'需一个Command Button
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 Declare Function AppendMenu Lib "User32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Private Declare Function GetMenuString Lib "User32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongConst WM_NCLBUTTONDBLCLK = &HA3
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2
Const MF_STRING = &H0&
Const MF_BYCOMMAND = &H0&
Const SC_CLOSE = &HF060Private hMenu As Long
Private CloseStr As String '记录Close MenuItem的字串'将"关闭"的那一个MenuItem 加回来
Private Sub Command1_Click()
Call AppendMenu(hMenu, MF_STRING, SC_CLOSE, CloseStr)'令"X"能出现Enable的颜色
Call SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End SubPrivate Sub Form_Load()
hMenu = GetSystemMenu(Me.hwnd, 0)
CloseStr = String(255, 0)'SC_CLOSE指的便是"关闭"的那一个MenuItem ID
Call GetMenuString(hMenu, SC_CLOSE, CloseStr, 256, MF_BYCOMMAND)
CloseStr = Left(CloseStr, InStr(1, CloseStr, Chr(0)) - 1)Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
End Sub
不显示窗体标题栏
将窗体的Borderstyle属性设置为0-None
Menu将关闭(Close)的MenuItem去除掉便可以了,去除後,又该如何Enable "X"呢,那
便是再将 关闭(Close)的MenuItem加回去,但这里有个小问题,加回去之後"X"仍是暗
灰色,要等到我们做了某些固定的动作之後(如TitleBar上click一下,或选一下System
Menu等),它才会再度变Enable的颜色,我不知道让TitleBar上的这些东西Refresh要送
什麽讯息,知道者请告诉我,所以现在我暂且Send一个在TitleBar上按下Mouse左键的讯
息给Form,令"X"能出现Enable的颜色。'需一个Command Button
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 Declare Function AppendMenu Lib "User32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Private Declare Function GetMenuString Lib "User32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongConst WM_NCLBUTTONDBLCLK = &HA3
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2
Const MF_STRING = &H0&
Const MF_BYCOMMAND = &H0&
Const SC_CLOSE = &HF060Private hMenu As Long
Private CloseStr As String '记录Close MenuItem的字串'将"关闭"的那一个MenuItem 加回来
Private Sub Command1_Click()
Call AppendMenu(hMenu, MF_STRING, SC_CLOSE, CloseStr)'令"X"能出现Enable的颜色
Call SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End SubPrivate Sub Form_Load()
hMenu = GetSystemMenu(Me.hwnd, 0)
CloseStr = String(255, 0)'SC_CLOSE指的便是"关闭"的那一个MenuItem ID
Call GetMenuString(hMenu, SC_CLOSE, CloseStr, 256, MF_BYCOMMAND)
CloseStr = Left(CloseStr, InStr(1, CloseStr, Chr(0)) - 1)Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
End Sub
不显示窗体标题栏
将窗体的Borderstyle属性设置为0-None