グローバル関数

システムに関する情報の操作やクラスの作成はグローバル関数として用意されています。


HWND MQ_GetWindowHandle(void);

戻り値
ウインドウハンドル

メインウインドウのウインドウハンドルを取得します。ダイアログボックスの作成などのために必要となります。

(in Rev4.00)

この関数は非推奨となりました。将来のバージョンで廃止される可能性があります。MQWidgetBase::GetSystemWidgetID()でウィジェットレベルでのアクセスを行うよう変更してください。


MQObject MQ_CreateObject(void);

戻り値
オブジェクトクラス

オブジェクトクラスを作成します。

作成したオブジェクトは、MQDocument::AddObject()で登録するか、MQObject::DeleteThis()で削除する必要があります。


MQMaterial MQ_CreateMaterial(void);

戻り値
マテリアルクラス

マテリアルクラスを作成します。

作成したマテリアルは、MQDocument::AddMaterial()で登録するか、MQMaterial::DeleteThis()で削除する必要があります。


void MQ_ShowFileDialog(const char *title, MQFileDialogInfo *info);

座標軸変換などの機能を持ったファイルダイアログを表示します。

infoは全体を0で初期化してからdwSizeに構造体のサイズsizeof(MQFileDialogInfo)を格納する必要があります。

struct MQFileDialogInfo {
	enum HAND_TYPE {
		HAND_LEFT = 0,
		HAND_RIGHT = 1,
	};

	DWORD dwSize;
	DWORD hidden_flag;
	float scale;
	const char *softname;
	int axis_x;
	int axis_y;
	int axis_z;
	BOOL invert_face;
	HAND_TYPE hand_type;
	void (*dialog_callback)(bool init, MQFileDialogCallbackParam *param, void *ptr);
	void *dialog_callback_ptr;
	BOOL background;
	void *option_args;
};
dwSize
構造体のサイズ
hidden_flag (new in Rev4.00)
GUIに表示しない要素を以下から複数選択
[HIDDEN_SCALE] 拡大・縮小率の設定
[HIDDEN_AXIS] 座標軸の向き設定
[HIDDEN_INVERT_FACE] 面の向きの反転
scale
初期値、およびMQ_ImportAxis/MQ_ExportAxisで使用する拡大率
softname
座標軸の向きに適合するソフトウェア名 (AxisInfo.txt内で定義されるもの)
axis_x
X軸の向き
[MQFILE_TYPE_LEFT]
[MQFILE_TYPE_RIGHT]
[MQFILE_TYPE_UP]
[MQFILE_TYPE_DOWN]
[MQFILE_TYPE_FRONT]
[MQFILE_TYPE_BACK] 後ろ
axis_y
Y軸の向き (設定可能な値はX軸と同様)
axis_z
Z軸の向き (設定可能な値はX軸と同様)
invert_face (new in Rev4.00)
向きの反転フラグ
hand_type (new in Rev4.00)
右手系、左手系 [HAND_RIGHT] 右手系
[HAND_LEFT] 左手系
dialog_callback (new in Rev4.00)
ダイアログ表示前、表示終了後に呼び出されるコールバック関数
dialog_callback_ptr (new in Rev4.00)
コールバック関数に渡す任意の引数
background (new in Rev4.20)
バックグラウンド処理か (MQImportPlugin::IsBackground()の戻り値を格納)
option_args (new in Rev4.20)
読み込みオプション (MQImportPlugin::GetImportOptions()の戻り値を格納)

(in Rev4.00)

MQFileDialogInfo内のaxis_x, axis_y, axis_zに設定する向きのうち左右の挙動が逆だったため修正されました。従来のバージョンのソースコードを移行する場合、以前と同じ結果を得るにはMQFILE_TYPE_LEFTとMQFILE_TYPE_RIGHTを逆に指定する必要があります。


void MQ_ImportAxis(MQFileDialogInfo *info, MQPoint *pts, int pts_count);
void MQ_ExportAxis(MQFileDialogInfo *info, MQPoint *pts, int pts_count);

ファイルダイアログの座標軸データを基に頂点位置を変換します。

入力用と出力用でそれぞれ異なります。

(in Rev4.00)

MQFileDialogInfo内のaxis_x, axis_y, axis_zに設定する向きのうち左右の挙動が逆だったため修正されました。従来のバージョンのソースコードを移行する場合、以前と同じ結果を得るにはMQFILE_TYPE_LEFTとMQFILE_TYPE_RIGHTを逆に指定する必要があります。


BOOL MQ_LoadImage(const char *filename, LPVOID *header, LPVOID *buffer, DWORD reserved);
BOOL MQ_LoadImageW(const wchar_t *filename, LPVOID *header, LPVOID *buffer, DWORD reserved);

filename
ファイル名 (ANSIまたはワイド文字列)
header
DIBのヘッダ情報のメモリを格納すべきポインタ
buffer
DIBのバッファ情報のメモリを格納すべきポインタ
reserved
将来への予約(0をセットすること)
戻り値
[TRUE] 読み込み成功
[FALSE] 読み込み失敗

(new in Rev2.10)

指定した画像ファイルをDIB(デバイスに依存しないビットマップ)として読み込みます。

読み込みに成功すると、headerとbufferにそれぞれLocalAlloc(LMEM_FIXED, uBytes)で確保されたヒープメモリが格納されます。DIBが不要になったらLocalFree()で解放する必要があります。

header内にはBITMAPINFOHEADER構造体が格納され、1ピクセルあたりのビット数が8以下の場合にはその後にRGBQUAD構造体の配列が格納されます。RGBQUAD内にはRGB成分のみが格納され、rgbReservedは常に0となります。

bufferには画像データが格納されます。1ピクセルあたりのビット数が32の場合、1ピクセルのデータ4バイトのうち最上位バイトにはα成分が格納されます。


BOOL MQ_GetSystemPath(char *buffer, int type);
BOOL MQ_GetSystemPathW(wchar_t *buffer, int type);

buffer
パス名を格納するバッファ (ANSIまたはワイド文字列)
type
[MQFOLDER_ROOT] Metaseq.exeが存在しているフォルダ (例:"C:\Program Files\Metaseq")
[MQFOLDER_METASEQ_EXE] Metaseq.exeのパス (例:"C:\Program Files\Metaseq\Metaseq.exe")
[MQFOLDER_METASEQ_INI] Metaseq.iniのパス (例:"C:\Program Files\Metaseq\Metaseq.ini")廃止
[MQFOLDER_DATA] Dataフォルダ (例:"C:\Program Files\Metaseq\Data")
[MQFOLDER_PLUGINS] Pluginsフォルダ (例:"C:\Program Files\Metaseq\Plugins")
戻り値
[TRUE] 取得成功
[FALSE] 取得失敗

(new in Rev2.10)

指定したパスを取得してbufferに格納します。bufferはMAX_PATHのサイズを持っている必要があります。

 

(in Rev4.00)

MQFOLDER_METASEQ_INIは廃止されました。プラグインからの設定ファイルへのアクセスは MQBasePlugin::OpenSetting() で得られるXML要素に対して行う必要があります。

 

注意: Ver2.1.5より前のバージョンでは、バグのために type として MQFOLDER_DATA または MQFOLDER_PLUGINS を指定するとおかしなフォルダ名が返されます。


void MQ_RefreshView(void *reserved);

reserved
予約

(new in Rev2.30)

ビューを再描画します。

reservedにはNULLを指定してください。


void MQ_StationCallback(MQStationCallbackProc proc, void *option);

proc
コールバック関数
option
コールバック関数に渡す引数

(new in Rev2.40)

常駐型プラグインから何らかの処理を行う際に呼び出し、コールバック関数内でドキュメントに対する処理を行います。

コールバック関数は以下の形式で定義されます。

typedef BOOL (__stdcall *MQStationCallbackProc)(MQDocument doc, void *option);

doc
ドキュメント
option
MQ_StationCallback()から渡された引数
戻り値
[TRUE] 何らかの変更を行った
[FALSE] 何も変更しなかった

BOOL MQ_SendMessage(int message_type, MQSendMessageInfo *info);

message_type
メッセージ型
[MQMESSAGE_ACTIVATE] アクティブ状態の変更
[MQMESSAGE_NEW_DRAW_OBJECT] 描画オブジェクトの作成
[MQMESSAGE_NEW_DRAW_MATERIAL] 描画オブジェクト用のマテリアル作成
[MQMESSAGE_GET_UNDO_STATE] アンドゥ状態の取得
info
情報
戻り値
[TRUE] 正常終了
[FALSE] 異常終了

(new in Rev2.40)

常駐型プラグインが特定の処理を行った、または処理を要求する際に、本体側にメッセージを通知します。


BOOL MQWidget_Value(int widget_id, int type_id, void *values);

widget_id
メッセージの通知先ウィジェットのID
type_id
メッセージの種類ID
values
各オプション
戻り値
[TRUE] 変更点あり
[FALSE] 変更点なし

(new in Rev4.00)

ウィジェットの各操作やイベントに対する処理を行います。

直接この関数を呼び出す必要はありません。MQWidgetBaseクラスおよびその各継承クラス内から呼び出されます。