モノトーンの伝説日記

Apex Legends, Splatoon, Programming, and so on...

Windowsの近代的なHighDPIについて自分なりにまとめてみる。

 SylphyHorn を Per-monitor DPI 対応しようとしたら,Per-monitor DPI に不具合があってさらに調査進めていたらめっちゃ不具合見つかるという……

 .NET Core 3.1 WPF でも Per-monitor DPI に不具合あるっぽいし,いろいろ不具合見つかる模様…

  • 1. Per-monitor DPI v2 API が追加されて。
    • 1.1 Unaware
    • 1.2 System Aware
    • 1.3 Per-monitor Aware (Version 1)
    • 1.4 Per-monitor Aware (Version 2)
    • 1.5 Unaware (GDI Scaled)
  • 2. Windows 10 Anniversary Update (1607) で増えた API
  • 3. WPF (.NET Core 3.1) で発覚している既知の不具合
    • 3.1 Windows 10 Anniversary Update [1607] 特有問題 (8/11 追記)
  • まとめ
続きを読む

Desktop Window Manager によって管理される DirectComposition の歴史

 DWM の DComp について調べていたらもうそれが結構地獄でした。

 Windows NT 6.2 時代に必要に応じて作られたものの,紆余曲折あり断片化と言った感じ。現状では歴史的経緯により Windows Runtime がメインになっている模様。

  • 1. DirectComposition とは?
  • 2. DirectComposition の歴史
    • 2.1 IDCompositionDevice
    • 2.2 IDCompositionDevice2 と IDCompositionDesktopDevice
    • 2.3 IDCompositionDevice3
    • 2.4 Windows.UI.Composition (実質 IDCompositionDevice4)
      • 2.4.1 CreateBackdropBrush
      • 2.4.2 CreateHostBackdropBrush
  • 3. DirectComposition API の今後
  • まとめ
続きを読む

『WPFでカスタムウィンドウを作るのに人類は奮闘してきた』最終回(簡易コード付き)

 前回の記事を読んでない人はまず読んできてください。

mntone.hateblo.jp

 実はこの方法,タスク バーの移動ができない(ウィンドウサイズ調整に追従できない)んですよね……

  • 1. WindowChrome (WindowChromeWorker) で実現していること。
  • 2. Windows 95 からある GDI の関数。
  • 3. WindowChrome の一体何が問題だったの?
  • 4. タスク バー (Appbar) の考慮
  • まとめ
続きを読む

『WPFでカスタムウィンドウを作るのに人類は奮闘してきた』(カスタムウィンドウ最大化問題) 序章

 HAHAHA。なんでなんやろ,歴史調べたら人々が奮闘してきたのがわかる。

  • 1. この原因を調べるきっかけ。
  • 2. 人々の歴史。
    • 2.1 回避方法 1: ハードコード
    • 2.2 回避方法 2: インテリジェンス
  • 3. やっぱり自動で隠れるタスク バーがひらけない。
  • まとめ
  • おまけ
続きを読む