SOL9 2.0 Class: TransparentButton

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

Source code

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


// SOL++2000
// 2000.02.18
#pragma once

#include <sol\Primitive.h>
#include <sol\PaintDC.h>

namespace SOL {

class TransparentButton :public Primitive {

protected:
    long  leftButtonDown(Event& event)
    {
        callCallback(XmNarmCallback,
            (Key)getWindow(), this, event);
        return 0;
    }


    long  leftButtonUp(Event& event)
    {
        callCallback(XmNactivateCallback,
            (Key)getWindow(), this, event);
        return 0;
    }


public:
    TransparentButton(): Primitive() { }

public:
    TransparentButton(View* parent, 
            const TCHAR* name, Args& args)
    :Primitive(parent, name,
            args.set(XmNclassName, _T("TransparentButton"))
                .set(XmNexStyle,   (ulong)WS_EX_TRANSPARENT)
                .set(XmNbackground, (ulong)GetStockObject(NULL_BRUSH)) )
    {
        addEventHandler(WM_LBUTTONDOWN, this,
            (Handler)&TransparentButton::leftButtonDown, NULL);
        addEventHandler(WM_LBUTTONUP, this,
            (Handler)&TransparentButton::leftButtonUp, NULL);

        setValues(args);
    }

public:
    virtual Boolean create(View* parent, 
            const TCHAR* name, Args& args)
    {
        Boolean rc = Primitive::create(parent, name,
            args.set(XmNclassName, _T("TransparentButton"))
                .set(XmNexStyle,   (ulong)WS_EX_TRANSPARENT)
                .set(XmNbackground, (ulong)GetStockObject(NULL_BRUSH)) );

        addEventHandler(WM_LBUTTONDOWN, this,
            (Handler)&TransparentButton::leftButtonDown, NULL);
        addEventHandler(WM_LBUTTONUP, this,
            (Handler)&TransparentButton::leftButtonUp, NULL);

        setValues(args);

        return rc;
    }

public:
    void addCallback(const TCHAR* name, Object* object,
            Callback callback, void* data)
    {
        View::addCallback(name, (Key)getWindow(), object, 
            callback, data);
    }



};

}


Last modified: 1 Feb 2012

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