Metasequoia Ver2.0以降ではプラグインによる独自の機能拡張を提供します。
プラグインは、その実体はDLL(ダイナミックリンクライブラリ)であり、目的に応じて定められた関数を組み込む必要があります。
プラグイン用のプロジェクトには必ず MQInit.cpp を加える必要があります。MQInit.cpp では、「MQCheckVersion」と「MQInit」の2つの関数が定義されています。
メタセコイア本体からプラグインDLLを読み込んだ直後、MQCheckVersion 関数によりプラグインのバージョンがチェックされ、対応できないバージョンである場合はプラグインとして使用しないようにします。
対応可能なバージョンである場合は、今度は MQInit 関数が呼び出されます。この関数ではすべてのAPIへのアドレスが GetProcAddress() により取得されます。インポートライブラリとして提供するとメタセコイア本体のバージョンが古くて提供されていないAPIがある場合にエラーを生じるために、このような手動的な処理を行います。提供されないAPIがある場合は MQInit() はFALSEを返し、このプラグインの使用を中止します。
Metasequoia プラグインSDKでは、MQDocument や MQObject などいくつかのC++クラスを提供しています。しかし、クラス自体はメンバ関数やデータといった実体を持たず、メタセコイア内部で使われているクラスへアクセスするための薄いラッパーであるAPIを呼び出すインライン関数のみで構成されています。これは互換性を保ちやすくするためで、外部へは実体を提供していませんので、MQInit.cpp 以外に特別にソースやライブラリが必要ないようになっています。
なお、newやdeleteなどの演算子を用いてクラスの作成または破棄をおこなってはいけません。必ず用意されたAPIを使ってください。
SDK内には MQBasePlugin.cpp,h の2つのファイルが含まれています。常駐型プラグイン・コマンドプラグインの開発を通常のAPIベースで行うと本体・プラグイン間のイベント通知・メッセージ処理が煩雑になるため、MQBasePluginクラスおよびその派生クラスを継承する新しいクラスを定義し、仮想関数の実装を行うことで、プラグインの作成を簡便に行うことができるようになります。
常駐プラグイン用に MQStationPlugin クラスが、コマンドプラグイン用に MQCommandPlugin クラスがそれぞれ定義されています。