Setzt das Icon für einen Abschnitt
#include <GuiStatusBar.au3>
_GUICtrlStatusBar_SetIcon ( $hWnd, $iPart [, $hIcon = -1 [, $sIconFile = ""]] )
| $hWnd | Handle des Controls |
| $iPart | 0-basierender Abschnittsindex. Falls sich das Control im einfachen Modus befindet, wird dieses Feld ignoriert. |
| $hIcon | [optional] Handle zum Icon. Falls dieser Wert -1 ist, wird das Icon entfernt. |
| $sIconFile | [optional] Dateiname der Icondatei |
| Erfolg: | True oder Icon Handle, wenn $sIconFile ausgewählt ist (siehe Bemerkungen). |
| Fehler: | False |
| @error: | 11 wenn das hIcon für die $sIconFile nicht erstellt werden kann. @extended enthält die Funktion _WinAPI_GetLastError(). 12 die Variable $sIconFile kann nicht gesetzt werden. |
Bei der Erstellung eines Symbols mit $sIconFile muss das Symbol gelöscht werden, wenn das Steuerelement nicht mehr verwendet wird.
Dies ist eine Korrektur, da während der Anzeige der Statusleiste der Handle gültig sein muss.
Das vorherige Beispiel 2 funktionierte nur einmal, da GUIState() vor _GUICtrlStatusBar_SetIcon() ausgegeben wurde.
Das Symbol verschwand jedoch nach dem Minimieren und Wiederherstellen der GUI.
- - - - - - - - Erklärung der Controls - - - - - - - -
#include "Extras\HelpFileInternals.au3" #include <GUIConstantsEx.au3> #include <GuiStatusBar.au3> #include <WinAPIIcons.au3> Example1() Func Example1() ; Erstellt eine GUI Local $hGUI = GUICreate("StatusBar: Setzt und ermittelt das Icon (v" & @AutoItVersion & ")", 500, 300, 100, 100) Local $hStatus = _GUICtrlStatusBar_Create($hGUI) ; Erstellt ein Memo Control _MemoCreate(2, 8, 444, 259) GUISetState(@SW_SHOW) ; Abschnitte setzen Local $aParts[4] = [75, 150, 300, 400] _GUICtrlStatusBar_SetParts($hStatus, $aParts) _GUICtrlStatusBar_SetText($hStatus, "Abschnitt 1") _GUICtrlStatusBar_SetText($hStatus, "Abschnitt 2", 1) ; Setzt die Icons Local $ahIcons[2] $ahIcons[0] = _WinAPI_LoadShell32Icon(23) $ahIcons[1] = _WinAPI_LoadShell32Icon(40) _GUICtrlStatusBar_SetIcon($hStatus, 0, $ahIcons[0]) _GUICtrlStatusBar_SetIcon($hStatus, 1, $ahIcons[1]) ; Zeigt die Handles der Icons _MemoWrite("Handle vom Icon von Abschnitt 0 .: 0x" & Hex(_GUICtrlStatusBar_GetIcon($hStatus, 0))) _MemoWrite("IsPtr = " & IsPtr(_GUICtrlStatusBar_GetIcon($hStatus, 0)) & " IsHWnd = " & IsHWnd(_GUICtrlStatusBar_GetIcon($hStatus, 0))) _MemoWrite("Handle vom Icon von Abschnitt 1 .: 0x" & Hex(_GUICtrlStatusBar_GetIcon($hStatus, 1))) _MemoMsgBoxStatus("", -1, $hGUI) ; Keine weiteren Aktionen, es wird gewartet bis die GUI geschlossen wird. ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ; Löscht ein Icon und gibt den durch das Icon belegten Speicher wieder frei _WinAPI_DestroyIcon($ahIcons[0]) _WinAPI_DestroyIcon($ahIcons[1]) GUIDelete() EndFunc ;==>Example1
#include "Extras\HelpFileInternals.au3" #include <GUIConstantsEx.au3> #include <GuiStatusBar.au3> #include <WinAPIIcons.au3> Example() Func Example() ; Erstellt eine GUI Local $hGUI = GUICreate("StatusBar: Setzt und ermittelt das Icon (v" & @AutoItVersion & ")", 500, 320) Local $hStatus = _GUICtrlStatusBar_Create($hGUI) ; Erstellt ein Memo Control _MemoCreate(2, 8, 444, 259) GUISetState(@SW_SHOW) ; Abschnitte setzen Local $aParts[3] = [75, 150, 300] ;, 400] _GUICtrlStatusBar_SetParts($hStatus, $aParts) _GUICtrlStatusBar_SetText($hStatus, "Abschnitt 0") _GUICtrlStatusBar_SetText($hStatus, "Abschnitt 1", 1) ; Setzt die Icons Local $hIcon1 = _GUICtrlStatusBar_SetIcon($hStatus, 0, 23, "shell32.dll") Local $hIcon2 = _GUICtrlStatusBar_SetIcon($hStatus, 1, 23, "shell32.dll") GUISetState(@SW_SHOW) ; Zeigt die Handles der Icons _MemoWrite("Handle vom Icon von Abschnitt 0 .: 0x" & Hex(_GUICtrlStatusBar_GetIcon($hStatus, 0))) _MemoWrite("Handle vom Icon von Abschnitt 1 .: 0x" & Hex(_GUICtrlStatusBar_GetIcon($hStatus, 1))) _MemoMsgBoxStatus("", -1, $hGUI) ; Keine weiteren Aktionen, es wird gewartet bis die GUI geschlossen wird. ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ; ISpeicherplatz der Icons freigeben _WinAPI_DestroyIcon($hIcon1) _WinAPI_DestroyIcon($hIcon2) GUIDelete() EndFunc ;==>Example