在开发桌面应用程序时,经常需要在列表控件中添加超链接功能。本文将介绍如何在MFC的CListCtrl控件中实现超链接功能,并提供详细的代码实现。
在The Code Project上搜索相关实现时,发现大多数代码虽然能够提供基本功能,但并不完美。当光标移动到单元格上时,如果光标不在文字上,超链接无法工作。因此,决定编写代码,使得当光标移动到单元格中的文字上时,超链接能够工作,并且可以通过鼠标点击打开网站。
首先,定义了一个结构体stURLTAG来存储超链接信息:
typedef struct {
BOOL IsHoverOn;
CString strURL;
CString strTooltip;
} stURLTAG;
然后,创建了一个名为CLinkListCtrl的类,它继承自CListCtrl:
#pragma once
#include
接下来,展示如何使用CLinkListCtrl:
m_list.InsertColumn(0, "NO", LVCFMT_LEFT, 50);
m_list.InsertColumn(1, "Name", LVCFMT_LEFT, 100);
m_list.InsertColumn(2, "Enter IN", LVCFMT_LEFT, 80);
m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
m_list.InsertItem(0, _T(""));
m_list.SetItemText(0, 0, "1");
m_list.SetItemText(0, 1, "bd");
m_list.SetItemText(0, 2, "baidu");
m_list.SetItemURL(0, 2, "www.baidu.com", "search website - baidu");
m_list.InsertItem(1, _T(""));
m_list.SetItemText(1, 0, "2");
m_list.SetItemText(1, 1, "gg");
m_list.SetItemText(1, 2, "google");
m_list.SetItemURL(1, 2, "www.google.com", "search website - google");