MarineProjects/MarineToolbar/Developer
プラグイン開発 bookmark
Marineツールバーのプラグイン開発には以下の実装が必要です。
- プラグイン情報を取得するためのGetPluginInfo関数の実装とエキスポート
- プラグインのCOMインターフェースであるIToolBarPluginの実装
- イベントシンク_DToolBarPluginEventsの実装
上記の実装を行うとMarineツールバーのプラグインとして動作することが可能です。
プラグインの開発に必要な定義ファイルはこのページからダウンロードすることができます。
プラグインの情報取得関数 bookmark
プラグインから情報を取得するための関数がGetPluginInfoです。
この関数は、以下の形式で実装します。
BOOL WINAPI GetPluginInfo(LPPLUGINSTRUCT lpPluginStruct, LPDWORD lpdwCount);
この関数は、PLUGINSTRUCT構造体へのポインタとDWORDへのポインタを引数として受け取ります。PLUGINSTRUCT構造体にはプラグインの各種情報を格納します。
DWORDへのポインタlpdwCountは実装しているプラグインの数を設定します。
プラグインは、インプロセスCOMサーバー(通常は拡張子DLL)の形式でコンパイルされますが、1つのDLL中に複数のプラグインを実装することが可能です。そのため、実装されているプラグインの数を取得します。
Marineツールバーは、以下の手順でGetPluginInfoを呼び出します。
- 本体側の処理
PLUGINSTRUCT構造体へのポインタlpPluginStructにNULLをセットしてGetPluginInfoを呼び出します。実装されているプラグインの数を取得するための処理です。 - プラグイン側の処理
呼び出されたGetPluginInfoは、引数lpPluginStructがNULLかどうかのチェックを行います。NULLの場合は、実装しているプラグインの数をlpdwCountに格納します。 - 本体側の処理
lpdwCountに設定されたプラグインの情報を格納できるようなPLUGINSTRUCT構造体メモリ(PLUGINSTRUCT構造体の配列)を確保します。そのポインタを引数として再度、GetPluginInfoを呼び出します。 - プラグイン側の処理
引数lpPluginStructがNULLではない場合、プラグインの情報をlpPluginStructに格納します。lpPluginStructは、PLUGINSTRUCT構造体の配列になっているため、実装しているプラグインの数だけデータを設定します。
リファレンス bookmark
GetPluginInfo bookmark
- BOOL WINAPI GetPluginInfo(LPPLUGINSTRUCT lpPluginStruct, LPDWORD lpdwCount);
- 概要
プラグインに関する情報を取得します - 引数
- LPPLUGINSTRUCT lpPluginStruct
プラグインの情報を格納するPLUGINSTRUCT構造体配列へのポインタ
- LPPLUGINSTRUCT lpPluginStruct
- 戻り値
- BOOL
TRUE : 正常終了
FALSE : 処理失敗
- BOOL
- 概要
PLUGINSTRUCT構造体 bookmark
#define PLUGIN_CLSID_BUFFER_SIZE 1024
#define PLUGIN_NAME_BUFFER_SIZE 1024
#define PLUGIN_DESCRIPTION_BUFFER_SIZE 1024
#define PLUGIN_AUTHOR_BUFFER_SIZE 256
typedef struct{
TCHAR szCLSID[PLUGIN_CLSID_BUFFER_SIZE];
TCHAR szPluginName[PLUGIN_NAME_BUFFER_SIZE];
TCHAR szPluginDescription[PLUGIN_DESCRIPTION_BUFFER_SIZE];
TCHAR szAuthor[PLUGIN_AUTHOR_BUFFER_SIZE];
HBITMAP hBitmap;
}PLUGINSTRUCT;
typedef PLUGINSTRUCT* LPPLUGINSTRUCT;
- szCLSID
プラグインのCLSID - szPluginName
プラグインの名前 - szPluginDescription
プラグインの説明 - szAuthor
プラグインの作者名 - hBitmap
プラグインの追加と削除に表示されるボタンのビットマップハンドル
IToolBarPlugin Interface bookmark
メソッド bookmark
- HRESULT Configuration([in]LONG hwnd)
- 概要
プラグインの設定・バージョン情報を表示するときに呼び出されます。 - 引数
- hwnd
親ウィンドウのハンドル
- hwnd
- 概要
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- HRESULT SetPluginInfo([in] LONG ID)
- 概要
プラグインに割り当てられるユニークなIDを通知する時に呼び出されます。
このIDはプラグインからの通知に利用されます。 - 引数
- ID
プラグインに割り当てられるユニークなID
- ID
- 概要
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- HRESULT SetWebBrowser([in]IDispatch* Dispatch)
- 概要
Marineツールバーを実行しているInternet ExplorerのIWebBrowser2を通知するために呼び出されます。 - 引数
- Dispatch
IWebBrowser2インターフェースのポインタ
- Dispatch
- 概要
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- HRESULT HRESULT SetParentHwnd([in]LONG hwnd)
- 概要
プラグインの親となるウィンドウのハンドルを通知するために呼び出されます。 - 引数
- hwnd
親ウィンドウのハンドル
- hwnd
- 概要
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- HRESULT GetButtonStyle([out]long* Style)
- 概要
プラグインがサポートするボタンのスタイルを取得するために呼び出されます。 - 引数
- Style
ボタンスタイルを格納するためのポインタ
BUTTON_STYLE_NORMAL:通常のボタン
BUTTON_STYLE_WHEEL:プルダウン形式のボタン
BUTTON_STYLE_DROPDOWN:通常のボタン + プルダウン形式のボタン
- Style
- 概要
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- HRESULT GetButtonText([out]BSTR* Text)
- 概要
ボタンに表示するテキストを取得するために呼び出されます。 - 引数
- Text
ボタンテキストを格納するためのポインタ
- Text
- 概要
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- HRESULT GetButtonImage([out]long* bitmap)
- 概要
ボタンに表示するイメージを取得するために呼び出されます。 - 引数
- Text
ボタンに表示するイメージ(ビットマップハンドル)を格納するためのポインタ
ボタンイメージは複数指定することが可能です。ボタン1つの大きさは16×16です。
複数してする場合は、(16×n)×16の形式で横に拡張して作成する必要があります。
- Text
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- 概要
- HRESULT GetButtonImageIndex([out]int* Index)
- 概要
ボタンに表示するイメージのインデックスを取得するために呼び出されます。 - 引数
- Index
ボタンに表示するイメージのインデックスを格納するポインタ
ボタンイメージは、0からの数値です。
複数してする場合は、左側から0,1,2・・(指定したイメージ数 - 1)までの値になります。
- Index
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- 概要
- HRESULT GetToolTipText([out]BSTR* Text)
- 概要
ボタンのツールチップに表示する文字列を取得するために呼び出されます。 - 引数
- Text
ボタンのツールチップに表示する文字列を格納するポインタ
- Text
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- 概要
- HRESULT GetMenu([out]long* Menu)
- 概要
ポップアップメニューの表示に使用するポップアップメニューハンドルを取得するために呼び出されます。 - 引数
- Menu
ポップアップメニューのハンドルを格納するポインタ
- Menu
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- 概要
- HRESULT QueryCommandUI([in]BSTR Text, [out]long* MenuStatus)
- 概要
ボタンの状態(有効・無効)を取得するために呼び出されます。 - 引数
- Text
検索ボックスに入力されているテキスト - MenuStatus
ボタンの状態を格納するポインタ
BUTTON_STATUS_DISABLE:無効
BUTTON_STATUS_ENABLE:有効
- Text
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- 概要
- HRESULT InvokeCommand([in]IDispatch* Dispatch, [in]BSTR Text, [in]long Command)
- 概要
ボタンがクリックされた時に呼び出されます。 - 引数
- Dispatch
IWebBrowser2インターフェースのポインタ - Text
検索ボックスに入力された文字列 - Command
ボタンに割り当てられたコマンドID(特に使用しません)
- Dispatch
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- 概要
- HRESULT InvokeMenuCommand([in]IDispatch* Dispatch, [in]BSTR Text, [in]long Command)
- 概要
ポップアップメニューが選択された時に呼び出されます。 - 引数
- Dispatch
IWebBrowser2インターフェースのポインタ - Text
検索ボックスに入力された文字列 - Command
選択されたメニューのコマンドID
- Dispatch
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- 概要
- HRESULT InvokeDropdown([in] IDispatch* Dispatch, [in] BSTR text, [in] LONG x, [in] LONG y, [out] VARIANT_BOOL* result)
- 概要
ポップアップメニュ-を表示するタイミングで呼び出されます。
ポップアップメニューの表示は本体側で行うこともプラグイン側で処理することも可能です。
- 概要
プラグイン側で独自のポップアップメニューを表示したい場合はこのメソッドで処理を行います。
プラグイン側でポップアップメニューを表示しない場合は、このメソッドの呼び出しの後、GetMenuが呼び出されます。
- 引数
- Dispatch
IWebBrowser2インターフェースのポインタ - Text
検索ボックスに入力された文字列 - x
ポップアップメニューを表示するx座標 - y
ポップアップメニューを表示するy座標 - result
ポップアップメニューをプラグインで表示したかどうかのVARIANT_BOOL値を格納するポインタ
VARIANT_TRUE:処理した場合
VARIANT_FALSE:処理しなかった場合
- Dispatch
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
- HRESULT Terminate(void)
- 概要
プラグインが開放される直前に呼び出されます。
リソースの解放やウィンドウの破棄などの後処理を行います。
- 概要
- 引数
- なし
- 戻り値
- HRESULT
S_OK : 正常終了
S_OK以外 : 処理失敗(処理失敗に該当するHRESULTの定数)
- HRESULT
_DToolBarPluginEvents Event Interface bookmark
メソッド bookmark
- void StatusChange([in]long ID, [in]long Status)
- 概要
プラグイン側の状態などが変更された時にプラグイン側から本体へ通知します。 - 引数
- ID
プラグインに割り当てられるユニークなID - Status
変更があった内容を格納するポインタ
以下のOR組み合わせが指定可能です。
EVENT_STATUS_TEXT:ボタンに表示するテキストを変更
EVENT_STATUS_IMAGE:イメージを変更
EVENT_STATUS_STATUS:ボタンの状態を変更
- ID
- 概要
- 戻り値
- なし
ダウンロード bookmark
- プラグイン開発を行う場合に必要となる各種ファイル
- MarineToolBarPlugin.zip 2004-10-31版(60.4 KB)
- MarineToolBarPlugin.dll
- MarineToolBarPlugin.idl
- MarineToolBarPlugin.h
- MarineToolBarPlugin_i.c
- MarineToolBarPlugin_p.c
- ToolBarPluginIF.h
- _DToolBarPluginEvents_CP.h
- MarineToolBarPlugin.zip 2004-10-31版(60.4 KB)
|
|
||



