Funktionreferenz


_WinAPI_CreateIconIndirect

Beschreibung anzeigen in

Erzeugt ein Icon oder ein Mauszeiger mit der gegebenen Größe, Farbe und Bitmustern.

#include <WinAPIIcons.au3>
_WinAPI_CreateIconIndirect ( $hBitmap, $hMask [, $iXHotspot = 0 [, $iYHotspot = 0 [, $bIcon = True]]] )

Parameter

$hBitmap Das Handle zu der Iconfarbenbitmap.
$hMask Das handle zu der Iconbitmaskenbitmap.
$iXHotspot [optional] Gibt die X-Koordinate des Mauszeiger Hotpots an. Sollte ein Icon erzeugt werden, so ist der Hotspot immer das Zentrum des Icons und dieser Parameter wird ignoriert. Standard ist 0.
$iYHotspot [optional] Gibt die Y-Koordinate des Mauszeiger Hotpots an. Sollte ein Icon erzeugt werden, so ist der Hotspot immer das Zentrum des Icons und dieser Parameter wird ignoriert. Standard ist 0.
$bIcon [optional] Gibt an, ob ein ein Icon oder ein Mauszeiger erzeugt werden soll. Gültige Werte sind:
    True - Erzeugt ein Icon (Standard).
    False - Erzeugt einen Mauszeiger.

Rückgabewert

Erfolg: Das Handle des Icons oder Mauszeigers.
Fehler: 0. Es ist _WinAPI_GetLastError() aufzurufen um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

Das System kopiert die Bitmaps bevor es ein Icon oder einen Mauszeiger erstellt.
Da das System diese Bitmaps im Gerätekontext temporär auswählen kann,
sollten $hBitmap und $hMask nicht bereits in den Gerätekontext ausgewählt worden sein.
Die Anwendung muss nichtsdesotrotz die Originalbitmaps verwalten und sie mittels _WinAPI_DeleteObject() löschen wenn sie nicht mehr gebraucht werden.

Verwandte Funktionen

_WinAPI_DeleteObject

Siehe auch

Suche nach CreateIconIndirect in der MSDN Bibliothek.

Beispiel

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIHObj.au3>
#include <WinAPIIcons.au3>
#include <WinAPIMisc.au3>

; Create XOR bitmap
Local $hDC = _WinAPI_GetDC(0)
Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
Local $hXOR = _WinAPI_CreateCompatibleBitmapEx($hDC, 32, 32, 0)
Local $hSv = _WinAPI_SelectObject($hMemDC, $hXOR)
_WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($DC_BRUSH))
_WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($NULL_PEN))
Local $tRECT = _WinAPI_CreateRectEx(0, 1, 22, 22)
_WinAPI_SetDCBrushColor($hMemDC, 0x0000FF)
_WinAPI_Ellipse($hMemDC, $tRECT)
_WinAPI_OffsetRect($tRECT, 11, 0)
_WinAPI_SetDCBrushColor($hMemDC, 0x00FF00)
_WinAPI_Ellipse($hMemDC, $tRECT)
_WinAPI_OffsetRect($tRECT, -6, 9)
_WinAPI_SetDCBrushColor($hMemDC, 0xFF0000)
_WinAPI_Ellipse($hMemDC, $tRECT)
_WinAPI_ReleaseDC(0, $hDC)
_WinAPI_SelectObject($hMemDC, $hSv)
_WinAPI_DeleteDC($hMemDC)

; Create AND bitmap
$hDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hDC)
Local $hAND = _WinAPI_CreateBitmap(32, 32, 1, 1)
$hSv = _WinAPI_SelectObject($hMemDC, $hAND)
_WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($DC_BRUSH))
_WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($NULL_PEN))
_WinAPI_SetDCBrushColor($hMemDC, 0xFFFFFF)
$tRECT = _WinAPI_CreateRectEx(0, 0, 33, 33)
_WinAPI_Rectangle($hMemDC, $tRECT)
_WinAPI_SetDCBrushColor($hMemDC, 0)
$tRECT = _WinAPI_CreateRectEx(0, 1, 22, 22)
_WinAPI_Ellipse($hMemDC, $tRECT)
_WinAPI_OffsetRect($tRECT, 11, 0)
_WinAPI_Ellipse($hMemDC, $tRECT)
_WinAPI_OffsetRect($tRECT, -6, 9)
_WinAPI_Ellipse($hMemDC, $tRECT)
_WinAPI_ReleaseDC(0, $hDC)
_WinAPI_SelectObject($hMemDC, $hSv)
_WinAPI_DeleteDC($hMemDC)

; Create icon
Local $hIcon = _WinAPI_CreateIconIndirect($hXOR, $hAND)

; Free bitmaps
_WinAPI_DeleteObject($hXOR)
_WinAPI_DeleteObject($hAND)

; Create GUI
GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()'), 128, 128)
GUICtrlCreateIcon('', 0, 48, 48, 32, 32)
GUICtrlSendMsg(-1, $STM_SETIMAGE, 1, $hIcon)
GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE