下你所需,载你所想!
汇集开发技术源码资料

com桌面图标操作类,支持获取与设置图标位置

:20.488KB :1 :2023-02-02 17:42:29

部分简介

.如果真 (m_hIml ≠ #NULL)
ImageList_Destroy (m_hIml)
m_hIml = #NULL
.如果真结束
.如果 (是否已创建对象 ())
is = 查看_图标尺寸 ()
m_hIml = ImageList_Create (is, is, #ILC_COLOR32, 0, 0)
IFolderView2_ItemCount (m_ppfv, #SVGIO_ALLVIEW, nCount)
重定义数组 (图标项目列表, 假, nCount)
.如果真 (nCount > #NULL)
.计次循环首 (nCount, i)
图标项目列表 [i].项目索引 = i - 1
IFolderView2_Item (m_ppfv, i - 1, pidl)
.如果真 (pidl ≠ #NULL)
IFolderView2_GetItemPosition (m_ppfv, pidl, __ptr_int32 (图标项目列表 [i].坐标x))
IFolderView2_GetItem (m_ppfv, i - 1, __ptr_bytes (#IID_IShellItem2), ppsi)
.如果真 (ppsi ≠ #NULL)
IShellItem_GetDisplayName (ppsi, #SIGDN_PARENTRELATIVEEDITING, pName)
.如果真 (pName ≠ #NULL)
图标项目列表 [i].项目名称 = RUIGetAnsiStringFromInUnicode (pName)
CoTaskMemFree (pName)
.如果真结束
IShellItem_GetDisplayName (ppsi, #SIGDN_DESKTOPABSOLUTEPARSING, pName)
.如果真 (pName ≠ #NULL)
图标项目列表 [i].项目路径 = RUIGetAnsiStringFromInUnicode (pName)
CoTaskMemFree (pName)
.如果真结束
IUnknown_Release (ppsi)
.如果真结束
hIml = SHGetFileInfoW (pidl, 0, psfi, #SIZE_SHFILEINFOW, 位或 (#SHGFI_PIDL, #SHGFI_ICON, #SHGFI_SYSICONINDEX))
.如果真 (hIml ≠ #NULL)
hIcon = ImageList_GetIcon (hIml, psfi.iIcon, 0)
.如果真 (hIcon ≠ #NULL)
图标项目列表 [i].项目图标 = ImageList_AddIcon (m_hIml, hIcon)
DestroyIcon (hIcon)
DestroyIcon (psfi.hIcon)
.如果真结束
ImageList_Destroy (hIml) ' //未找到相关资料,不确定是否需要手动...
.如果真结束
CoTaskMemFree (pidl)
.如果真结束
.计次循环尾 ()
.如果真结束
返回 (nCount)
.否则
置最后错误文本 (“取桌面图标项目.对象未创建!”)

com桌面图标操作类,支持获取与设置图标位置

热门推荐

相关文章