|
Der Startzustand (normal, minimiert, mit oder ohne Fokus, maximiert) des ersten angezeigten Forms einer Anwendung kann extern vorgegeben werden, etwa beim Aufruf über die Shell-Funktion, oder beim Start über eine Verknüpfung. Normalerweise wird einem Windows-Programm der Startzustand als Parameter der Main-Funktion (in C) übergeben. Doch wie so vieles verbirgt Visual Basic auch diese Information - die mögliche Main-Prozedur in einem Standard-Modul bietet keine Parameter. Sie können diesen Startzustand erst feststellen, wenn das Form auch schon angezeigt ist. Wenn Ihre Anwendung schon vorher, etwa bereits in einer Sub Main-Prozedur, auf diese externe Vorgabe reagieren soll, nützt Ihnen diese späte Erkenntnis womöglich nicht mehr viel.
Sie können die gesuchte Information allerdings noch nachträglich über eine API-Funktion in Erfahrung bringen, über GetStartUpInfo. Sie übergeben dieser Funktion eine benutzerdefinierte Variable des Typs STARTUPINFO und finden anschließend den Startzustand als Konstantwert im Element wShowWindow. Die Informationen, die in den übrigen Elementen geliefert werden, sind für eine VB-Anwendung weitestgehend ohne Bedeutung.
Da die gelieferten Konstantwerte ein wenig von den in der VB-eigenen Enumeration VbAppWinStyle definierten Werten abweichen, übersetzt Ihnen die folgende Funktion StartUpWindowState die Ergebnisse des Aufrufs in die gewohnten Konstantwerte.
Private Type STARTUPINFO
cb As Long
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Private Declare Sub GetStartupInfo Lib "kernel32" _
Alias "GetStartupInfoA" (lpStartupInfo As STARTUPINFO)
Public Function StartUpWindowState() As VbAppWinStyle
Dim nInfo As STARTUPINFO
Const SW_HIDE = 0
Const SW_MAXIMIZE = 3
Const SW_MINIMIZE = 6
Const SW_NORMAL = 1
Const SW_SHOW = 5
Const SW_SHOWDEFAULT = 10
Const SW_SHOWMAXIMIZED = 3
Const SW_SHOWMINIMIZED = 2
Const SW_SHOWMINNOACTIVE = 7
Const SW_SHOWNA = 8
Const SW_SHOWNOACTIVATE = 4
Const SW_SHOWNORMAL = 1
nInfo.cb = Len(nInfo)
GetStartupInfo nInfo
Select Case nInfo.wShowWindow
Case SW_HIDE
StartUpWindowState = vbHide
Case SW_MAXIMIZE, SW_SHOWMAXIMIZED
StartUpWindowState = vbMaximizedFocus
Case SW_MINIMIZE, SW_SHOWMINIMIZED
StartUpWindowState = vbMinimizedFocus
Case SW_NORMAL, SW_SHOWNORMAL, SW_SHOW, SW_SHOWDEFAULT
StartUpWindowState = vbNormalFocus
Case SW_SHOWMINNOACTIVE
StartUpWindowState = vbMinimizedNoFocus
Case SW_SHOWNA, SW_SHOWNOACTIVATE
StartUpWindowState = vbNormalNoFocus
End Select
End Function
|