2007年6月15日

AdjustWindowRectEx と GetMenuBarInfo

ウィンドウの設定サイズ(SetWindowPosやMoveWindow)は、常にウィンドウのフレームに対する幅、高さを指定します。
クライアント領域から逆算したい場合は、AdjustWindowRectExを使用します。
しかし、このAPIは解説にも書かれているように、2行以上の複数行には対応していません(複数行を考慮しない)。
メニューバーの行数は以外にも取得できないようです。自分がざっと探したところ、出てきませんでした。
ただ、メニュー領域のRECTを取得するAPIとしてGetMenuBarInfoが用意されています。
あんまり使う人がいないのかMENUBARINFO構造体の解説は日本語化されていません。
AdjustWindowRectExをメニュー無しで計算して、GetMenuBarInfoから算出した高さを足してやるのが無難なようです。
・・・と、DeSmuMeでメニューが2段になったときに気づきました。
ただ、メニューにはボーダーがあるらしく、上述の計算では1ピクセル小さくなりました。困るorz
あと、この方法は事前に計算できないorz

0 件のコメント: