ポップアップメニューの位置を変更する方法はありますか?トップレベルウィンドウでは、CBTProcコールバック関数とMoveWindowを使用して実行できます。メニューでも同じことをすることはできますか?ポップアップメニューが親ウィンドウの領域にのみ配置されるようにする必要があります。ライトウィンドウマネージャのようなもの。Windows。ドロップダウンメニューの位置を変更する
1
A
答えて
1
はい、WH_CBT
フックコールバックでは、メニューウィンドウが作成されるたびにHCBT_CREATEWND
の 'nCode'で通知されます。クラス名のテストでは、標準のメニュー/サブメニューウィンドウはクラス名が '#32768'になります。その後、ウィンドウにMN_GETHMENU
メッセージを送信して、どのメニューがアクティブになるかを調べることができます。しかし、as documentedでは、通知を受信したときにウィンドウを移動するには時期尚早です。メニューはまだ表示されていないため、ウィンドウをサブクラス化して追加のメッセージを処理する必要があります。
メニューウィンドウが表示されているときに通知するためのフックを必要としないことに注意してください。WM_ENTERIDLE
メッセージ用のハンドラを置くことができます。メニューがメッセージを引き起こしたかどうかを確認する 'wParam' 「lParam」のウィンドウを開き、再度「MN_GETHMENU」を送信して特定のメニューを見つけます。これ以上のメッセージ処理を行わなくても、この時点でウィンドウを移動することは可能です。 'WM_ENTERIDLE'は複数回呼び出されるので、特定のウィンドウを移動したかどうかを確認する必要があることに注意してください。
関連する問題
- 1. ドロップダウンメニューCSS3の位置
- 2. ドロップダウンメニューの位置を設定する(CSS)
- 3. Xaml AppBarButton(Windows UWP)のラベル位置を変更するには
- 4. 変更位置
- 5. アンドロイドでの位置変更のマーカー位置を変更する方法
- 6. ナンバースクリプトでサイドドロワーの位置/位置を変更するには
- 7. UIImageViewの位置を変更する
- 8. ステータスバーの位置を変更する
- 9. Openstreetmaps LayerSwitcherの位置を変更する
- 10. ブートストラップナビバーの位置を変更する
- 11. HTML - フォームの位置を変更する
- 12. ブートストラップのツールチップ位置を変更する
- 13. Android:ステータスバーの位置を変更する
- 14. Androidアクションバーの位置を変更する
- 15. WebViewの位置を変更するココア
- 16. modelineの位置を変更する
- 17. カーソル位置のテキストを変更する
- 18. TabBarバックグラウンドの位置を変更する
- 19. 日時の位置を変更する
- 20. リーフレットコントロールセレクターの位置を変更する
- 21. ImageViewの行列による位置の変更位置の変更
- 22. フォームの位置の変更
- 23. マウスの位置の変更
- 24. 変更ツールチップの位置/
- 25. Woocommerceの変更フィールド位置
- 26. AdMobバナービューの変更位置
- 27. 地理位置の変更
- 28. QToolButton:メニュー位置を変更する
- 29. スプライト位置を変更するonAccelerometerChanged
- 30. 位置情報を変更するUITouch
ありがとう、私が必要とするものです!今私は、コンテキストメニューで同じことをしようとするが、それをキャッチする適切なウィンドウメッセージを見つけることができません。何かアドバイスできますか? – Alexander
@Alexander - Delphiアプリケーションでテストされていますが、両方のメソッドが動作するようです。 'hwnd'パラメータのためにウィンドウのハンドルを' TrackPopupMenu [ex] 'に渡してください。これは、メッセージを受け取るウィンドウを示すためです。 –