窗口无系统标题,BORDERSTYLE设的是2,
运行时,用FrmMain.WindowState = 1
GActive = 0最小化,(窗体的showintaskbar=true)但是我最小化后,在任务栏点却不能还原,也没有系统的那个菜单(还原/关闭/最大化)。该如何实现呢,谢谢。
运行时,用FrmMain.WindowState = 1
GActive = 0最小化,(窗体的showintaskbar=true)但是我最小化后,在任务栏点却不能还原,也没有系统的那个菜单(还原/关闭/最大化)。该如何实现呢,谢谢。
GACTIVE 不用考虑 是程序控制上用的
BorderStyle = 0
ShowInTaskbar = True
这样最小化后点任务栏按钮可以自动恢复。
说错了 BORDERSTYLE是设的0 ,但是 这样在任务栏右键点么系统菜单。
'**模 块 名:ModStyle
'**说 明:为无标题栏窗口添加任务栏右键菜单
'**创 建 人:马大哈
'**日 期:2003年10月26日
'*************************************************************************
Option ExplicitPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_SYSMENU = &H80000
Private Const WS_SIZEBOX = &H40000
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const GWL_WNDPROC = (-4)
Private Const WM_GETTEXT = &HD
Private Const WM_EXITMENULOOP = &H212
Private Const WM_DESTROY = &H2
Private Const SC_CLOSE = &HF060&
Private Const SC_MOVE = &HF010&
Private Const WM_SYSCOMMAND = &H112Public PrevWndProc As LongPublic Function SubWndProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongSelect Case msg
Case WM_SYSCOMMAND
If wParam = SC_CLOSE Then '关闭消息处理
IsExit = True
Unload frmMain
ElseIf wParam = SC_MOVE Then '不可移动
Exit Function
End If
End SelectSubWndProc = CallWindowProc(PrevWndProc, hwnd, msg, wParam, lParam) '其它消息不管End FunctionPublic Function SetStyle(ByVal WindowHwnd As Long)
SetWindowLong WindowHwnd, GWL_STYLE, WS_SYSMENU Or WS_MINIMIZEBOX
PrevWndProc = SetWindowLong(WindowHwnd, GWL_WNDPROC, AddressOf SubWndProc)
End FunctionPublic Function UnloadStyle(ByVal WindowHwnd As Long)
If PrevWndProc <> 0 Then
SetWindowLong WindowHwnd, GWL_WNDPROC, PrevWndProc
End If
End Function
调用时,在窗体LOAD事件里用: SetStyle Me.Hwnd在窗体UnLoad事件里调用:(一定要调用,且程序不能在这之前用END跳出) UnloadStyle Me.Hwnd最终效果可以做到点击任务栏按钮时实现显示与缩小,与BORDERSTYLE=2效果一样,并且窗体不能移动.你可以把SC_MOVE消息的处理那一环去除,如果你的窗体要求可以移动的话.
然后光标停在PrevWndProc = SetWindowLong(WindowHwnd, GWL_WNDPROC, AddressOf SubWndProc)处