Um ein Symbol zu verwenden, muss die Anwendung einen Handle auf das Symbol erhalten. Im folgenden Beispiel wird veranschaulicht, wie zwei verschiedene Symbol-Griffe erstellen: einen für das standard-Ausrufezeichen-Symbol und einen für ein benutzerdefiniertes Symbol als Ressource in der Anwendung Ressource-Definitionsdatei enthalten.
HICON hIcon1; / / Symbol handle HICON hIcon2; / / handle Symbol / / standard Fragezeichensymbol erstellen.
hIcon1 = LoadIcon (NULL, IDI_QUESTION);
/ / Erstellen ein benutzerdefiniertes Symbols auf der Grundlage einer Ressource.
hIcon2 = LoadIcon (Hinst, MAKEINTRESOURCE(460));
/ / Zur Laufzeit ein benutzerdefiniertes Symbol erstellen
Eine Anwendung implementieren benutzerdefinierte Symbole als Ressourcen und sollte den LoadIcon oder LoadImageverwenden Funktion, anstatt die Symbole zur Laufzeit erstellen. Dieser Ansatz vermeidet Gerät Abhängigkeit, vereinfacht die Lokalisierung und ermöglicht Anwendungen Symbol Bitmaps zu teilen. Im folgende Beispiel verwendet jedoch ein benutzerdefiniertes Symbol zur Laufzeit erstellen auf der Grundlage von Bitmap Bitmasken CreateIcon ; Es ist enthalten, die veranschaulichen, wie das System interpretiert Symbol Bitmap Bitmasken.
HICON hIcon3; // icon handle
// Yang icon AND bitmask
BYTE ANDmaskIcon[] = {0xFF, 0xFF, 0xFF, 0xFF, // line 1
0xFF, 0xFF, 0xC3, 0xFF, // line 2
0xFF, 0xFF, 0x00, 0xFF, // line 3
0xFF, 0xFE, 0x00, 0x7F, // line 4
0xFF, 0xFC, 0x00, 0x1F, // line 5
0xFF, 0xF8, 0x00, 0x0F, // line 6
0xFF, 0xF8, 0x00, 0x0F, // line 7
0xFF, 0xF0, 0x00, 0x07, // line 8
0xFF, 0xF0, 0x00, 0x03, // line 9
0xFF, 0xE0, 0x00, 0x03, // line 10
0xFF, 0xE0, 0x00, 0x01, // line 11
0xFF, 0xE0, 0x00, 0x01, // line 12
0xFF, 0xF0, 0x00, 0x01, // line 13
0xFF, 0xF0, 0x00, 0x00, // line 14
0xFF, 0xF8, 0x00, 0x00, // line 15
0xFF, 0xFC, 0x00, 0x00, // line 16
0xFF, 0xFF, 0x00, 0x00, // line 17
0xFF, 0xFF, 0x80, 0x00, // line 18
0xFF, 0xFF, 0xE0, 0x00, // line 19
0xFF, 0xFF, 0xE0, 0x01, // line 20
0xFF, 0xFF, 0xF0, 0x01, // line 21
0xFF, 0xFF, 0xF0, 0x01, // line 22
0xFF, 0xFF, 0xF0, 0x03, // line 23
0xFF, 0xFF, 0xE0, 0x03, // line 24
0xFF, 0xFF, 0xE0, 0x07, // line 25
0xFF, 0xFF, 0xC0, 0x0F, // line 26
0xFF, 0xFF, 0xC0, 0x0F, // line 27
0xFF, 0xFF, 0x80, 0x1F, // line 28
0xFF, 0xFF, 0x00, 0x7F, // line 29
0xFF, 0xFC, 0x00, 0xFF, // line 30
0xFF, 0xF8, 0x03, 0xFF, // line 31
0xFF, 0xFC, 0x3F, 0xFF}; // line 32
// Yang icon XOR bitmask
BYTE XORmaskIcon[] = {0x00, 0x00, 0x00, 0x00, // line 1
0x00, 0x00, 0x00, 0x00, // line 2
0x00, 0x00, 0x00, 0x00, // line 3
0x00, 0x00, 0x00, 0x00, // line 4
0x00, 0x00, 0x00, 0x00, // line 5
0x00, 0x00, 0x00, 0x00, // line 6
0x00, 0x00, 0x00, 0x00, // line 7
0x00, 0x00, 0x38, 0x00, // line 8
0x00, 0x00, 0x7C, 0x00, // line 9
0x00, 0x00, 0x7C, 0x00, // line 10
0x00, 0x00, 0x7C, 0x00, // line 11
0x00, 0x00, 0x38, 0x00, // line 12
0x00, 0x00, 0x00, 0x00, // line 13
0x00, 0x00, 0x00, 0x00, // line 14
0x00, 0x00, 0x00, 0x00, // line 15
0x00, 0x00, 0x00, 0x00, // line 16
0x00, 0x00, 0x00, 0x00, // line 17
0x00, 0x00, 0x00, 0x00, // line 18
0x00, 0x00, 0x00, 0x00, // line 19
0x00, 0x00, 0x00, 0x00, // line 20
0x00, 0x00, 0x00, 0x00, // line 21
0x00, 0x00, 0x00, 0x00, // line 22
0x00, 0x00, 0x00, 0x00, // line 23
0x00, 0x00, 0x00, 0x00, // line 24
0x00, 0x00, 0x00, 0x00, // line 25
0x00, 0x00, 0x00, 0x00, // line 26
0x00, 0x00, 0x00, 0x00, // line 27
0x00, 0x00, 0x00, 0x00, // line 28
0x00, 0x00, 0x00, 0x00, // line 29
0x00, 0x00, 0x00, 0x00, // line 30
0x00, 0x00, 0x00, 0x00, // line 31
0x00, 0x00, 0x00, 0x00}; // line 32
hIcon3 = CreateIcon(hinst, // application instance
32, // icon width
32, // icon height
1, // number of XOR planes
1, // number of bits per pixel
ANDmaskIcon, // AND bitmask
XORmaskIcon); // XOR bitmask
Um das Symbol zu erstellen, CreateIcon gilt die folgende Wahrheitstabelle für AND und XOR Bitmasken.
| UND Bitmaske | XOR Bitmaske | Anzeige |
|---|---|---|
| 0 | 0 | Schwarz |
| 0 | 1 | Weiß |
| 1 | 0 | Bildschirm |
| 1 | 1 | Umgekehrte Bildschirm |
Vor dem Schließen, muss die Anwendung DestroyIcon verwenden, um ein Symbol zu zerstören, die es mit CreateIconIndirecterstellt. Es ist nicht notwendig, die Icons erstellt von anderen Funktionen zerstören.