/*
* 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);
}
};
}
|