读书人

关于设置系统光标的有关问题

发布时间: 2012-09-07 10:38:15 作者: rapoo

关于设置系统光标的问题
使用以下代码设置正常状态下的系统光标:

HCURSORNewCursor = ::LoadCursorFromFile(_T("d:\\Cursor.cur"));
SetSystemCursor(NewCursor, 32512);

Cursor.cur光标尺寸很大,可是使用SetSystemCursor设置后,光标只为标准的光标大小,怎么样才能设置尺寸比较大的光标?
我看有些软件实现了。

[解决办法]

C/C++ code
The following example creates two cursor handles: one for the standard hourglass cursor and one for a custom cursor included as a resource in the application's resource-definition file. HINSTANCE hinst;            // handle to current instance HCURSOR hCurs1, hCurs2;     // cursor handles  // Create a standard hourglass cursor.  hCurs1 = LoadCursor(NULL, IDC_WAIT);  // Create a custom cursor based on a resource.  hCurs2 = LoadCursor(hinst, MAKEINTRESOURCE(240)); You should implement custom cursors as resources. Rather than create the cursors at run time, use the LoadCursor, LoadCursorFromFile, or LoadImage function to avoid device dependence, to simplify localization, and to enable applications to share cursor designs. The following example uses the CreateCursor function to create a custom cursor at run time. The example is included here to illustrate how the system interprets cursor masks. HINSTANCE hinst;            // handle to current instance  HCURSOR hCurs1, hCurs2;     // cursor handles  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( hinst,   // 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 

读书人网 >VC/MFC

热点推荐