SOL9 2.0 Class: SystemImageList

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * SystemImageList.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL++2000
// 2000.06.26
#pragma once

#include <sol\ImageList.h>

namespace SOL {

class SystemImageList :public ImageList {
private:
    UINT flag;

public:
    SystemImageList(UINT flag1 = (SHGFI_SYSICONINDEX|SHGFI_SMALLICON))
    :ImageList(),
    flag(flag1)
    {    
        TCHAR dir[MAX_PATH];
        ::GetWindowsDirectory(dir, sizeof(dir));
    
        SHFILEINFO sfi;
        memset(&sfi, 0, sizeof(sfi));

        HIMAGELIST himl = (HIMAGELIST)::SHGetFileInfo (dir, 0, &sfi, 
                            sizeof(sfi), flag); 
        setImageList(himl);    

    }

public:
    ~SystemImageList() 
    { 
        detachImageList(); 
    }

public:
    int    getIconIndex (const TCHAR* fileName, DWORD attr, UINT nflag=0) 
    {
        SHFILEINFO     sfi;
        memset(&sfi, 0, sizeof(sfi));    
        ::SHGetFileInfo(fileName, attr, &sfi, sizeof(sfi), 
                (flag | SHGFI_USEFILEATTRIBUTES|nflag));
        return sfi.iIcon;
    }

public:
    int    getDirectoryIndex (const TCHAR* dir) 
    {
        return getIconIndex(dir, FILE_ATTRIBUTE_DIRECTORY);
    }

public:
    int    getOpenDirectoryIndex (const TCHAR* dir) 
    {
        return getIconIndex(dir, FILE_ATTRIBUTE_DIRECTORY, SHGFI_OPENICON);
    }

public:
    int    getNormalFileIndex (const TCHAR* dir) 
    {
        return getIconIndex(dir, FILE_ATTRIBUTE_NORMAL);
    }


};

}


Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.