SOL9 2.0 Class: SystemColor

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

Source code

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


// SOL++2000
#pragma once

#include <sol\HashTable.h>
#include <sol\ColorItem.h>

namespace SOL {

class SystemColor :public HashTable {

private:
    void initialize()
    {
    static ColorItem colors[] = {
        {_T("COLOR_ACTIVEBORDER"),         COLOR_ACTIVEBORDER},
        {_T("COLOR_ACTIVECAPTION"),        COLOR_ACTIVECAPTION},
        {_T("COLOR_APPWORKSPACE"),        COLOR_APPWORKSPACE},

        {_T("COLOR_BACKGROUND"),        COLOR_BACKGROUND},
        {_T("COLOR_BTNFACE"),            COLOR_BTNFACE},
        {_T("COLOR_BTNSHADOW"),            COLOR_BTNSHADOW},
        {_T("COLOR_BTNTEXT"),            COLOR_BTNTEXT},
        {_T("COLOR_CAPTIONTEXT"),        COLOR_CAPTIONTEXT},
        {_T("COLOR_GRAYTEXT"),            COLOR_GRAYTEXT},

        {_T("COLOR_HIGHLIGHT"),            COLOR_HIGHLIGHT},
        {_T("COLOR_HIGHLIGHTTEXT"),        COLOR_HIGHLIGHTTEXT},
        {_T("COLOR_INACTIVEBORDER"),    COLOR_INACTIVEBORDER},
        {_T("COLOR_INACTIVECAPTION"),    COLOR_INACTIVECAPTION},
        {_T("COLOR_MENU"),                COLOR_MENU},
        {_T("COLOR_MENUTEXT"),            COLOR_MENUTEXT},
        {_T("COLOR_SCROLLBAR"),            COLOR_SCROLLBAR},
        {_T("COLOR_WINDOW"),            COLOR_WINDOW},
        {_T("COLOR_WINDOWFRAME"),        COLOR_WINDOWFRAME},
        {_T("COLOR_WINDOWTEXT"),        COLOR_WINDOWTEXT},
        };

        for(int i = 0; i<XtNumber(colors); i++) {
            add(colors[i].name, (Object*)&colors[i]);
        }
    }

public:
    SystemColor()
    :HashTable(113)
    {
        initialize();
    }

public:
    BOOL get(const TCHAR* name, long* value)
    {
        ColorItem* colorItem  = (ColorItem*) lookup(name);
        if(colorItem) {
            int indx = (int)colorItem ->value;
            *value   = ::GetSysColor(indx);
            return TRUE;
        }
        else return FALSE;
    }


};

}



Last modified: 1 Feb 2012

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