资源管理器的学习笔记一

简介:
实现系统图标列表类CSystemImageList。
   class CSystemImageList:public CObject
   {
       private:
             static CImageList* m_gpLargeImageList;   //大图标链表
             static CImageList* m_gpSmallImageList;   //小图标链表
             static int m_gRefCount;     //计数器
       private:
             //初始化静态列表
             BOOL InitGlobalList(CImageList* &rpImageList,BOOL bSmall=TRUE);
             //关闭静态链表
             void DestroyGlobalList(CImageList* & rpImageList);
       public:
             //得到图标链表
             CImageList* GetImageList(BOOL bSmall=TRUE) const;
             //得到指定文件的图标
             HICON GetIcon(const CString& sName,BOOL bOpen=FALSE,BOOL bSmall=TRUE); 
   } 
   
   //初始化链表
   BOOL CSystemImageList::InitGlobalList(CImageList* &rpImageList,BOOL bSmall)
   {
       BOOL bRet=FALSE;
       if(!rpImageList)    //如果链表为空
       {
           rpImageList=new CImageList;     //分配内存
           if(rpImageList)         //如果分配内存成功
           {
                SHFILEINFO sfi;
                DWORD dwFlags=SHGFI_USERFILEATTRIBUTES|SHGFI_SYSICONINDEX;
                if(bSmall)    //指定图标大小
                     dwFlags|=SHGFI_SMALLICON;
                size_t size=sizeof(SHFILEINOF);
                //获取操作系统图标链表
                DWORD dw=SHGetFileInfo(NULL,FILE_ATTRIBUTE_NORMAL,&sfi,size,dwFlags);
                rpImageList->Attach((HIMAGELIST)dw);    //保存链表
                rpImageList->SetBkColor(CLR_NONE);      //设置背景模式
                
                bRet=TRUE;
           }
       }
   }
   
   //关闭图标链表
   void CSystemImageList::DestroyGlobalList(CImageList* &rpImageList) 
   {
       if(rpImageList)    //判断图像链表指针是否为空
       { 
            rpImageList->Detach();     //将图标链表对象与图表链表对象的句柄分离
            delete rpImageList;        //关闭图表链表
            rpImageList=NULL;
       }
   }
    
   //返回链表指针
   CImageList* CSystemImageList::GetImageList(BOOL bSmall) const
   {
       CImageList* pList=NULL;
       if(bSmall)
           pList=m_gpSmallImageList;
       else
           pList=m_gpLargeImageList;
       return(pList);
   }
 
   //返回指定文件的图标句柄
   HICON CSystemImageList::GetIcon(const CString& sName,BOOL bOpen,BOOL bSmall)
   {
       SHFILEINOF sfi;
       //指定属性
       DWORD dwFlags=SHGFI_DISPLAYNAME|SHGFI_ICON|SHGFI_LARGEICON;
       size_t size=sizeof(SHFILEINFO);    //得到缓冲区大小
       if(bSmall)
          dwFlags|=SHGFI_SMALLICON;    //指定小图标属性
       if(bOpen)
          dwFlages|=SHGFI_OPENICON;    //指定打开图标属性
       //获取文件属性
       SHGetFileInfo(sName,NULL,&sfi,size,SHGFI_DISPLAYNAME|SHGFI_ICON|SHGFI_LARGEICON);
       return(sfi.hIcon);     //返回图标句柄
   }
 

本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/164014,如需转载请自行联系原作者
相关文章
|
Kubernetes 容器
K8s学习笔记(2)——K8s命令和资源管理方式
K8s学习笔记(2)——K8s命令和资源管理方式
230 0
|
存储 资源调度 Kubernetes
Kubernetes 调度和资源管理 | 学习笔记
快速学习 Kubernetes 调度和资源管理
Kubernetes 调度和资源管理 | 学习笔记
|
存储 缓存 负载均衡
2.4.2资源管控层 资源管理技术|学习笔记(二)
快速学习2.4.2资源管控层 资源管理技术
2.4.2资源管控层 资源管理技术|学习笔记(二)
|
弹性计算 负载均衡 应用服务中间件
EDAS 资源管理介绍|学习笔记
快速学习 EDAS 资源管理介绍
222 0
|
缓存 Linux Shell
LINUX 系统资源管理| 学习笔记
快速学习 LINUX系统资源管理
130 0
LINUX 系统资源管理| 学习笔记
|
项目管理
【PMP】Head First PMP 学习笔记 第九章 人力资源管理
第九章 人力资源管理 每一个成功的项目背后都有一个伟大的团队。 4个过程 制订人力资源计划(计划过程组) 招募项目团队(执行过程组) 发展项目团队(执行过程组) 管理项目团队(执行过程组) 在制订人力资源计划过程中,要准确地计划需要哪些资源,他们的角色和职责是什么,以及你将如何培训团队并保证他们一直能得到鼓励。
1260 0
|
3月前
|
机器学习/深度学习 数据采集 算法框架/工具
使用Python实现深度学习模型:智能人力资源管理与招聘
【8月更文挑战第12天】 使用Python实现深度学习模型:智能人力资源管理与招聘
105 2
|
4月前
|
数据采集 监控 数据安全/隐私保护
ERP系统中的人力资源管理与员工绩效评估解析
【7月更文挑战第25天】 ERP系统中的人力资源管理与员工绩效评估解析
305 1
|
4月前
|
机器学习/深度学习 Oracle 安全
人力资源管理革新:6款系统一站式解决HR事务
**Zoho People、BambooHR、Workday、ADP Workforce Now和Oracle HCM Cloud是知名的人力资源管理系统。Zoho People提供模块化设计、移动应用和自动化工作流;BambooHR以用户友好界面和员工档案管理见长;Workday侧重全球化云解决方案和智能决策工具;ADP Workforce Now集成HR与薪资管理,强调合规性;Oracle HCM Cloud则以高度定制和分析工具闻名。这些系统各有特点,适用于不同规模和需求的企业。**
84 11

热门文章

最新文章