显示光标

【勇芳软件工作室】汉化HomePreviousNext

Windows自动显示类光标(与光标所指向的窗口相关联的光标)。注册窗口类时可以分配类游标。以下示例通过为【wc】参数标识的WNDCLASS结构的HCURSORpt成员分配光标句柄来说明这一点。

WNDCLASS wc;

//填写窗口类结构的参数

//描述主窗口。

wc.style = NULL; //类风格

wc.lpfnWndProc = (WNDPROC) MainWndProc; //窗口过程

wc.cbClsExtra = 0; //不需要每个额外的数据

wc.cbWndExtra = 0; //没有每窗口额外的数据

wc.hInstance = hinst; //拥有该类的应用程序

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); //类图标

wc.hCursor = LoadCursor(hinst, MAKEINTRESOURCE(230)); //类游标

wc.hbrBackground = GetStockObject(WHITE_BRUSH); //类背景

wc.lpszMenuName = "GenericMenu"; //类菜单

wc.lpszClassName = "GenericWClass" // 班级名称

//注册窗口类。

return RegisterClass(&wc);

当窗口类被注册时,应用程序的资源定义文件中由230标识的游标将是基于该类的所有窗口的默认游标。

您的应用程序可以使用SetCursor功能并指定不同的光标句柄来更改游标的设计。但是,当光标移动时,Windows会在新位置重新绘制类光标。为防止重新绘制类光标,您必须处理WM_SETCURSOR消息。每次光标移动,鼠标输入未被捕获时,Windows会将此消息发送到光标移动的窗口。

处理WM_SETCURSOR时,可以为不同的条件指定不同的游标。例如,以下示例显示了每当光标移动到最小化应用程序的图标上时,如何显示【hCurs3】光标。

case WM_SETCURSOR:

//如果窗口最小化,绘制hC??urs3游标。

//如果窗口没有最小化,则绘制默认值

// cursor(类cursor)。

if(IsIconic(hwnd))

{

SetCursor(hCurs3);

break;

}

当窗口不被最小化时,Windows显示类游标。

您可以使用SetClassLong功能替换类游标。此函数更改给定类的所有窗口的默认窗口设置。以下示例使用【hCurs2】光标替换现有的类游标。

//更改由hwnd表示的窗口类的游标。

SetClassLong(hwnd, //窗口句柄

GCL_HCURSOR, //更改光标

(LONG) hCurs2); //新光标

有关详细信息,请参阅窗口类鼠标输入.