DLL側で定義する関数
以下の関数はDLL側で定義し、必要に応じてStoneyDesignerが呼び出します。以下のすべての関数は、extern
"C"で修飾して下さい。
必ず定義しなければならない関数
void sdc_getVersion(int * ver, int * subVer);
DLL側が対応しているプラグインのバージョンを返します。現在は*ver=1,
*subVer=0にして下さい。
wchar_t * sdc_getName();
拡張メニュー内に表示されるDLLの名前を返します。
void sdc_execute();
プラグインの実際の動作を記述します。”拡張”メニュー内で、上の名前が選択されたときにStoneyDesignerからこの関数が呼ばれます。
必要ならば定義する関数
SdPluginMode sdc_getType();
プラグインの形式を返します。現在、以下の二つが指定できます。この関数が定義されていない場合は、プラグインの形式がSDPLUGINMODE_TEMPORARYになります。
SDPLUGINMODE_TEMPORARY:
メニューでこのプラグインが選択されると同時にLoadLibraryで読みこまれ、sdc_executeが終了すると同時にFreeLibraryで開放されます。メモリーの節約になります。
SDPLUGINMODE_CONCURRENT:
StoneyDesignerが開始した後にLoadLibraryで読みこまれ、StoneyDesignerが終了するまでは開放されません。独自の操作ウインドウ等を出すプラグインなどに向いています。例えば、独自の視点変更ウインドウを常時出しておくプラグイン作成の場合は、 1.この関数でSDPLUGINMODE_CONCURRENTを返します。 2.下のsdc_initでウインドウを作成し、表示します。 3.sdc_executeで、ウインドウの表示・非表示を設定します。 4.下のsdc_exitでウインドウを破棄します。 のような動作を行えば良いでしょう。
また、マウス入力を伴う拡張機能(参照:SdInteractionHandler)の場合は、SDPLUGINMODE_CONCURRENTを返す必要があります。
HBITMAP sdc_getBitmap();
拡張メニュー内のメニューの文字の左に表示されるビットマップを指定します。ビットマップは16×15の大きさでなければなりません。
wchar_t * sdc_getMessage();
メニュー上をマウスが動いたときに、ステータスバーに表示されるメッセージを返します。
void sdc_init();
StoneyDesignerが開始した後や、拡張機能DLLが読み込まれた際に呼ばれます。sdc_getTypeでSDPLUGINMODE_TEMPORARYを返した場合は、この関数が終了した後にDLLは開放されます。SDPLUGINMODE_CONCURRENTの場合は開放されません。
void sdc_exit();
StoneyDesignerが終了する直前や、拡張機能DLLがStoneyDesignerから開放される前に呼ばれます。
|