2016-08-04 8 views
1

私は高dpi対応のMFCアプリケーションを持っています。アプリはCTreeCtrlと表示し、さまざまなdpi設定でエキスパンド/折りたたみ(たとえば+/-)の字形を適切に描画します。ここに200%のスニペットがあります。ExplorerテーマがDPI対応ではないCTreeCtrl

enter image description here

よりモダンな外観を提示するために、私は、ツリーコントロールのPreSubclassWindowオーバライドにこれを追加することで、Windowsエクスプローラのようにツリーコントロールのテーマを設定しました:

SetWindowTheme(m_hWnd, L"Explorer", NULL);

をツリーコントロールは、エクスプローラのように展開/折りたたみグリフを描画するようになりました。しかし、グリフは高dpi設定では拡大縮小されません。 GetThemePartSize(td, NULL, TVP_GLYPH, GLPS_OPENED, NULL, TS_DRAW, &size) - - 32個のピクセルであり、ここで200%で、他のスニペット

enter image description here

200%でテーマ部分のサイズは、です。明らかに、エクスプローラをテーマにしたグリフは、dpiが増加するにつれてサイズが大きくなることはありません。

は、事前に

おかげでこれに他の誰の実行int型を持ち、もしそうなら、あなたは所有者が/カスタムツリーコントロールの描画以外の解像度を(見つけましたか?

のVisual C++ 2015 ...

+0

私が言ったように、私のMFCアプリケーションは、私は多分問題がどのように見えるかの画像を投稿し、質問を理解していない –

+0

...すでに高い解像度を認識しています。矢印のものが間違って見えるのですか? –

+0

良いアイデア - 最初の投稿を更新し、さらに情報を追加しました - ありがとう! –

答えて

1

CTreeCtrlは、展開/折りたたみ(例:+/-)グリフが設定の有無にかかわらず適切に拡大されていないという点で、dpiのバグがあります。それらのWindows。

CTreeCtrl::GetItemPartRectを異なるdpiスケールで呼び出すと、返された矩形の高さが(拡大/縮小されたフォントのため)スケーリングされているのがわかりますが、その幅は表示されません。したがって、テーマの問題だったと思っていたのは、テーマの拡大/縮小グリフがより透明なピクセルを持つため、錯覚だけでした。みんなの時間を無駄にして申し訳ありません

...

関連する問題