光标样式
IDC_APPSTARTING // 标准的箭头和小沙漏
IDC_ARROW // 标准的箭头
IDC_CROSS // 十字光标
IDC_HAND // Windows 98/Me, Windows 2000/XP: Hand
IDC_HELP // 标准的箭头和问号
IDC_IBEAM // 工字光标
IDC_ICON // Obsolete for applications marked version 4.0 or later.
IDC_NO // 禁止圈
IDC_SIZE // Obsolete for applications marked version 4.0 or later. Use IDC_SIZEALL.
IDC_SIZEALL // 四向箭头指向东、西、南、北
IDC_SIZENESW // 双箭头指向东北和西南
IDC_SIZENS // 双箭头指向南北
IDC_SIZENWSE // 双箭头指向西北和东南
IDC_SIZEWE // 双箭头指向东西
IDC_UPARROW // 垂直箭头
IDC_WAIT // 沙漏,Windows7下会显示为选择的圆圈表示等待
更改光标:链接
理论上利用 SetCursor() 函数 , 应该可以在任何时候,任何地方修改鼠标形状 ,但实际情况却并非如此 , 每次调用OnMouseMove时候, 系统会调用程序默认原来的一个光标来重新绘制鼠标形状 . 所以 , 你如果在其它地方修改光标 , 你会发现这根本不起作用 , 因为每次鼠标一移动 , 它又恢复到原来的形状了 . 这里需要用到另一个API来实现这个功能:
SetClassLong(this->GetSafeHwnd(), GCL_HCURSOR, (LONG)LoadCursor(NULL , IDC_CROSS));
例:
HCURSOR hCurSor1 = (HCURSOR)GetClassLong(this->GetSafeHwnd(), GCL_HCURSOR);
SetClassLong(this->GetSafeHwnd(), GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_SIZEALL));
HCURSOR hCurSor2 = (HCURSOR)GetClassLong(this->GetSafeHwnd(), GCL_HCURSOR);
SetClassLong(this->GetSafeHwnd(), GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_ARROW));
HCURSOR hCurSor3 = (HCURSOR)GetClassLong(this->GetSafeHwnd(), GCL_HCURSOR);
// 发现 hCurSor1 = hCurSor3