微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C ++Icon覆盖所有空文件夹 外壳图标叠加层

如何解决C ++Icon覆盖所有空文件夹 外壳图标叠加层

| 我不是很熟悉c ++,但是我需要使用它,因为.net \\ java + Shell存在一些问题。 因此,我有一个示例示例如何在包含一些文本的文件添加图标:http://www.codeproject.com/KB/shell/overlayicon.aspx 我需要用我的图标标记所有空文件夹。我怎样才能做到这一点? 将不胜感激。     

解决方法

您需要创建一个实现IShellIconOverlayIdentifier的COM对象,就像该代码项目文章一样。 您的IsMemberOf方法将如下所示:
STDMETHODIMP YourClassThatImplementsIShellIconOverlayIdentifier::IsMemberOf(PCWSTR pwszPath,DWORD Attr)
{
    if (!(Attr&FILE_ATTRIBUTE_DIRECTORY)) return S_FALSE; // Not a folder

    UINT count = 0;
    WIN32_FIND_DATAW wfd;
    LPWSTR bufSpec = (LPWSTR) LocalAlloc(LPTR,(lstrlenW(pwszPath)+2+1)*sizeof(WCHAR));
    if (bufSpec)
    {
        lstrcpyW(bufSpec,pwszPath);
        PathAddBackslashW(bufSpec);
        lstrcatW(bufSpec,L\"*\");
        HANDLE hFind = FindFirstFileW(bufSpec,&wfd);
        if (INVALID_HANDLE_VALUE!=hFind) do
        {
            ++count;
        } while( count<= 2 && FindNextFileW(hFind,&wfd) );
        FindClose(hFind);
        LocalFree(bufSpec);
    }

    return count==2 ? S_OK : S_FALSE;
}
(一个空文件夹包含两个特殊条目,“ \“。\”和\” .. \“)     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。