週間メタセコプラグインを作る(mqsdx300.0.0)
嘘、言ってみたかっただけです。週間とかムリ。
C++で.Net(C++/CLI)なメタセコプラグイン開発用の支援ライブラリを作ってみました。その名はmqsdx(*1)。リンクはコチラ。
ほとんどStasionPluginまたはCommandPlugin開発専用になっちゃってますが、他にもオブジェクトとマテリアル検索が充実しています。「VC2010(Express含む)でダイアログベースのメタセコプラグインがもうちょっとサクサク作れると良いなー」とやってみた次第です。
#include "mqsdx/MQCLI.hpp" public ref class CustomPlugin : MQCLI::CommandPlugin { public: CustomPlugin() : CommandPlugin( "tiritomato", "Sample Copyright(C) 2013, tiritomato.", "SampleButton" ) {} virtual BOOL Activate(MQDocument doc, BOOL flag) override { if ( flag == TRUE ) ::MessageBox( MQ_GetWindowHandle(), "Activate!", NULL, 0 ); return flag; } }; static bool initialResult = MQCLI::Initialize( gcnew CustomPlugin() ); // Initialize!
↑これコンパイルするだけで、いわゆるMQSDK相当のプラグインの基礎は出来ちゃうのぜ。しかもCLI、つまり.Netライブラリも使えるという寸法で。
しかしそもそも.Netとか言えば聞こえは良かったんですが、実のところ
とまぁ実に通好みな苦々しい問題が山積みという事が判明し、MQSDK相当のままCLI移行するべくコードをこねくりまわしているうちにライブラリになっちゃったぁーというのが実情です。
なお開発を始めたタイミングで3.0系しか使えなかったためにmqsdk300を想定しています。
もちろん現行SDKでもコンパイルできます。しかし、だいたい動いちゃいますが、もとから頼りない事前テストが、より確実に信用ならないゾーンになります(で、少なくとも現在311用に追加されている部分はちゃんと動くまで対応したいので、もう少しだけアップデートを続ける予定です)。
しかしプライベート名前空間、使 っ ち ゃ っ て る じ ゃ ね ぇ の www
どこ見てるんですかアナタ!実質VC2010専用なので…許して、許してください。
もしメタセコのプラグイン開発をしていらっしゃる方で、なにかコメントがあればぜひぜひ。
そう言えば「本家サイトのBBSに何か書いたほうが良いのだろうか」と悩んで結局コッソリ公開することにしました。
なにしろ「今更C/C++からC++/CLIに乗り換えるプラグイン開発者がどの程度居るかしら?きっとみんな常套TIPS持っているに違いない」「何かにつけて.Netアプリの処理が重いのはバッチリ体感できるレベル(とくに起動)」…まあなにかこだわりがあるわけでもなく「メタセコのアフターマーケットはだいたいブログとかそれくらいでやるもん」みたいな空気を感じたのでそれにならってるだけです。
しめしめしばらくダイアログアプリ作るネタで記事数増やせます。
*1:文字数を減らしたくてMQxにしようと思ってたのに、検索かけたらダダカブりだったので泣く泣く5文字にしました