Visual C++2005下为ListControl添加图标

Visual C++2005下为ListControl添加图标

作者:flyfish 2009-5-17  

一 窗体初始化时ListControl载入图标
CListCtrl m_List_Image;
CImageList ImageListBmp;
初始化窗口添加
 HICON hicon;
 ImageListBmp.Create(48,48, ILC_COLOR32, 0, 10);
 hicon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
        ImageListBmp.Add(hicon);
        m_List_Image.SetImageList(&ImageListBmp,LVSIL_NORMAL);
        m_List_Image.InsertItem(0,_T("1"),1);

二 采用文件对话框的方式添加图标到ListControl
在C*Dlg头文件中声明
CListCtrl m_List_Image;
CImageList ImageListBmp;
初始化窗口添加
ImageListBmp.Create(48,48, ILC_COLOR32, 0, 10);
m_List_Image.SetImageList(&ImageListBmp,LVSIL_NORMAL);
添加一个按钮事件
UpdateData(true);
 CFileDialog fileDialog( TRUE,_T("*.*"),NULL,NULL,NULL);
 if (fileDialog.DoModal() != IDOK) return;
 CString strExt= fileDialog.GetFileExt();
 CString strFileName=fileDialog.GetFileName();
 strExt=_T(".")+strExt;
 SHFILEINFO   sfi;
 SHGetFileInfo(strExt,0,&sfi,sizeof(sfi),SHGFI_ICON|SHGFI_LARGEICON|SHGFI_USEFILEATTRIBUTES);
    HICON hIcon=sfi.hIcon;
 ImageListBmp.Add(hIcon);
 m_List_Image.InsertItem(m_List_Image.GetItemCount(),strFileName,m_List_Image.GetItemCount());
 UpdateData(false);

三 采用向列表框拖拽的方式添加图标
void CListTestDlg::OnDropFiles(HDROP hDropInfo)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 
 POINT   pt;      
 WORD   cFiles,  i;      
 TCHAR   lpszFile[MAX_PATH];
 
 DragQueryPoint(hDropInfo,   &pt);    

 cFiles   =   DragQueryFile(hDropInfo,   0xFFFFFFFF,   NULL,   0);    
 for(i  =   0;   i  <   cFiles;   pt.y   +=   20,   i++)  
 {    
  DragQueryFile(hDropInfo,   i,   lpszFile,   sizeof(lpszFile));    
  
  TCHAR drive[_MAX_DRIVE];
  TCHAR dir[_MAX_DIR];
  TCHAR fname[_MAX_FNAME];
  TCHAR ext[_MAX_EXT];

   _wsplitpath_s(lpszFile,drive,dir,fname,ext);
 
   SHFILEINFO   sfi;
   SHGetFileInfo(ext,0,&sfi,sizeof(sfi),SHGFI_ICON|SHGFI_LARGEICON|SHGFI_USEFILEATTRIBUTES);
   HICON hIcon=sfi.hIcon;
   ImageListBmp.Add(hIcon);
  m_List_Image.InsertItem(m_List_Image.GetItemCount(),fname,m_List_Image.GetItemCount());
  
  
 }    
 DragFinish(hDropInfo);    


}

注意:定义CImagelist要在在头文件中定义

以上程序在Visual C++ 2005 MFC Dialog Unicode中调试通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西笑生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值