Win32 API 日本語リファレンス
ホームUI.Shell › IMenuPopup

IMenuPopup

COM
IIDd1e7afeb-6a2e-11d0-8c78-00c04fd918b4継承元IDeskBar自前メソッド開始 vtbl8

公式ドキュメント

IMenuPopup は変更される場合や利用できなくなる場合があります。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 8 HRESULT Popup(POINTL* ppt, RECTL* prcExclude, INT dwFlags)

指定した画面上の位置にショートカットメニューを表示します。

pptPOINTL*inポップアップメニューの位置を画面座標で指定する POINTL 構造体へのポインターです。ポップアップメニューは、dwFlags に設定された位置フラグに従って、この点を基準に表示されます。
prcExcludeRECTL*inoptionalメニューを配置する際に除外する矩形を指定する RECTL 構造体へのポインターです。Windows Vista では、この領域に対するメニューの整列は dwFlags に設定された整列フラグによって決まります。このパラメーターに NULL を指定すると、画面全体を対象にできます。
dwFlagsINTin

ポップアップメニューの表示を制御する、次の定数の 1 つ以上です。

MPPF_SETFOCUS (0x00000001)

メニューが表示されたときにフォーカスを持つようにします。

MPPF_INITIALSELECT (0x00000002)

メニューの最初の項目を選択状態にします。

MPPF_NOANIMATE (0x00000004)

この表示をアニメーションしません。

MPPF_KEYBOARD (0x00000010)

メニューがキーボードによってアクティブ化されます。

MPPF_REPOSITION (0x00000020)

表示されているバーの位置を再設定します。

MPPF_FORCEZORDER (0x00000040)

メニューバーはサブメニューの位置を無視します。

MPPF_FINALSELECT (0x00000080)

メニューの最後の項目を選択状態にします。

MPPF_TOP (0x20000000)

ppt で指定した点の上側にポップアップメニューを表示します。

MPPF_LEFT (0x40000000)

ppt で指定した点の左側にポップアップメニューを表示します。

MPPF_RIGHT (0x60000000)

ppt で指定した点の右側にポップアップメニューを表示します。

MPPF_BOTTOM (0x80000000)

ppt で指定した点の下側にポップアップメニューを表示します。

MPPF_POS_MASK (0xE0000000)

位置値 MPPF_TOPMPPF_LEFTMPPF_RIGHT のためのマスクです。

MPPF_ALIGN_LEFT (0x02000000)

既定の整列です。

MPPF_ALIGN_RIGHT (0x04000000)

ポップアップメニューを、prcExclude で指定した除外矩形の右側に整列させます。

戻り値

型: HRESULT

オブジェクトがポップアップメニューをモードレスメニューとして実装している場合は S_OK を返します。それ以外の場合は S_FALSE を返し、これはメニューの実装が終了したことを示します。

vtbl 9 HRESULT OnSelect(DWORD dwSelectType)

選択通知を処理します。

dwSelectTypeDWORDin

このパラメーターには次のいずれかの値を指定できます。

MPOS_EXECUTE

選択されたメニュー項目を実行します。

MPOS_FULLCANCEL

メニュー全体をキャンセルします。

MPOS_CANCELLEVEL

現在のカスケードメニューをキャンセルします。

MPOS_SELECTLEFT

現在の選択項目の左側の項目を選択します。

MPOS_SELECTRIGHT

現在の選択項目の右側の項目を選択します。

MPOS_CHILDTRACKING

現在の選択項目の子項目が追跡選択を受け取ります。言い換えると、マウスが現在の選択項目の子項目の上に移動します。

戻り値

型: HRESULT

常に S_OK を返します。

vtbl 10 HRESULT SetSubMenu(IMenuPopup* pmp, BOOL fSet)

指定したメニューバーインターフェイスを、呼び出し元アプリケーションオブジェクトのインターフェイスのサブメニューとして設定します。

pmpIMenuPopup*in対象のメニューバーを指定する IMenuPopup インターフェイスへのポインターです。
fSetBOOLinfSetFALSE に設定されている場合、サブメニューを削除します。

戻り値

型: HRESULT

常に S_OK を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IMenuPopup "{D1E7AFEB-6A2E-11D0-8C78-00C04FD918B4}"
#usecom global IMenuPopup IID_IMenuPopup "{}"
#comfunc global IMenuPopup_Popup       8 var,var,int
#comfunc global IMenuPopup_OnSelect    9 int
#comfunc global IMenuPopup_SetSubMenu  10 sptr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。