2011-01-31 18 views
0

Windowsでは、メニューを開くときに、画面上のその場所は親ウィンドウの場所と画面の解像度によって異なります。つまり、メニューが画面に合わない場合は、別の面に移動します。 このメカニズムはどのようにOSで動作しますか?画面の解像度を実際のものよりも小さく見えるように、画面解像度の値を代用することは可能ですか?ウィンドウメニューの場所を変更する

ドロップダウンメニューとコンテキストメニューをウィンドウ領域にのみ表示したいと考えています。今私はCBThookとWndProcを使用して、表示されるメニューの場所を再計算します。おそらくもっと簡単にする方法がありますか?

+0

良い質問。ここにあなたの最初の+1;) – BlackBear

+3

なぜ人々はプラットフォームに戸惑いたいのですか?ネイティブメニューの何が問題ですか? –

+3

一度グローバルフックを見つけたら*すべてを*混乱させたくないのは難しいです。 –

答えて

1

TrackPopupMenuExはメニューがない重複、私はそれはあなたが何をしたいの反対の一種だと思いなければならないが、あなたが恐ろしいなし得ようとしているほど近いことをあなたは、画面上の矩形を指定することができませんハック。

+1

また、さまざまな 'ALIGN'フラグもあります。メニューのサイズ(' GetMenuItemRect'を使います)を調整して、ウィンドウ内にとどまるように手動でエッジの位置を決めます。それがうまくいくと思います。 –

関連する問題