MQWidgetBaseクラス

(new in Rev4.00)

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

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

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 縦幅のヒントサイズ設定
GetCellColumn 行列内のセルの連結数取得
SetCellColumn 行列内のセルの連結数設定
GetHintText ヒント表示する文字列の取得
SetHintText ヒント表示する文字列の設定
GetJustSize 子ウィジェット全体がちょうど収まるサイズの取得
ClientToScreen クライアントからスクリーンへの座標変換
ScreenToClient スクリーンからクライアントへの座標変換
ClientToClient クライアント間の座標変換
Repaint 再描画
RefreshPaint 描画予約の反映
CaptureMouse マウス操作のキャプチャ
スタティック関数
FindWidgetByID IDからのウィジェットの検索
GetSystemWidgetID システムウィジェットのID取得
GetDefaultFrameColor 標準フレーム色の取得
GetDefaultTextColor 標準テキスト色の取得
GetDefaultTitleBackColor 標準タイトル背景色の取得
GetDefaultTitleTextColor 標準タイトルテキスト色の取得
GetDefaultListBackColor 標準リスト背景色の取得
GetDefaultListTextColor 標準リストテキスト色の取得
GetDefaultListActiveColor 標準リストアクティブ色の取得
GetDefaultListActiveTextColor 標準リストアクティブテキスト色の取得
GetDefaultEditBackColor 標準エディット背景色の取得
GetDefaultEditTextColor 標準エディットテキスト色の取得
GetDefaultEditSelectionColor 標準エディット選択色の取得
GetDefaultEditSelectionTextColor 標準エディット選択テキスト色の取得
RegisterSubCommandButton サブコマンド用ボタンの登録
EnterEventLoop イベントループに入る
ExitEventLoop イベントループから抜ける
イベント
AddShowEvent ウィジェットが表示状態になった時のイベントを追加
AddHideEvent ウィジェットが非表示状態になった時のイベントを追加
AddMoveEvent ウィジェットが移動された時のイベントを追加
AddResizeEvent ウィジェットのサイズが変更された時のイベントを追加
AddLeftDownEvent 左ボタンが押された時のイベントを追加
AddLeftUpEvent 左ボタンが離された時のイベントを追加
AddLeftDoubleClickEvent 左ボタンがダブルクリックされた時のイベントを追加
AddMiddleDownEvent 中ボタンが押された時のイベントを追加
AddMiddleUpEvent 中ボタンが離された時のイベントを追加
AddMiddleDoubleClickEvent 中ボタンがダブルクリックされた時のイベントを追加
AddRightDownEvent 右ボタンが押された時のイベントを追加
AddRightUpEvent 右ボタンが離された時のイベントを追加
AddRightDoubleClickEvent 右ボタンがダブルクリックされた時のイベントを追加
AddMouseMoveEvent マウスが移動した時のイベントを追加
AddMouseWheelEvent マウスホイールが回転した時のイベントを追加
AddKeyDownEvent キーが押された時のイベントを追加
AddKeyUpEvent キーが離された時のイベントを追加
AddTimerEvent 指定時間が経過した時のイベントを追加

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


int MQWidgetBase::GetCellColumn();

戻り値
行列内のセルの連結数

(new in Rev4.23)

MQFrameBase::SetMatrixColumn()で行列配置が指定されているフレーム内でのセルの連結数を取得します。


void MQWidgetBase::SetCellColumn(int value);

value
行列内のセルの連結数

(new in Rev4.23)

MQFrameBase::SetMatrixColumn()で行列配置が指定されているフレーム内でのセルの連結数を設定します。


std::wstring MQWidgetBase::GetHintText();

戻り値
ヒント文字列

(new in Rev4.30)

マウスがウィジェット上に置かれたときに表示されるヒント文字列を取得します。


void MQWidgetBase::SetHintText(const std::wstring& value);

value
ヒント文字列

(new in Rev4.30)

マウスがウィジェット上に置かれたときに表示されるヒント文字列を設定します。


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

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

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

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


bool MQWidgetBase::ClientToScreen(int client_x, int client_y, int *screen_x, int *screen_y);

client_x
クライアント上のX座標
client_y
クライアント上のY座標
screen_x
スクリーン上のX座標 (out)
screen_y
スクリーン上のY座標 (out)
戻り値
変換の成否

クライアント座標をスクリーン座標に変換します。


bool MQWidgetBase::ScreenToClient(int screen_x, int screen_y, int *client_x, int *client_y);

screen_x
スクリーン上のX座標
screen_y
スクリーン上のY座標
client_x
クライアント上のX座標 (out)
client_y
クライアント上のY座標 (out)
戻り値
変換の成否

スクリーン座標をクライアント座標に変換します。


bool MQWidgetBase::ClientToClient(int client_x, int client_y, MQWidgetBase *target, int *target_x, int *target_y);

client_x
クライアント上のX座標
client_y
クライアント上のY座標
target
変換先ウェジェット
target_x
変換先ウェジェットのクライアント上のX座標 (out)
target_y
変換先ウェジェットのクライアント上のY座標 (out)
戻り値
変換の成否

クライアント座標を変換先ウィジェットのクライアント座標に変換します。


void MQWidgetBase::Repaint(bool immediate = false);

immediate
直ちに描画を行うか

ウィジェットを再描画します。

immediate に true を指定すると、関数を呼び出した時点で即座に描画が行われます。false を指定すると描画が予約され、イベントループに戻った際に描画が行われます。


void MQWidgetBase::RefreshPaint();

(new in Rev4.30)

Repaint(false)やウィンドウへの操作等により再描画の予約がされている領域に対して即座に描画を行います。


void MQWidgetBase::CaptureMouse(bool value);

value
キャプチャするかどうか

(new in Rev4.30)

マウス操作をキャプチャして、マウスがウィジェット外に移動してもマウスの移動・クリックなどのイベントをこのウィジェットに通知します。


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);

static MQCanvasColor MQWidgetBase::GetDefaultFrameColor();

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

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


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

static MQCanvasColor MQWidgetBase::GetDefaultTextColor();

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

標準のテキスト色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultTitleBackColor();

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

(new in Rev4.11)

標準のタイトル背景色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultTitleTextColor();

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

(new in Rev4.11)

標準のタイトルテキスト色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultListBackColor();

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

標準のリスト背景色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultListTextColor();

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

標準のリストテキスト色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultListActiveColor();

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

標準のリストアクティブ色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultListActiveTextColor();

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

標準のリストアクティブテキスト色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultEditBackColor();

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

標準のエディット背景色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultEditTextColor();

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

標準のエディットテキスト色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultEditSelectionColor();

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

標準のエディット選択色を取得します。


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

static MQCanvasColor MQWidgetBase::GetDefaultEditSelectionTextColor();

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

標準のエディット選択テキスト色を取得します。


static void MQWidgetBase::RegisterSubCommandButton(MQStationPlugin *plugin, MQButton *button, const char *command_str);

plugin
プラグイン
button
ボタン
command_str
サブコマンドの識別文字列

(new in Rev4.30)

MQStationPlugin::EnumSubCommand()に対応するサブコマンド用のボタンを登録します。

指定したサブコマンドにショートカットキーが割り当てられている場合、ボタン上にショートカットキーが表示されるようになります。


static void MQWidgetBase::EnterEventLoop(unsigned int timeout_ms = (unsigned int)-1, bool empty_return = false);

timeout_ms
タイムアウトの最大時間(ms)
empty_return
メッセージが空なら処理を戻すか

新しいイベントループに入り、マウス・キーボード・描画などのさまざまなイベント処理を行います。

timeout_ms に 0 以上を指定した場合、指定した時間を超えるとイベントループを終えて制御を戻します。ただし、イベントループ内で時間がかかる処理を行うと、タイムアウト時間を経過してもその処理が終わるまでは制御は戻ってきません。

timeout_ms を指定しない場合、ExitEventLoop()を呼び出すまでずっとイベントループを処理し続けて、制御は戻ってきません。

empty_return に true が指定された場合、処理すべきイベントがなくなったら timeout_ms の時間内であっても制御が戻ります。


static void MQWidgetBase::ExitEventLoop();

EnterEventLoop()で入ったイベントループから抜け出すために呼び出します。

EnterEventLoop()がまだ呼び出されていない、または既にイベントループから抜け出した状態でこの関数を呼び出すと、別のイベントループを抜け出すことになり、システム全体の制御がおかしくなるのでご注意ください。


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

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

ウィジェットが表示状態になったときに発生されるイベントを追加します。

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

 

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

sender
イベント通知元のウィジェット
doc
ドキュメント
戻り値
[TRUE] ドキュメントに何らかの変更が行われた
[FALSE] ドキュメントは何も変更されなかった

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

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

ウィジェットが非表示状態になったときに発生されるイベントを追加します。

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


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

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

ウィジェットの表示位置が移動したときに発生されるイベントを追加します。

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


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

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

ウィジェットのサイズが変更されたときに発生されるイベントを追加します。

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


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
イベント発生時のパラメータ(下記参照)
戻り値
[TRUE] ドキュメントに何らかの変更が行われた
[FALSE] ドキュメントは何も変更されなかった

struct MQWidgetMouseParam {
	POINT ClientPos;
	POINT ScreenPos;
	POINT DownPos;
	POINT LastPos;
	int Wheel;
	bool LButton;
	bool MButton;
	bool RButton;
	bool Shift;
	bool Ctrl;
	bool Alt;
	float Pressure;
	bool Finished;
};
ClientPos
クライアント座標でのマウスカーソル位置
ScreenPos
スクリーン座標でのマウスカーソル位置
DownPos
クライアント座標でのマウスボタンが押された位置
LastPos
クライアント座標での前回のマウスイベント発生時のマウスカーソル位置
Wheel
マウスホイールの回転量(WHEEL_DELTAベース)
LButton
左ボタンが押されているか
MButton
中ボタンが押されているか
RButton
右ボタンが押されているか
Shift
Shiftキーが押されているか
Ctrl
Ctrlキーが押されているか
Alt
Altキーが押されているか
Pressure (new in Rev4.20)
タブレットやタッチ操作時の圧力 (0-1)
Finished (new in Rev4.30)
デフォルト動作をしない場合はtrueを指定します(出力用)

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
イベント発生時のパラメータ(下記参照)
戻り値
[TRUE] ドキュメントに何らかの変更が行われた
[FALSE] ドキュメントは何も変更されなかった

struct MQWidgetKeyParam {
	int Key;
	bool AutoRepeat;
	bool LButton;
	bool MButton;
	bool RButton;
	bool Shift;
	bool Ctrl;
	bool Alt;
	bool Finished;
};
Key
キーコード
AutoRepeat
自動リピートによるイベントか(KeyDown時のみ)
LButton
左ボタンが押されているか
MButton
中ボタンが押されているか
RButton
右ボタンが押されているか
Shift
Shiftキーが押されているか
Ctrl
Ctrlキーが押されているか
Alt
Altキーが押されているか
Finished (new in Rev4.30)
デフォルト動作をしない場合はtrueを指定します(出力用)

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

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

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

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


template<typename T> void MQWidgetBase::AddTimerEvent(T *p, BOOL (T::*f)(MQWidgetBase*, MQDocument), unsigned int timeout_ms, bool overwrite = false);

p
イベント通知先のウィジェット
f
イベント通知先のメンバ関数
timeout_ms
イベントを発生させる時間(ms)
overwrite
タイマーイベントを上書きするか

指定時間が経過したときにタイマーイベントを発生させます。

この関数を呼び出してから timeout_ms ミリ秒後にイベントが発生します。ただし、イベント発生前に同じスレッド内で時間のかかる処理が行われた場合、指定した時間より遅れてタイマーイベントが発生することがあります。

overwrite に true を指定すると、通知先のウィジェット・メンバ関数が同じタイマーイベントが既に設定されていた場合、そのイベントを上書きします。

タイマーイベントはこの関数の呼び出しに対応して1回だけ発生します。イベントを複数回発生させる場合は、overwrite を false にしてこの関数を複数回呼び出して下さい。

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