c++ - ListView 中的 Syslink

标签 c++ windows winapi

如果我在报告模式下有一个 listview 控件,我如何将 syslink 控件粘贴到其中一个列中?
我想要一个用户可以在其中一列中单击的链接。

最佳答案

listview 控件本身不支持这个。

您可以创建一个真正的 Syslink 控件,它是 ListView 的子控件。每当列表滚动(注意 WM_HSCROLL/WM_VSCROLL 消息)或添加或删除项目时,或者对项目进行排序时,您都需要对 ListView 进行子类化并重新定位 Syslink 控件。您可以使用 LVM_GETSUBITEMRECT 找出它的位置。

或者,您可以自己处理它,方法是使用 NM_CUSTOMDRAW 以不同的颜色显示“链接”,并处理 NM_CLICK 以在用户单击链接时进行捕捉。在我看来,这将是最简单的方法。请注意,如果您希望在链接上显示手形光标,您仍然需要对列表进行子类化并自行处理 WM_SETCURSOR。

关于c++ - ListView 中的 Syslink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11961421/

相关文章:

c++ - 函数重载与函数变量初始化

c++ - 我的循环链表中的 remove 方法是否定义明确?

ruby - 使用隐藏窗口运行 Tortoise SVN 命令行命令

C# - Windows ACL - 应用继承权限

c++ - 基本 std::regex,将查询转换为有效掩码

c++ - 使用 C++ 程序中的软件

c++ - 开发 Windows 窗体应用程序?

c# - 是否可以获取任何窗口的选定文本,包括非 UI 自动化元素?

winapi - 无法以编程方式读取某些注册表项

c++ - 在 Win32 上处理 CTRL+C