IWCContextMenuCallback
COM公式ドキュメント
IWCContextMenuCallback インターフェイスは、フェールオーバー クラスター アドミニストレーターのコンテキスト メニューに項目を追加するために、フェールオーバー クラスター アドミニストレーター拡張機能から呼び出されます。
解説(Remarks)
IWCContextMenuCallback インターフェイスを呼び出すには、フェールオーバー クラスター アドミニストレーターが IWEExtendContextMenu::AddContextMenuItems メソッドを呼び出した際に受け取る piCallback ポインターを使用します。
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
フェールオーバー クラスター アドミニストレーターのコンテキスト メニューにメニュー項目を追加します。
| lpszName | LPWSTR | in | メニューに追加する項目の名前を含む、null で終わる Unicode 文字列へのポインター。BSTR として宣言されていますが、このパラメーターは実際には LPWSTR として実装されています。 |
| lpszStatusBarText | LPWSTR | in | 新しい項目が選択されたときにステータス バーに表示するテキストへのポインター。BSTR として宣言されていますが、このパラメーターは実際には LPWSTR として実装されています。 |
| nCommandID | DWORD | in | メニュー項目が選択されたときに呼び出されるコマンドの識別子。 nCommandID パラメーターに –1 を設定することはできません。 |
| nSubmenuCommandID | DWORD | in | サブメニューの識別子。サブメニューはサポートされていないため、nSubmenuCommandID パラメーターは 0 でなければなりません。 |
| uFlags | DWORD | in | 新しいメニュー項目を記述するフラグのビットマスク。次の値を 1 つ以上設定できます。 MF_CHECKED (8)MF_UNCHECKED と対になるトグルとして機能し、項目の横に既定のチェック マークを表示します。 MF_UNCHECKED (0)MF_CHECKED と対になるトグルとして機能し、項目の横に表示されているチェック マークを削除します。 MF_DISABLED (2)メニュー項目を無効にして選択できないようにしますが、淡色表示にはしません。 MF_ENABLED (0)メニュー項目を有効にして選択できるようにし、項目が淡色表示されていた場合はその状態を解除します。 MF_GRAYED (1)メニュー項目を無効にして選択できないようにし、淡色表示にします。 MF_MENUBARBREAK (32 (0x20))項目を新しい列に配置します。新しい列は縦の区切り線によって前の列と区切られます。 MF_MENUBREAK (64 (0x40))項目を新しい列に配置します。列の間に区切り線は表示されません。 MF_SEPARATOR (2048 (0x800))水平の区切り線を描画します。この線は淡色表示、無効化、強調表示のいずれも行えません。lpszName および lpszStatusBarText パラメーターは無視されます。 MF_STRING (0)メニュー項目が文字列であることを指定します。lpszName パラメーターには NULL で終わる Unicode 文字列へのポインターが格納されます。これが既定の解釈です。 |
戻り値
AddExtensionMenuItem が成功しなかった場合は、その他の HRESULT 値を返すことがあります。
| 戻り値/値 | 説明 |
|---|---|
|
操作は成功しました。 |
|
uFlags パラメーターに MF_OWNERDRAW または MF_POPUP が設定されていました。 |
|
メニュー項目の割り当て中にエラーが発生しました。 |
解説(Remarks)
AddExtensionMenuItem メソッドは、コンテキスト メニューの先頭に項目を追加し、その後に区切り線を配置します。ユーザーがこのメニュー項目を選択すると、 nCommandID で識別されるコマンドが IWEInvokeCommand::InvokeCommand メソッドの nCommandID パラメーターとして渡されます。
uFlags パラメーターでは、MF_OWNERDRAW および MF_POPUP フラグはサポートされていない点に注意してください。
フェールオーバー クラスター アドミニストレーター の拡張機能は、 IWEExtendContextMenu::AddContextMenuItems メソッド内から AddExtensionMenuItem を呼び出します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWCContextMenuCallback "{97DEDE64-FC6B-11CF-B5F5-00A0C90AB505}"
#usecom global IWCContextMenuCallback IID_IWCContextMenuCallback "{}"
#comfunc global IWCContextMenuCallback_AddExtensionMenuItem 3 wstr,wstr,int,int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。