Windows桌面应用程序(1-2-5-7th) 设置光标图像

光标是显示鼠标或其他指示设备位置的小图像。许多应用程序更改光标图像以向用户提供反馈。虽然它不是必需的,但它为您的应用程序增添了一点点润色。

Windows提供了一组标准光标图像,称为系统光标。这些包括箭头,手,工字光标,沙漏(现在是旋转的圆圈)等。本节介绍如何使用系统光标。有关更高级的任务,例如创建自定义光标,请参阅光标

您可以通过设置WNDCLASSWNDCLASSEX结构的hCursor成员将光标与窗口类关联。否则,默认光标是箭头。当鼠标在窗口上移动时,窗口会收到WM_SETCURSOR消息(除非另一个窗口捕获了鼠标)。此时,发生以下事件之一:

  • 应用程序设置光标,窗口过程返回TRUE
  • 应用程序不执行任何操作,并将WM_SETCURSOR传递给DefWindowProc

要设置光标,程序将执行以下操作:

  1. 调用LoadCursor将光标加载到内存中。此函数返回光标的句柄。
  2. 调用SetCursor并传入光标句柄。

否则,如果应用程序将WM_SETCURSOR传递给DefWindowProc,则DefWindowProc函数使用以下算法设置光标图像:

  1. 如果窗口具有父级,则将WM_SETCURSOR消息转发给要处理的父级。
  2. 否则,如果窗口有一个类光标,则将光标设置为类光标。
  3. 如果没有类光标,请将光标设置为箭头光标。

LoadCursor函数可以从资源或其中一个系统游标加载自定义游标。以下示例显示如何将光标设置为系统手形光标。

hCursor=LoadCursor(NULL,cursor);
SetCursor(hCursor);

如果更改光标,光标图像将在下一次鼠标移动时重置,除非您截取WM_SETCURSOR消息并再次设置光标。 以下代码显示了如何处理WM_SETCURSOR

case WM_SETCURSOR:
    if(LOWORD(lParam)==HTCLIENT){
        SetCursor(hCursor);
        return TRUE;
    }
    break;

该代码首先检查lParam的低16位。 如果LOWORD(lParam)等于HTCLIENT,则表示光标位于窗口的客户区域上方。 否则,光标位于非客户区域上方。 通常,您应该只为客户区设置光标,并让Windows为非客户区设置光标。

下一个

用户输入:扩展示例


原文链接:Setting the Cursor Image

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值