#ifndef __ULIB_SIGNALBOX_H__
#define __ULIB_SIGNALBOX_H__

#include <header/Object.h>
#include <header/Window.h>
extern "C"
{
	#include <guigui00.h>
}
using namespace Ulib;

namespace Ulib
{
	class SignalBox : public Ulib::Object
	{
	protected:
		int *signalBox0;
		int *sigPtr;
	public:
		SignalBox();
		virtual const char *getTypeName();
		virtual void Open(int size = 256);
		virtual int GetSignal(bool wait = false);
		virtual int GetParameter();
		virtual void DefineSignal(const int opt, const int mode, const int code, Window &window0, const int signal);
		virtual void DefineSignalKey(const int opt, const int code, Window &window0, const int signal);
		virtual void DefineSignalMouse(const int opt, const int code, Window &window0, const int signal);
		virtual void DefineSignalEnd();
		static const int MOUSE0_LEFT = 0x0000; // 左ボタン
		static const int MOUSE0_RIGHT = 0x0001; // 右ボタン
		static const int MOUSE0_MIDDLE = 0x0002; // 中ボタン
		static const int MOUSE0_COORDINATE_INSIDE = 0x0000; // ウィンドウ内での座標
		static const int MOUSE0_COORDINATE_OUT = 0x0001; // ウィンドウ脱出
		static const int MOUSE0_COORDINATE_INOUTSIDE = 0x0002; // ウィンドウ内外での座標
		static const int MOUSE1_COORDINATE =  0x0010; // 座標
		static const int MOUSE1_PRESS = 0x0020; // プレス
		static const int MOUSE1_RELEASE = 0x0030; // リリース
		static const int MOUSE2_SENSITIVITY_0 = 0x0000; // クリック時のみ座標値送信
		static const int MOUSE2_SENSITIVITY_1 = 0x1000; // クリックとドラッグ中に座標値を送信
		static const int MOUSE2_SENSITIVITY_2 = 0x2000; // ウィンドウ内で常に座標値を送信
		static const int MOUSE2_SENSITIVITY_3 = 0x3000; // 常に座標値を送信
	};
}
#endif
