כדי להשתמש בסמל, היישום חייבים להשיג נקודת אחיזה על הסמל. הדוגמה הבאה מראה כיצד ליצור שתי נקודות אחיזה של סמל שונה: אחד עבור סמל סימן הקריאה הרגילה ואחת עבור סמל מותאם אישית כלולים כמשאב בקובץ הגדרת משאב של היישום.
HICON hIcon1; / / סמל לטפל HICON hIcon2; / / סמל לטפל / / יצירת סמל שאלה רגיל.
hIcon1 = LoadIcon (NULL, IDI_QUESTION);
/ / יצירת סמל מותאם אישית המבוסס על משאב.
hIcon2 = LoadIcon (hinst, MAKEINTRESOURCE(460));
/ / יצירת סמל מותאם אישית בזמן ריצה
יישום צריכים ליישם סמלים מותאמים אישית משאבים ולהשתמש LoadIcon או LoadImage לתפקד, במקום ליצור את הסמלים בזמן ריצה. גישה זו מונע התקן התלות מפשט לוקליזציה, מאפשר ליישומים לשתף מפות סיביות של סמל. עם זאת, הדוגמה הבאה משתמשת CreateIcon כדי ליצור סמל מותאם אישית בזמן ריצה, בהתבסס על מפת סיביות bitmasks; הוא נכלל כדי להמחיש כיצד המערכת מפרש bitmasks מפת הסיביות של הסמל.
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
כדי ליצור את הסמל, חל CreateIcon האמת שלהלן AND ו XOR bitmasks.
| ואת מסיכת סיביות | מסיכת סיביות של XOR | תצוגה |
|---|---|---|
| 0 | 0 | שחור |
| 0 | 1 | לבן |
| 1 | 0 | מסך |
| 1 | 1 | מסך הפוך |
לפני הסגירה, היישום שלך עליך להשתמש DestroyIcon כדי להשמיד כל סמל שזה נוצר על-ידי שימוש CreateIconIndirect. אין צורך להרוס סמלים שנוצרו על-ידי פונקציות אחרות.