MQWidgetBaseクラス

(new in Rev4.00)

MQWidgetBase クラスはボタン・チェックボックス・ウィンドウなどのすべての種類のウィジェットの基底となるクラスです。MQWidgetBaseを継承するクラスは以下のものがあります。

クラス名 概要
MQWindowBase ウィンドウ・ダイアログの継承元クラス
 |- MQWindow ウィンドウ
 |- MQDialog ダイアログ
MQFrameBase 各フレームの継承元クラス
 |- MQFrame フレーム
 |- MQGroupBox グループボックス
MQScrollBox スクロール領域
MQTab 複数ページの切り替え
MQButton ボタン
MQCheckBox チェックボックス
MQRadioButton ラジオボタン
MQComboBox コンボボックス
MQListBox リストボックス
MQLabel 文字列の表示
MQEdit テキスト入力
MQMemo 複数行のテキスト入力
MQSpinBox 整数の数値入力
MQDoubleSpinBox 実数の数値入力
MQSlider スライダーの数値入力
MQScrollBar スクロールバー
MQColorPanel 色入力

MQWidget.cpp および MQWidget.h をプロジェクトに追加することでクラスライブラリとして利用します。

クラス
MQWidgetBase コンストラクタ
~MQWidgetBase デストラクタ
メンバ関数
GetID ウィジェットIDの取得
AddChild 子ウィジェットの追加
RemoveChild 子ウィジェットの切り離し
GetEnabled 有効状態の取得
SetEnabled 有効状態の設定
GetVisible 表示状態の取得
SetVisible 表示状態の設定
GetHorzLayout 横方向のレイアウト状態取得
SetHorzLayout 横方向のレイアウト状態設定
GetVertLayout 縦方向のレイアウト状態取得
SetVertLayout 縦方向のレイアウト状態設定
GetWidth 横幅の取得
SetWidth 横幅の設定
GetHeight 縦幅の取得
SetHeight 縦幅の設定
GetFillRateX 横方向のフィル比率の取得
SetFillRateX 横方向のフィル比率の設定
GetFillRateY 縦方向のフィル比率の取得
SetFillRateY 縦方向のフィル比率の設定
GetFillBeforeRate 前方の余白フィル比率の取得
SetFillBeforeRate 前方の余白フィル比率の設定
GetFillAfterRate 後方の余白フィル比率の取得
SetFillAfterRate 後方の余白フィル比率の設定
GetInSpace 子ウィジェット間の隙間の取得
SetInSpace 子ウィジェット間の隙間の設定
GetOutSpace 子ウィジェット外側の隙間の取得
SetOutSpace 子ウィジェット外側の隙間の設定
GetHintSizeRateX 横幅のヒントサイズ取得
SetHintSizeRateX 横幅のヒントサイズ設定
GetHintSizeRateY 縦幅のヒントサイズ取得
SetHintSizeRateY 縦幅のヒントサイズ設定
GetJustSize 子ウィジェット全体がちょうど収まるサイズの取得
スタティック関数
FindWidgetByID IDからのウィジェットの検索
GetSystemWidgetID システムウィジェットのID取得
GetDefaultFrameColor 標準フレーム色の取得
イベント
AddLeftDownEvent 左ボタンが押された時のイベントを追加
AddLeftUpEvent 左ボタンが離された時のイベントを追加
AddLeftDoubleClickEvent 左ボタンがダブルクリックされた時のイベントを追加
AddMiddleDownEvent 中ボタンが押された時のイベントを追加
AddMiddleUpEvent 中ボタンが離された時のイベントを追加
AddMiddleDoubleClickEvent 中ボタンがダブルクリックされた時のイベントを追加
AddRightDownEvent 右ボタンが押された時のイベントを追加
AddRightUpEvent 右ボタンが離された時のイベントを追加
AddRightDoubleClickEvent 右ボタンがダブルクリックされた時のイベントを追加
AddMouseMoveEvent マウスが移動した時のイベントを追加
AddMouseWheelEvent マウスホイールが回転した時のイベントを追加
AddKeyDownEvent キーが押された時のイベントを追加
AddKeyUpEvent キーが離された時のイベントを追加

MQWidgetBase::MQWidgetBase();

MQWidgetBase::MQWidgetBase(int id);

id
プラグイン外で生成されたウィジェットのID

コンストラクタです。


virtual MQWidgetBase::~MQWidgetBase();

デストラクタです。仮想関数として定義されます。


int MQWidgetBase::GetID();

戻り値
ウィジェットのID

ウィジェットのIDを取得します。


int MQWidgetBase::AddChild(MQWidgetBase *child);

child
子ウィジェット
戻り値
子ウィジェットのインデックス

指定したウィジェットを子ウィジェットとして追加します。

追加された子ウィジェットは親ウィジェットが削除されるときに同時に削除されます。

childにはウィンドウ・ダイアログは指定できません。子ウィンドウ・ダイアログを追加するにはMQWindowBase::AddChildWindow()を参照してください。


void MQWidgetBase::RemoveChild(MQWidgetBase *child);

child
子ウィジェット

指定した子ウィジェットを切り離します。

切り離されたウィジェットは削除されませんので、後で明示的に削除する必要があります。


bool MQWidgetBase::GetEnabled();

戻り値
有効状態

ウィジェットが有効、または無効状態にあるかを取得します。

実際にウィジェットにメッセージが通知されるかどうかは親ウィジェットの有効状態も調べる必要があります。


void MQWidgetBase::SetEnabled(bool value);

value
有効状態

ウィジェットを有効、または無効状態として指定します。

無効化されたウィジェットはマウスやキーボードなどのメッセージが通知されません。また、子ウィジェットも同時に無効化されます。


bool MQWidgetBase::GetVisible();

戻り値
可視状態

ウィジェットが表示、または非表示状態にあるかを取得します。


void MQWidgetBase::SetVisible(bool value);

value
可視状態

ウィジェットを表示、または非表示状態として指定します。


LAYOUT_TYPE MQWidgetBase::GetHorzLayout();

戻り値
レイアウト状態
[LAYOUT_AUTO] 自動設定
[LAYOUT_FIXED] ピクセル単位で幅を指定
[LAYOUT_HINTSIZE] ヒントサイズ単位で幅を指定
[LAYOUT_FILL] 幅全体を埋める
[LAYOUT_FREE] 位置・サイズを手動指定

横方向のサイズをどのように決定するかを取得します。


void MQWidgetBase::SetHorzLayout(LAYOUT_TYPE value);

value
レイアウト状態
[LAYOUT_AUTO] 自動設定
[LAYOUT_FIXED] ピクセル単位で幅を指定
[LAYOUT_HINTSIZE] ヒントサイズ単位で幅を指定
[LAYOUT_FILL] 幅全体を埋める
[LAYOUT_FREE] 位置・サイズを手動指定

横方向のサイズをどのように決定するかを指定します。


LAYOUT_TYPE MQWidgetBase::GetVertLayout();

戻り値
レイアウト状態
[LAYOUT_AUTO] 自動設定
[LAYOUT_FIXED] ピクセル単位で幅を指定
[LAYOUT_HINTSIZE] ヒントサイズ単位で幅を指定
[LAYOUT_FILL] 幅全体を埋める
[LAYOUT_FREE] 位置・サイズを手動指定

縦方向のサイズをどのように決定するかを取得します。


void MQWidgetBase::SetVertLayout(LAYOUT_TYPE value);

value
レイアウト状態
[LAYOUT_AUTO] 自動設定
[LAYOUT_FIXED] ピクセル単位で幅を指定
[LAYOUT_HINTSIZE] ヒントサイズ単位で幅を指定
[LAYOUT_FILL] 幅全体を埋める
[LAYOUT_FREE] 位置・サイズを手動指定

縦方向のサイズをどのように決定するかを指定します。


int MQWidgetBase::GetWidth();

戻り値
横幅のピクセル数

横幅をピクセル単位で取得します。


void MQWidgetBase::SetWidth(int value);

value
横幅のピクセル数

横幅をピクセル単位で指定します。

固定されたピクセル数が必要にならない限りは、この関数の使用は推奨されません。可能な限り SetHintSizeRateX() を使用してください。


int MQWidgetBase::GetHeight();

戻り値
縦幅のピクセル数

縦幅をピクセル単位で取得します。


void MQWidgetBase::SetHeight(int value);

value
縦幅のピクセル数

縦幅をピクセル単位で指定します。

固定されたピクセル数が必要にならない限りは、この関数の使用は推奨されません。可能な限り SetHintSizeRateY() を使用してください。


double MQWidgetBase::GetFillRateX();

戻り値
横方向のフィル比率

同じ親ウィジェット内に SetHorzLayout() で LAYOUT_FILL が指定されているウィジェットが複数あるときに、余白を埋めるための比率を取得します。

各ウィジェットのフィル比率の合計に対する割合によって横幅が決定されます。

デフォルト値は1です。


void MQWidgetBase::SetFillRateX(double value);

value
縦方向のフィル比率

同じ親ウィジェット内に SetHorzLayout() で LAYOUT_FILL が指定されているウィジェットが複数あるときに、余白を埋めるための比率を指定します。

各ウィジェットのフィル比率の合計に対する割合によって横幅が決定されます。

デフォルト値は1です。


double MQWidgetBase::GetFillRateY();

戻り値
縦方向のフィル比率

同じ親ウィジェット内に SetVertLayout() で LAYOUT_FILL が指定されているウィジェットが複数あるときに、余白を埋めるための比率を取得します。

各ウィジェットのフィル比率の合計に対する割合によって縦幅が決定されます。

デフォルト値は1です。


void MQWidgetBase::SetFillRateY(double value);

value
縦方向のフィル比率

同じ親ウィジェット内に SetVertLayout() で LAYOUT_FILL が指定されているウィジェットが複数あるときに、余白を埋めるための比率を指定します。

各ウィジェットのフィル比率の合計に対する割合によって縦幅が決定されます。

デフォルト値は1です。


double MQWidgetBase::GetFillBeforeRate();

戻り値
前方方向のフィル比率

このウィジェットの前方に余白を空けるための比率を取得します。

各ウィジェットでのフィル比率の合計に対する割合によって前方の余白が決定されます。


void MQWidgetBase::SetFillBeforeRate(double value);

value
前方方向のフィル比率

このウィジェットの前方に余白を空けるための比率を指定します。

各ウィジェットでのフィル比率の合計に対する割合によって前方の余白が決定されます。


double MQWidgetBase::GetFillAfterRate();

戻り値
後方方向のフィル比率

このウィジェットの後方に余白を空けるための比率を取得します。

各ウィジェットでのフィル比率の合計に対する割合によって後方の余白が決定されます。


void MQWidgetBase::SetFillAfterRate(double value);

value
後方方向のフィル比率

このウィジェットの後方に余白を空けるための比率を指定します。

各ウィジェットでのフィル比率の合計に対する割合によって後方の余白が決定されます。


double MQWidgetBase::GetInSpace();

戻り値
子ウィジェット間の隙間(ベースサイズに対する比率)

子ウィジェットの間に空ける隙間をベースサイズに対する比率で取得します。


void MQWidgetBase::SetInSpace(double value);

value
子ウィジェット間の隙間(ベースサイズに対する比率)

子ウィジェットの間に空ける隙間をベースサイズに対する比率で指定します。


double MQWidgetBase::GetOutSpace();

戻り値
子ウィジェットの外側の隙間(ベースサイズに対する比率)

子ウィジェットの外側に空ける隙間をベースサイズに対する比率で取得します。


void MQWidgetBase::SetOutSpace(double value);

value
子ウィジェットの外側の隙間(ベースサイズに対する比率)

子ウィジェットの外側に空ける隙間をベースサイズに対する比率で指定します。


double MQWidgetBase::GetHintSizeRateX();

戻り値
ウィジェットの横方向のヒントサイズ

ウィジェットの標準的なサイズをベースサイズに対する比率で取得します。


void MQWidgetBase::SetHintSizeRateX(double value);

value
ウィジェットの横方向のヒントサイズ

ウィジェットの標準的なサイズをベースサイズに対する比率で設定します。

SetHorzLayout() で LAYOUT_HINTSIZE が指定されているときに、このヒントサイズに応じてウィジェットの横幅が決定されます。あくまでヒントなので、実際に設定されるサイズはウィジェットの種類や設定された各値によって異なります。


double MQWidgetBase::GetHintSizeRateY();

戻り値
ウィジェットの縦方向のヒントサイズ

ウィジェットの標準的なサイズをベースサイズに対する比率で取得します。


void MQWidgetBase::SetHintSizeRateY(double value);

value
ウィジェットの縦方向のヒントサイズ

ウィジェットの標準的なサイズをベースサイズに対する比率で設定します。

SetVertLayout() で LAYOUT_HINTSIZE が指定されているときに、このヒントサイズに応じてウィジェットの縦幅が決定されます。あくまでヒントなので、実際に設定されるサイズはウィジェットの種類や設定された各値によって異なります。


POINT MQWidgetBase::GetJustSize(int max_width = -1, int max_height = -1);

max_width
ウィジェットの最大横幅
max_height
ウィジェットの最大縦幅
戻り値
縦横のサイズ

子ウィジェットをちょうど収めるためのサイズを取得します。

max_width, max_height に-1を指定すると、上限がない状態でサイズが計算されます。


static MQWidgetBase *MQWidgetBase::FindWidgetByID(int id);

id
ウィジェットのID
戻り値
ウィジェット

指定されたIDを持つウィジェットを取得します。

対応するウィジェットがなければNULLが返されます。


static int MQWidgetBase::GetSystemWidgetID(MQSystemWidget::WidgetType type);

type
ウィジェットの種類
[MQSystemWidget::MainWindow] メインウィンドウ

本体側で作成されたウィジェットを取得します。

取得されたシステムウィジェットは基本的には子ウィンドウや子ウィジェットを作成するときに親ウィジェットとして指定します。システムウィジェットへむやみにアクセスすると思わぬ誤作動を引き起こす可能性があります。


static void MQWidgetBase::GetDefaultFrameColor(int& r, int& g, int& b, int& a);

r
赤 (0~255)
g
緑 (0~255)
b
青 (0~255)
a
不透明度 (0~255)

標準のフレーム色を取得します。


template<typename T> void MQWidgetBase::AddLeftDownEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

左ボタンが押されたときに発生されるイベントを追加します。

通知先のメンバ関数 f は以下の引数・戻り値を持ったものである必要があります。

 

BOOL T::f(MQWidgetBase* sender, MQDocument doc, MQWidgetMouseParam& param);

sender
イベント通知元のウィジェット
doc
ドキュメント
param
イベント発生時のパラメータ(下記参照)

struct MQWidgetMouseParam {
	POINT ClientPos;
	POINT ScreenPos;
	POINT DownPos;
	POINT LastPos;
	int Wheel;
	bool LButton;
	bool MButton;
	bool RButton;
	bool Shift;
	bool Ctrl;
	bool Alt;
};
ClientPos
クライアント座標でのマウスカーソル位置
ScreenPos
スクリーン座標でのマウスカーソル位置
DownPos
クライアント座標でのマウスボタンが押された位置
LastPos
クライアント座標での前回のマウスイベント発生時のマウスカーソル位置
Wheel
マウスホイールの回転量(WHEEL_DELTAベース)
LButton
左ボタンが押されているか
MButton
中ボタンが押されているか
RButton
右ボタンが押されているか
Shift
Shiftキーが押されているか
Ctrl
Ctrlキーが押されているか
Alt
Altキーが押されているか

template<typename T> void MQWidgetBase::AddLeftUpEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

左ボタンが離されたときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddLeftDoubleClickEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

左ボタンがダブルクリックされたときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddMiddleDownEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

中ボタンが押されたときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddMiddleUpEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

中ボタンが離されたときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddMiddleDoubleClickEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

中ボタンがダブルクリックされたときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddRightDownEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

右ボタンが押されたときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddRightUpEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

右ボタンが離されたときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddRightDoubleClickEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

右ボタンがダブルクリックされたときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddMouseMoveEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

ウィジェット上をマウスが移動したときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddMouseWheelEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetMouseParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

ウィジェット上にマウスカーソルがある状態でマウスホイールを回転したときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddLeftDownEvent内の記述を参照してください。


template<typename T> void MQWidgetBase::AddKeyDownEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetKeyParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

ウィジェット(またはウィンドウ)にフォーカスがある状態でキーが押されたときに発生されるイベントを追加します。

BOOL T::f(MQWidgetBase* sender, MQDocument doc, MQWidgetKeyParam& param);

sender
イベント通知元のウィジェット
doc
ドキュメント
param
イベント発生時のパラメータ(下記参照)

struct MQWidgetKeyParam {
	int Key;
	bool AutoRepeat;
	bool LButton;
	bool MButton;
	bool RButton;
	bool Shift;
	bool Ctrl;
	bool Alt;
};
Key
キーコード
AutoRepeat
自動リピートによるイベントか(KeyDown時のみ)
LButton
左ボタンが押されているか
MButton
中ボタンが押されているか
RButton
右ボタンが押されているか
Shift
Shiftキーが押されているか
Ctrl
Ctrlキーが押されているか
Alt
Altキーが押されているか

template<typename T> void MQWidgetBase::AddKeyUpEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument, MQWidgetKeyParam&), bool prior = false)

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
prior
イベントの通知順序
[true] 最初に通知されるよう指定
[false] 最後に通知されるよう指定

ウィジェット(またはウィンドウ)にフォーカスがある状態でキーが離されたときに発生されるイベントを追加します。

イベント通知先のメンバ関数はAddKeyDownEvent内の記述を参照してください。