GFWindowStyle/Form1.frm
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 3195
ClientLeft = 60
ClientTop = 465
ClientWidth = 4635
LinkTopic = "Form1"
ScaleHeight = 3195
ScaleWidth = 4635
StartUpPosition = 3 'Windows‑Standard
Begin VB.CheckBox DEBUGVisibleCheck
Caption = "Visible"
Height = 195
Left = 2400
TabIndex = 2
Top = 480
Width = 2175
End
Begin VB.CheckBox DEBUGEnabledCheck
Caption = "Enabled"
Height = 195
Left = 2400
TabIndex = 1
Top = 180
Width = 2175
End
Begin VB.CommandButton Command1
Caption = "Toggle ShowInTaskBar"
Height = 735
Left = 60
TabIndex = 0
Top = 60
Width = 2235
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
'(c)2001 by Louis. Use to change the window style of a window.
'This project also contains further General Functions that use the
'General Function GFWindowStyle[Ex].
'
'GFSetWindowStyle[Ex]
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
'GFShowInTaskBar
Private Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
'DEBUG
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function IsZoomed Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function IsWindowEnabled Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
'DEBUG
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'GFSetWindowStyle[Ex]
Const GWL_STYLE As Long = (‑16)
Const GWL_EXSTYLE = (‑20)
Const WS_BORDER = &H800000
Const WS_CAPTION = &HC00000
Const WS_CHILD = &H40000000
Const WS_CHILDWINDOW = (WS_CHILD)
Const WS_CLIPCHILDREN = &H2000000
Const WS_CLIPSIBLINGS = &H4000000
Const WS_DISABLED = &H8000000
Const WS_DLGFRAME = &H400000
Const WS_GROUP = &H20000
Const WS_HSCROLL = &H100000
Const WS_MAXIMIZE = &H1000000
Const WS_MAXIMIZEBOX = &H10000
Const WS_MINIMIZE = &H20000000
Const WS_MINIMIZEBOX = &H20000
Const WS_ICONIC = WS_MINIMIZE
Const WS_OVERLAPPED = &H0&
Const WS_SYSMENU = &H80000
Const WS_TABSTOP = &H10000
Const WS_THICKFRAME = &H40000
Const WS_SIZEBOX = WS_THICKFRAME
Const WS_VISIBLE = &H10000000
Const WS_VSCROLL = &H200000
Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
Const WS_POPUP = &H80000000
Const WS_POPUPWINDOW = (WS_POPUP Or WS_BORDER Or WS_SYSMENU)
Const WS_TILED = WS_OVERLAPPED
Const WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW
'GFShowInTaskBar
'Private Const WS_VISIBLE = &H10000000
'Private Const WS_DISABLED = &H8000000
'GFSetWindowStyleEx
Private Const WS_EX_DLGMODALFRAME As Long = &H1
Private Const WS_EX_NOPARENTNOTIFY As Long = &H4
Private Const WS_EX_TOPMOST As Long = &H8
Private Const WS_EX_ACCEPTFILES As Long = &H10
Private Const WS_EX_TRANSPARENT As Long = &H20
Private Const WS_EX_MDICHILD As Long = &H40
Private Const WS_EX_TOOLWINDOW As Long = &H80
Private Const WS_EX_WINDOWEDGE As Long = &H100
Private Const WS_EX_CLIENTEDGE As Long = &H200
Private Const WS_EX_CONTEXTHELP As Long = &H400
Private Const WS_EX_RIGHT As Long = &H1000
Private Const WS_EX_LEFT As Long = &H0
Private Const WS_EX_RTLREADING As Long = &H2000
Private Const WS_EX_LTRREADING As Long = &H0
Private Const WS_EX_LEFTSCROLLBAR As Long = &H4000
Private Const WS_EX_RIGHTSCROLLBAR As Long = &H0
Private Const WS_EX_CONTROLPARENT As Long = &H10000
Private Const WS_EX_STATICEDGE As Long = &H20000
Private Const WS_EX_APPWINDOW As Long = &H40000
'DEBUG
Const WM_SYSCOMMAND = &H112
Const SC_CLOSE = &HF060
Const SC_MAXIMIZE = &HF030
Const SC_MINIMIZE = &HF020
Const SC_RESTORE = &HF120
'DEBUG
Dim ShowInTaskBarFlag As Boolean
Private Sub Form_Load()
'on error resume next
Load Me
ShowInTaskBarFlag = True 'preset
'Call GFSubClass(Me, "Me", Me, True)
'Call GFSetWindowStyle(Me.hwnd, WS_SYSMENU, True)
End Sub
Private Sub Form_DblClick()
'on error resume next
Unload Me
End Sub
Private Sub Form_Resize()
'on error resume next
If Me.WindowState = vbMinimized Then
Call Command1_Click
End If
End Sub
Private Sub Command1_Click()
'on error resume next
' If DEBUGVisibleCheck.Value = 1 Then
' Me.Visible = True
' Else
' Me.Visible = False
' End If
' If DEBUGEnabledCheck.Value = 1 Then
' Me.Enabled = True
' Else
' Me.Enabled = False
' End If
ShowInTaskBarFlag = Not ShowInTaskBarFlag
If (ShowInTaskBarFlag) Then
Call GFShowInTaskBar(Me.hwnd, True)
Else
Call GFShowInTaskBar(Me.hwnd, False)
End If
'DoEvents
'Call Sleep(2000)
'DoEvents
'If Not (Me.Enabled) Then Me.Enabled = True
'If Not (Me.Visible) Then Me.Visible = True
End Sub
Private Sub GFShowInTaskBar(ByVal WindowHandle As Long, ByVal ShowInTaskBarFlag As Boolean)
'on error resume next
Dim IsIconicFlag As Boolean
Dim IsZoomedFlag As Boolean
Dim IsEnabledFlag As Boolean
Dim IsVisibleFlag As Boolean
'preset
IsIconicFlag = CBool(IsIconic(WindowHandle))
IsZoomedFlag = CBool(IsZoomed(WindowHandle))
IsEnabledFlag = CBool(IsWindowEnabled(WindowHandle))
IsVisibleFlag = CBool(IsWindowVisible(WindowHandle))
'begin
'Call ShowWindow(WindowHandle, vbHide)
Call GFSetWindowStyleEx(WindowHandle, WS_EX_APPWINDOW, ShowInTaskBarFlag)
'Call EnableWindow(WindowHandle, 0)
'Call EnableWindow(WindowHandle, 1)
'Call UpdateWindow(WindowHandle)
' If (IsVisibleFlag = True) Then
' If (IsIconicFlag = False) And (IsZoomedFlag = False) Then
' Call ShowWindow(WindowHandle, vbNormalFocus)
' End If
' If (IsIconicFlag = True) And (IsZoomedFlag = False) Then
' Call ShowWindow(WindowHandle, vbMinimizedFocus)
' End If
' If (IsIconicFlag = False) And (IsZoomedFlag = True) Then
' Call ShowWindow(WindowHandle, vbMaximizedFocus)
' End If
' Else
' Call ShowWindow(WindowHandle, vbNormalNoFocus)
' End If
' If (IsVisibleFlag = True) Then
' Call GFSetWindowStyle(WindowHandle, WS_VISIBLE, True)
' Else
' Call GFSetWindowStyle(WindowHandle, WS_VISIBLE, False)
' End If
' If (IsEnabledFlag = True) Then
' Call GFSetWindowStyle(WindowHandle, WS_DISABLED, False)
' Else
' Call GFSetWindowStyle(WindowHandle, WS_DISABLED, True)
' End If
End Sub
Public Sub GFSubClassWindowProc(ByVal SourceDescription As String, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByRef ReturnValue As Long, ByRef ReturnValueUsedFlag As Boolean)
'On Error Resume Next
If Msg = WM_SYSCOMMAND Then
'wParam = (wParam And &HFFFF&) ‑ &HFFFF& 'hex number must be of the type Long
Debug.Print (wParam And &HFFFF)
'If (wParam And SC_CLOSE) = SC_CLOSE Then Debug.Print "CLOSE"
'If (wParam And SC_MAXIMIZE) = SC_MAXIMIZE Then Debug.Print "MAXIMIZE"
'If (wParam And SC_MINIMIZE) = SC_MINIMIZE Then Debug.Print "MINIMIZE"
'If (wParam And SC_RESTORE) = SC_RESTORE Then Debug.Print "RESTORE"
End If
End Sub
Private Function GFSetWindowStyle(ByVal WindowHandle As Long, ByVal Style As Long, ByVal StyleEnabledFlag As Boolean)
On Error Resume Next 'use to enable or disable a window style
Dim WindowStyleMaskOld As Long
'
WindowStyleMaskOld = GetWindowLong(WindowHandle, GWL_STYLE)
'
If StyleEnabledFlag = True Then
GFSetWindowStyle = SetWindowLong(WindowHandle, GWL_STYLE, WindowStyleMaskOld Or Style)
Else
GFSetWindowStyle = SetWindowLong(WindowHandle, GWL_STYLE, WindowStyleMaskOld And Not Style)
End If
End Function
Private Function GFSetWindowStyleEx(ByVal WindowHandle As Long, ByVal StyleEx As Long, ByVal StyleExEnabledFlag As Boolean)
On Error Resume Next 'use to enable or disable a window style
Dim WindowStyleExMaskOld As Long
'
WindowStyleExMaskOld = GetWindowLong(WindowHandle, GWL_EXSTYLE)
'
If StyleExEnabledFlag = True Then
GFSetWindowStyleEx = SetWindowLong(WindowHandle, GWL_EXSTYLE, WindowStyleExMaskOld Or StyleEx)
Else
GFSetWindowStyleEx = SetWindowLong(WindowHandle, GWL_EXSTYLE, WindowStyleExMaskOld And Not StyleEx)
End If
End Function
Private Sub Form_Unload(Cancel As Integer)
'on error resume next
Call GFSubClass_Terminate
End Sub
[END OF FILE]