[WinAPI] DPI abfragen
Verfasst: 09.10.2009, 12:32
Hi,
Mal wieder was Exotisches :) Ich möchte die physische Größe eines Fensters auf dem Bildschirm bestimmen. Das geht über die Größe des Fenstes (in Pixeln) und die DPI. Erstere ist ein Kinderspiel (WM_SIZE oder GetClientRect()), zweitere erhalte ich durch GetDeviceCaps().
Nun wird es aber komplexer. Bevor ich blind losprogrammiere, würde ich gern zwei Dinge wissen:
1. Device-Contexts (die man für besagtes GetDeviceCaps() braucht) erscheinen mir ein bisschen betagt und ich habe gelesen, dass die Arbeit mit ihnen ordentlich Ressourcen verbraucht. Gibt es in der WPF/DXGI-Ära aktuellere Pendants? Der Artikel über DPI-Awareness gibt nichts her, weil er von Text-only-Anwendungen ausgeht, die ja automatisch vom DWM angepasst werden.
2. Das Fenster wird mit D3D befüllt werden und man wird es entsprechend auch in den Vollbildmodus schalten können. Kann ich mich darauf verlassen, dass dabei auch die DPI aktualisiert werden, falls die Fullscreen-Auflösung nicht der Desktop-Auflösung entspricht?
Gruß, Ky
Mal wieder was Exotisches :) Ich möchte die physische Größe eines Fensters auf dem Bildschirm bestimmen. Das geht über die Größe des Fenstes (in Pixeln) und die DPI. Erstere ist ein Kinderspiel (WM_SIZE oder GetClientRect()), zweitere erhalte ich durch GetDeviceCaps().
Nun wird es aber komplexer. Bevor ich blind losprogrammiere, würde ich gern zwei Dinge wissen:
1. Device-Contexts (die man für besagtes GetDeviceCaps() braucht) erscheinen mir ein bisschen betagt und ich habe gelesen, dass die Arbeit mit ihnen ordentlich Ressourcen verbraucht. Gibt es in der WPF/DXGI-Ära aktuellere Pendants? Der Artikel über DPI-Awareness gibt nichts her, weil er von Text-only-Anwendungen ausgeht, die ja automatisch vom DWM angepasst werden.
2. Das Fenster wird mit D3D befüllt werden und man wird es entsprechend auch in den Vollbildmodus schalten können. Kann ich mich darauf verlassen, dass dabei auch die DPI aktualisiert werden, falls die Fullscreen-Auflösung nicht der Desktop-Auflösung entspricht?
Gruß, Ky