2004-12-26 [長年日記]

[Q3] WM2003SEの高DPI対応

試しに入れてみました。HI_RES_AWAREを追加するだけでだめだったのは以下のあたりです。

  • コンボボックスが小さくならない

    コンボボックスにフォントをセットする(WM_SETFONTを送る)と高さを自動的に計算してくれますが、デフォルトより小さいフォントを設定しても小さくならないようです*1。仕方がないので、CB_SETITEMHEIGHTを送りつけて無理やり高さを低くするようにしました。

    ちなみに高さはフォントをセットしたDCにからGetTextMetricsして、TEXTMETRIC::tmHeight + TEXTMETRIC::tmExternalLeading + 2すると自動調節と同じ高さになるようです。

  • メニューの高さがハードコードされていた

    SHCreateMenuBarで作ったメニューの高さが26ピクセルでハードコードされていました。メニューを作成してから高さを取得すれば良いのですが、諸般の事情によりGetDeviceCaps(hdc, LOGPIXSELY)した値を使って調整するようにしました。

おそらくこれでうまくいくのではないかと思われますが、実機がないのでちゃんと動いているかどうかはなぞです。

*1  ちなみにWindows XPだとちゃんと小さくなります

本日のツッコミ(全3件) [ツッコミを入れる]
# trr (2004-12-27 17:19)

↓このファイルにはWM2003SE対応入ってないのですよね?
q3u-ppc2003-armv4-ja-2_9_11-20041227.zip
入れてみましたが、以下の状態です。
1. 未読のメールアイコンが大きい。
2. フォルダのコンボボックスの高さが高いまま。
3. ツールバーの大きさが倍画像表示になっている。

# snak (2004-12-27 17:51)

リビジョンが1620以降だったら入っています。が、なんか余計おかしくなっているみたいですね。

# trr (2004-12-27 19:10)

1620です(TOT)

[]