exgdreamer 2023-05-13 21:24 采纳率: 53.3%
浏览 17
已结题

c++easyx如何改变鼠标指针

我正在使用easyx做图形化窗口
现在我需要制作一个按钮,我的想法是鼠标移动到按钮上时变成手的形状(就跟正常按按钮一样)

switch (msg.message) {
                case WM_MOUSEMOVE:
                    //todo
                    

                    break;
                default:
                    break;
                }

如何实现

  • 写回答

1条回答 默认 最新

  • 社区专家-Monster-XH 2023-05-13 21:33
    关注

    基于Monster 组和GPT的调写:

    在WM_MOUSEMOVE消息的处理代码中使用SetCursor函数来设置鼠标的形状。

    switch (msg.message) {
        case WM_MOUSEMOVE:
            // 获取鼠标位置
            POINT pt;
            GetCursorPos(&pt);
            // 将鼠标位置转换为相对于窗口客户区的坐标
            ScreenToClient(hwnd, &pt);
            
            // 检查鼠标是否在按钮范围内
            if (PtInRect(&buttonRect, pt)) {
                // 设置鼠标形状为手
                SetCursor(LoadCursor(NULL, IDC_HAND));
            } else {
                // 恢复默认鼠标形状
                SetCursor(LoadCursor(NULL, IDC_ARROW));
            }
            
            break;
        default:
            break;
    }
    
    • 假设buttonRect是按钮的矩形区域,hwnd是窗口的句柄。PtInRect函数用于检查鼠标位置是否在按钮范围内。当鼠标在按钮范围内时,使用SetCursor函数将鼠标形状设置为手型(IDC_HAND),否则恢复为默认的箭头形状(IDC_ARROW)。
    • LoadCursor函数用于加载系统提供的标准鼠标光标形状。你也可以使用自定义的光标资源,如自定义的手型光标,通过调用LoadCursorFromFile函数加载光标文件,然后将其传递给SetCursor函数来设置鼠标形状。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月11日
  • 已采纳回答 6月3日
  • 创建了问题 5月13日

悬赏问题

  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件
  • ¥30 关于#wpf# devexpress的问题:选中时是黑色未选中是白色字体,想要更改未选中时字体的颜色(语言-c#)
  • ¥15 逐月累计,月份不连续,补齐月份
  • ¥15 应用简单的Python代码完成一个学生成绩管理系统
  • ¥15 用matlab求微分方程初值问题
  • ¥15 vscode下编写第三方库opencv与pcl代码时没有代码提示
  • ¥15 能够跑通不报错,如何解决?(标签-matlab)
  • ¥15 MOS在RDS较大,频率高时开关波形异常