基于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
函数来设置鼠标形状。