You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SendMessage在运行时动态设置光标形状?

Win32 控件动态设置光标形状实现

适用场景

需要在特定事件触发时动态调整光标显示样式,常见适配场景如下:

  • 按钮处于禁用状态时,光标显示为默认箭头样式
  • 编辑控件内容输入符合校验规则后,按钮切换为可点击状态,光标同步切换为手型样式

实现代码

// 加载系统手型光标
HCURSOR lCursor = LoadCursor(NULL, IDC_HAND);
HCURSOR hCursor = SetCursor(lCursor);

Button* btnLogin = new Button(hWnd);
HWND  hBtnLogin = btnLogin->getHandle();

// 向窗口发送消息为指定按钮设置光标
SendMessage(hWnd, WM_SETCURSOR, (WPARAM) hBtnLogin, (LPARAM) hCursor);

补充说明

如果需要在按钮禁用时切回箭头光标,只需将LoadCursor的第二个参数替换为IDC_ARROW,重新发送WM_SETCURSOR消息即可。
系统内置光标无需手动调用DestroyCursor释放,提前销毁会导致光标显示异常。

内容的提问来源于stack exchange,提问作者david

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:06:03