การสร้างไอคอน

การใช้ไอคอน โปรแกรมประยุกต์ของคุณต้องได้รับหมายเลขอ้างอิงที่ไปยังไอคอน ตัวอย่างต่อไปนี้แสดงวิธีการสร้างการจับไอคอนที่แตกต่างกันสอง: หนึ่งสำหรับไอคอนเครื่องหมายอัศเจรีย์มาตรฐานและหนึ่งสำหรับไอคอนกำหนดเองที่รวมเป็นทรัพยากรในแฟ้มทรัพยากรข้อกำหนดของโปรแกรมประยุกต์.

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กับตารางความจริงต่อไปและการ XOR bitmasks และ.

และ bitmask XOR bitmask จอแสดงผล
0 0 สีดำ
0 1 สีขาว
1 0 หน้าจอ
1 1 กลับหน้าจอ

ก่อนที่จะปิดบัญชี โปรแกรมประยุกต์ของคุณต้องใช้DestroyIconเพื่อทำลายไอคอนใด ๆ ที่สร้าง โดยใช้CreateIconIndirect มันไม่จำเป็นต้องทำลายไอคอนที่สร้างขึ้น โดยฟังก์ชันอื่น ๆ.

Index