Win32:使用标准游标 (IDC_CROSS) 创建类

Win32: Create a class with standard cursor (IDC_CROSS)

本文关键字:CROSS 创建 IDC 标准 游标 Win32      更新时间:2023-10-16

Win32新手在这里。我在使用标准 WinAPI 游标之一时遇到了一些问题:IDC_CROSS。创建新类时,我将类光标设置为IDC_CROSS,即十字准线。但是,当我运行程序时,我的光标永远不会改变,并且始终是标准箭头。

ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINSCREENCAP));
    wcex.hCursor        = LoadCursor(NULL, IDC_CROSS);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_WINSCREENCAP);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
    return RegisterClassEx(&wcex);
}

我使用的是 VC++ 2010 Express,即使我创建了一个新的(非空)Win32 项目并仅更改类光标值,也会发生这种情况。我错过了什么非常明显的东西吗?

窗口类游标设置正确。您可能需要检查类注册是否成功(RegisterClassEx返回非零值),以及窗口是否实际基于此类注册创建。需要注意的主要事项是使用相同的窗口类名和HINSTANCE值调用CreateWindow函数。您还可以检查LoadCursor是否实际返回非零值。如果LoadCursor由于某种原因失败,它将返回零,并且 Windows 将默认为标准光标。