windows - C + +. Ikon overlader alle tomme mapper. (Shell Icon Overlay)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er ikke rigtig fortrolig med c ++, men jeg skal bruge den, fordi der er nogle problemer med .net \ java + Shell.


Så jeg har eksempel hvordan du laver ikon over filer, der indeholder nogle tekst: http://www.codeproject.com/KB/shell/overlayicon.aspx[2]


Og jeg skal markere med alle ikoner alle tomme mapper. Hvordan kan jeg gøre det?


Vil sætte pris på enhver hjælp.

Bedste reference


Du skal oprette et COM-objekt, der implementerer IShellIconOverlayIdentifier som den pågældende kodeprojektartikel.


Din IsMemberOf metode ville se sådan ud:


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;
}


(En tom mappe indeholder to specielle poster, '.' Og '..')