IMenuPopup
COM公式ドキュメント
IMenuPopup は変更される場合や利用できなくなる場合があります。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定した画面上の位置にショートカットメニューを表示します。
| ppt | POINTL* | in | ポップアップメニューの位置を画面座標で指定する POINTL 構造体へのポインターです。ポップアップメニューは、dwFlags に設定された位置フラグに従って、この点を基準に表示されます。 |
| prcExclude | RECTL* | inoptional | メニューを配置する際に除外する矩形を指定する RECTL 構造体へのポインターです。Windows Vista では、この領域に対するメニューの整列は dwFlags に設定された整列フラグによって決まります。このパラメーターに NULL を指定すると、画面全体を対象にできます。 |
| dwFlags | INT | in | ポップアップメニューの表示を制御する、次の定数の 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_TOP、MPPF_LEFT、MPPF_RIGHT のためのマスクです。 MPPF_ALIGN_LEFT (0x02000000)既定の整列です。 MPPF_ALIGN_RIGHT (0x04000000)ポップアップメニューを、prcExclude で指定した除外矩形の右側に整列させます。 |
戻り値
型: HRESULT
オブジェクトがポップアップメニューをモードレスメニューとして実装している場合は S_OK を返します。それ以外の場合は S_FALSE を返し、これはメニューの実装が終了したことを示します。
選択通知を処理します。
| dwSelectType | DWORD | in | このパラメーターには次のいずれかの値を指定できます。 MPOS_EXECUTE選択されたメニュー項目を実行します。 MPOS_FULLCANCELメニュー全体をキャンセルします。 MPOS_CANCELLEVEL現在のカスケードメニューをキャンセルします。 MPOS_SELECTLEFT現在の選択項目の左側の項目を選択します。 MPOS_SELECTRIGHT現在の選択項目の右側の項目を選択します。 MPOS_CHILDTRACKING現在の選択項目の子項目が追跡選択を受け取ります。言い換えると、マウスが現在の選択項目の子項目の上に移動します。 |
戻り値
型: HRESULT
常に S_OK を返します。
指定したメニューバーインターフェイスを、呼び出し元アプリケーションオブジェクトのインターフェイスのサブメニューとして設定します。
| pmp | IMenuPopup* | in | 対象のメニューバーを指定する IMenuPopup インターフェイスへのポインターです。 |
| fSet | BOOL | in | fSet が FALSE に設定されている場合、サブメニューを削除します。 |
戻り値
型: HRESULT
常に S_OK を返します。
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 指定が可能。#define global IID_IMenuPopup "{D1E7AFEB-6A2E-11D0-8C78-00C04FD918B4}" #usecom global IMenuPopup IID_IMenuPopup "{}" #comfunc global IMenuPopup_Popup 8 sptr,sptr,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が無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。