/****************************************************************************
*
* 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,表明在根结点显示。如不在根结点显示,则填写父结点的标识符。
评论