WEB开发网
开发学院软件开发VC VC一点通:实现文件夹的缩略图显示 阅读

VC一点通:实现文件夹的缩略图显示

 2008-11-14 19:36:31 来源:WEB开发网   
核心提示: 在列表需要显示一个项目之前,列表会发送LVN_GETDISPINFO通知,VC一点通:实现文件夹的缩略图显示(2),应用程序可以捕获这个消息来提供项目的显示信息,如果显示时需要显示的列表项在缓存中,那么可以从缓存中获取显示信息,否则需要重新从文件获得

在列表需要显示一个项目之前,列表会发送LVN_GETDISPINFO通知,应用程序可以捕获这个消息来提供项目的显示信息。如果显示时需要显示的列表项在缓存中,那么可以从缓存中获取显示信息。否则需要重新从文件获得。

voidCPicViewView::OnGetdispinfo(NMHDR*pNMHDR,LRESULT*pResult)
{
LV_DISPINFO*pDispInfo=(LV_DISPINFO*)pNMHDR;
if(pDispInfo->item.iItem==-1)return;
HRESULThr=S_OK;
LPCITEMIDLISTpidlItem=m_arpFolderItems[pDispInfo->item.iItem];
CFolderItemInfo*pFolderItemInfo=FindItemInCache(pidlItem);
BOOLbCached=TRUE;
if(pFolderItemInfo==NULL){
bCached=FALSE;
pFolderItemInfo=newCFolderItemInfo;
GetItemInfo(pidlItem,pFolderItemInfo);
}
if(pDispInfo->item.mask&LVIF_TEXT){
lstrcpyn(pDispInfo->item.pszText,pFolderItemInfo->tszDisplayName,pDispInfo->item.cchTextMax);
}
if(pDispInfo->item.mask&LVIF_IMAGE){
pDispInfo->item.iImage=pFolderItemInfo->iIcon;
}
if(pDispInfo->item.mask&LVIF_STATE){
pDispInfo->item.state=pFolderItemInfo->state;
}
if(!bCached)
deletepFolderItemInfo;
*pResult=0;
}

文件图标的显示

默认情况下,列表项的图标就是其系统图标。首先获得系统图像列表

intCPicViewView::OnCreate(LPCREATESTRUCTlpCreateStruct)
{
if(CListView::OnCreate(lpCreateStruct)==-1)
return-1;
HRESULThr=SHGetMalloc(&m_pMalloc);if(FAILED(hr))return-1;
hr=SHGetDesktopFolder(&m_psfDesktop);if(FAILED(hr))return-1;
SHFILEINFOshfi;
ZeroMemory(&shfi,sizeof(SHFILEINFO));
HIMAGELISThi=(HIMAGELIST)SHGetFileInfo(NULL,0,&shfi,sizeof(SHFILEINFO),SHGFI_ICON|SHGFI_SYSICONINDEX|SHGFI_SMALLICON);
GetListCtrl().SetImageList(CImageList::FromHandle(hi),LVSIL_SMALL);
hi=(HIMAGELIST)SHGetFileInfo(NULL,0,&shfi,sizeof(SHFILEINFO),SHGFI_ICON|SHGFI_SYSICONINDEX|SHGFI_LARGEICON);
GetListCtrl().SetImageList(CImageList::FromHandle(hi),LVSIL_NORMAL);
return0;
}

上一页  1 2 3 4 5 6  下一页

Tags:VC 一点通 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接