正文

利用Shell API显示出"桌面"和相应的图标2007-05-08 23:24:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/12567/25722.html

分享到:

/****************************************************************************
*
*    FUNCTION: ShowDeskImages()
*
*    PURPOSE:  Show the icon and the title of the desk.
*
****************************************************************************/
HTREEITEM CShellTree::ShowDeskImages()
{
 ITEMIDLIST *pidlDeskTop; 
 SHFILEINFO  fi={0};
    HIMAGELIST hImageList;

 if(S_OK!=SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&pidlDeskTop))  
 {  
  return  FALSE;  
 }  
   
    hImageList=(HIMAGELIST)SHGetFileInfo(( LPCTSTR)pidlDeskTop,0U,&fi,
                                     sizeof(SHFILEINFO), 
                                     SHGFI_DISPLAYNAME | SHGFI_PIDL
                                     |SHGFI_SYSICONINDEX|SHGFI_SMALLICON
                                    ); 
 IMalloc*   pMalloc;  
 if(SUCCEEDED(SHGetMalloc(&pMalloc)))  
 {  
  pMalloc->Free(pidlDeskTop);  
  pMalloc->Release();  
 } 

 if (hImageList)
  ::SendMessage(m_hWnd, TVM_SETIMAGELIST, (WPARAM) TVSIL_NORMAL,
  (LPARAM)hImageList);
   
    return InsertItem(fi.szDisplayName,fi.iIcon,fi.iIcon,NULL);
}
该函数用Shell API在树中显示出桌面和相应图标。

CTreeCtrl::InsertItem这里的参数解释如下:
第一个为显示树结点的名称,
第二个为显示结点开始的图标在CImagelist中的索引号,
第三个为在结点选择后显示的图标在CImagelist中的索引号。
第四个参数为NULL,表明在根结点显示。如不在根结点显示,则填写父结点的标识符。

阅读(3044) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册