如何通过定义自己的HCURSOR来创建自定义光标

时间:2015-10-22 02:14:46

标签: c++ visual-c++

我正在尝试创建一个自定义光标,但我已经尝试了几个教程,但它们无法为其添加颜色。我尝试使用RGB(250, 0, 0)将其设为红色,但它只是显示为白色。

这是我的代码:

HCURSOR hCurs3;             // cursor handle 

// Yin-shaped cursor AND mask 

BYTE ANDmaskCursor[] =  
{ 
0xFF, 0xFC, 0x3F, 0xFF,   // line 1 
0xFF, 0xC0, 0x1F, 0xFF,   // line 2 
0xFF, 0x00, 0x3F, 0xFF,   // line 3 
0xFE, 0x00, 0xFF, 0xFF,   // line 4 

0xF7, 0x01, 0xFF, 0xFF,   // line 5 
0xF0, 0x03, 0xFF, 0xFF,   // line 6 
0xF0, 0x03, 0xFF, 0xFF,   // line 7 
0xE0, 0x07, 0xFF, 0xFF,   // line 8 

0xC0, 0x07, 0xFF, 0xFF,   // line 9 
0xC0, 0x0F, 0xFF, 0xFF,   // line 10 
0x80, 0x0F, 0xFF, 0xFF,   // line 11 
0x80, 0x0F, 0xFF, 0xFF,   // line 12 

0x80, 0x07, 0xFF, 0xFF,   // line 13 
0x00, 0x07, 0xFF, 0xFF,   // line 14 
0x00, 0x03, 0xFF, 0xFF,   // line 15 
0x00, 0x00, 0xFF, 0xFF,   // line 16 

0x00, 0x00, 0x7F, 0xFF,   // line 17 
0x00, 0x00, 0x1F, 0xFF,   // line 18 
0x00, 0x00, 0x0F, 0xFF,   // line 19 
0x80, 0x00, 0x0F, 0xFF,   // line 20 

0x80, 0x00, 0x07, 0xFF,   // line 21 
0x80, 0x00, 0x07, 0xFF,   // line 22 
0xC0, 0x00, 0x07, 0xFF,   // line 23 
0xC0, 0x00, 0x0F, 0xFF,   // line 24 

0xE0, 0x00, 0x0F, 0xFF,   // line 25 
0xF0, 0x00, 0x1F, 0xFF,   // line 26 
0xF0, 0x00, 0x1F, 0xFF,   // line 27 
0xF8, 0x00, 0x3F, 0xFF,   // line 28 

0xFE, 0x00, 0x7F, 0xFF,   // line 29 
0xFF, 0x00, 0xFF, 0xFF,   // line 30 
0xFF, 0xC3, 0xFF, 0xFF,   // line 31 
0xFF, 0xFF, 0xFF, 0xFF    // line 32 
};

// Yin-shaped cursor XOR mask 

BYTE XORmaskCursor[] = 
{ 
0x00, 0x00, 0x00, 0x00,   // line 1 
0x00, 0x03, 0xC0, 0x00,   // line 2 
0x00, 0x3F, 0x00, 0x00,   // line 3 
0x00, 0xFE, 0x00, 0x00,   // line 4 

0x0E, 0xFC, 0x00, 0x00,   // line 5 
0x07, 0xF8, 0x00, 0x00,   // line 6 
0x07, 0xF8, 0x00, 0x00,   // line 7 
0x0F, 0xF0, 0x00, 0x00,   // line 8 

0x1F, 0xF0, 0x00, 0x00,   // line 9 
0x1F, 0xE0, 0x00, 0x00,   // line 10 
0x3F, 0xE0, 0x00, 0x00,   // line 11 
0x3F, 0xE0, 0x00, 0x00,   // line 12 

0x3F, 0xF0, 0x00, 0x00,   // line 13 
0x7F, 0xF0, 0x00, 0x00,   // line 14 
0x7F, 0xF8, 0x00, 0x00,   // line 15 
0x7F, 0xFC, 0x00, 0x00,   // line 16 

0x7F, 0xFF, 0x00, 0x00,   // line 17 
0x7F, 0xFF, 0x80, 0x00,   // line 18 
0x7F, 0xFF, 0xE0, 0x00,   // line 19 
0x3F, 0xFF, 0xE0, 0x00,   // line 20 

0x3F, 0xC7, 0xF0, 0x00,   // line 21 
0x3F, 0x83, 0xF0, 0x00,   // line 22 
0x1F, 0x83, 0xF0, 0x00,   // line 23 
0x1F, 0x83, 0xE0, 0x00,   // line 24 

0x0F, 0xC7, 0xE0, 0x00,   // line 25 
0x07, 0xFF, 0xC0, 0x00,   // line 26 
0x07, 0xFF, 0xC0, 0x00,   // line 27 
0x01, 0xFF, 0x80, 0x00,   // line 28 

0x00, 0xFF, 0x00, 0x00,   // line 29 
0x00, 0x3C, 0x00, 0x00,   // line 30 
0x00, 0x00, 0x00, 0x00,   // line 31 
0x00, 0x00, 0x00, 0x00    // line 32 
};

// Create a custom cursor at run time. 

hCurs3 = CreateCursor(hInstance,   // app. instance 
                      19,                // horizontal position of hot spot 
                      2,                 // vertical position of hot spot 
                      32,                // cursor width 
                      32,                // cursor height 
                      ANDmaskCursor,     // AND mask 
                      XORmaskCursor);    // XOR mask
                      SetCursor(hCurs3);
                      SetClassLongPtr(hWnd, GCLP_HCURSOR, reinterpret_cast<LONG_PTR>(hCurs3));

我在Windows 7上使用Dev C ++。有关如何添加颜色的任何想法吗?

0 个答案:

没有答案