WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院软件开发VC VC一点通:实现文件夹的缩略图显示 阅读

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

 2008-11-14 19:36:31 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愭娑樷枎閹邦剛娉氶梺鍛婎殔濞层劌鈻撻幋婵愬殫妞ゆ梻鍘х憴锟�
核心提示:本示例演示了列表控件的虚列表和自画功能,也演示了一些系统外壳的函数和接口的使用方法,VC一点通:实现文件夹的缩略图显示,  预备性阅读  在阅读本文之前,建议先对列表视图控件和系统外壳有一个基本的了解,列表会发送LVN_ODCACHEHINT通知,应用程序可以捕获这个消息来缓存部分列表的显示信息,建议阅读以下SDK文章

本示例演示了列表控件的虚列表和自画功能,也演示了一些系统外壳的函数和接口的使用方法。

  预备性阅读

  在阅读本文之前,建议先对列表视图控件和系统外壳有一个基本的了解。建议阅读以下SDK文章

  ShellFAQ
  List-ViewControlsOverview
  UsingList-ViewControls
  CustomizingaControl'sAppearanceUsingCustomDraw

  创建应用程序

  使用MFC应用程序向导创建一个SDI应用程序,在最后一步选择视图的基类为CListView。创建完成之后,在资源中去掉保存、编辑和打印等功能的菜单和工具栏按钮(因为这些功能没有实现)。

  虚列表的创建

  本文采用虚列表技术,使得显示信息是在第一次显示的时候才被获取。为了创建虚列表,在创建之前需要指定列表的风格

  BOOLCPicViewView::PreCreateWindow(CREATESTRUCT&cs)
  {
  cs.style&=~LVS_TYPEMASK;
  cs.style|=LVS_ICON|LVS_OWNERDATA;
  returnCListView::PreCreateWindow(cs);
  }

  同时,因为列表项的Overlay图标也是被动态获取的,所以需要设置动态Overlay图标

  voidCPicViewView::OnInitialUpdate()
  {
  CListView::OnInitialUpdate();
  GetListCtrl().SetCallbackMask(LVIS_OVERLAYMASK);
  }
  

  缓存显示信息

  在列表需要显示一个范围的项目之前,列表会发送LVN_ODCACHEHINT通知,应用程序可以捕获这个消息来缓存部分列表的显示信息,以提高性能。
  voidCPicViewView::OnOdcachehint(NMHDR*pNMHDR,LRESULT*pResult)
  {
  NMLVCACHEHINT*pCacheHint=(NMLVCACHEHINT*)pNMHDR;
  PrepCache(0,min(5,m_arpFolderItems.GetSize()));
  PrepCache(pCacheHint->iFrom,pCacheHint->iTo);
  PrepCache(max(0,m_arpFolderItems.GetSize()-5),m_arpFolderItems.GetSize());
  *pResult=0;
  }

1 2 3 4 5 6  下一页

Tags:VC 一点通 实现

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