我正在构建一个自定义 win32 控件/小部件,并且希望在将鼠标悬停在控件中的特定垂直线上时将光标更改为水平“分隔符”符号。IE:我想左右(西和东)拖动这条垂直线(分割栏)。

在系统游标 (OCR_*) 中,唯一有意义的游标是 OCR_SIZEWE。不幸的是,这是系统在调整窗口大小时使用的又大又笨拙的光标。相反,我正在寻找大约 20 像素高、大约 3 或 4 像素宽、有两个指向左侧和右侧的小箭头的光标。

我可以轻松地绘制它并将其作为资源包含在我的应用程序中,但光标本身非常普遍,我想确保它没有丢失某些东西。

例如:当您使用 COM 拖放机制(CLSID_DragDropHelper、IDropTarget 等)时,您可以隐式访问“拖动”图标(指针下方的小框)。我没有看到这个人有明确的 OCR_* 常量......同样,如果我无法完全找到此拆分器光标,我想知道它是否是 COM 对象的一部分或 win32 库中其他内容的一部分。

有帮助吗?

解决方案

Windows UI 中使用了各种图标、光标和图像,这些图标、光标和图像未向第三方软件公开提供。当然,您仍然可以加载它们所在的模块并使用它们,但实际上并不能保证您的程序在系统更新/升级后继续工作。

包括你自己的。您最不想看到的就是为一个小小的光标添加额外的依赖项。

其他提示

我遇到了这个问题。当我回顾垂直分离器的一些旧代码时,认为我有一个简单的答案,结果证明我已经构建并加载了我自己的资源:

SetCursor( LoadCursor( ghInstance, "IDC_SPLITVERT" ));

我依稀记得投入了相当多的时间和精力来寻找系统的执行方式,所以(我的猜测)是没有一个系统图标可以随时完成这项工作,所以你最好自己推出。

这是我想犯错的时候之一,因为我希望这项工作有一个系统图标。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top