如何利用LISTVIEW CTRL (Activex Control)组件

fenger 2000-10-13 08:39:00
请各位解决:
在MFC中,我想利用LISTVIEW CTRL (Activex Control)组件,在SP4中, 不是CLISTCTRL类。
但是现在不能把Imagelist 联上组件。方法是:MyListView1.SetIcons (LPDISPATCH).
如何创建一个LPDISPATCH参数?
...全文
156 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Edward 2000-10-14
  • 打赏
  • 举报
回复
SP4 带的 ListView ActiveX 控件是专门为 VB 设计的,VC 用起来很麻烦。
Where it's easy for VB, it's difficult from VC.
另外,在 VB 设计环境中,ListView 与 ImageList 结合使用;我想在 VC 中,你也要使用 ImageList ActiveX Control;正是 ImageList 控件提供 LPDISPATCH 接口;在你的窗口上再放个 ImageList 吧。
土豆 2000-10-14
  • 打赏
  • 举报
回复
干吗一定要用ActiveX控件,用VC自带的CListView不行吗?
土豆 2000-10-13
  • 打赏
  • 举报
回复
BOOL CEnumNetworkDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

//设置列表控件的扩展属性
DWORD dwStyle = m_cNetResource.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;
dwStyle |= LVS_EX_FLATSB;
m_cNetResource.SetExtendedStyle(dwStyle);

//设置光标
m_hCustomHotCursor= AfxGetApp()->LoadCursor(IDC_HOTCURSOR);
m_hHotCursor= m_cNetResource.GetHotCursor();
m_bHotCursor = FALSE;

//设置图标
HIMAGELIST hList = ImageList_Create(32,32, ILC_COLOR8 |ILC_MASK , 8, 1);
m_cImageListNormal.Attach(hList);

hList = ImageList_Create(16, 16, ILC_COLOR8 | ILC_MASK, 8, 1);
m_cImageListSmall.Attach(hList);

CBitmap cBmp;
cBmp.LoadBitmap(IDB_IMAGES_NORMAL);
m_cImageListNormal.Add(&cBmp, RGB(255,0, 255));
cBmp.DeleteObject();

cBmp.LoadBitmap(IDB_IMAGES_SMALL);
m_cImageListSmall.Add(&cBmp, RGB(255,0, 255));

m_cNetResource.SetImageList(&m_cImageListNormal, LVSIL_NORMAL);
m_cNetResource.SetImageList(&m_cImageListSmall, LVSIL_SMALL);

//添加列
CRect rect;
m_cNetResource.GetClientRect(&rect);
int nColInterval = rect.Width()/7;

m_cNetResource.InsertColumn(0, _T("真名"), LVCFMT_LEFT, nColInterval*3);
m_cNetResource.InsertColumn(1, _T("层次"), LVCFMT_LEFT, nColInterval);
m_cNetResource.InsertColumn(2, _T("显示名称"), LVCFMT_LEFT, rect.Width()-4*nColInterval);

return TRUE; // return TRUE unless you set the focus to a control
}



void CEnumNetworkDlg::InsertItem(int iLevel,CString szTrueName,CString szDisplayName)
{
m_iNumbers++;

LVITEM lvi;
lvi.mask = LVIF_IMAGE | LVIF_TEXT|LVIF_INDENT;
lvi.iItem =m_iNumbers;
lvi.iIndent=iLevel;
lvi.iSubItem = 0;
lvi.pszText = (LPTSTR)(LPCTSTR)(szTrueName);
lvi.iImage = iLevel;
m_cNetResource.InsertItem(&lvi);

LPTSTR szLevel="";
wsprintf(szLevel,_T("%d"),iLevel);
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.iSubItem =1;
lvi.pszText =szLevel;
m_cNetResource.SetItem(&lvi);

lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.iSubItem =2;
lvi.pszText = (LPTSTR)(LPCTSTR)(szDisplayName);
m_cNetResource.SetItem(&lvi);
}

void CEnumNetworkDlg::OnEnum()
{
// TODO: Add your control notification handler code here
m_iNumbers=0;
m_cNetResource.DeleteAllItems();
EnumerateNetHood((LPNETRESOURCE)NULL);
}

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧