Ich habe festgestellt, dass meine App Icons an die Windows-Taskleiste mit einer Größe von 16x16 Pixeln sendet - und mein Vista-PC Ich habe eine doppelt breite Taskleiste, die Icons bei 18x18 zu zeigen scheint. Die Größenänderungsartefakte auf dem Symbol meiner App sehen furchtbar aus. Wie kann ich Windows fragen, welche Größe die Symbole haben sollten?
bearbeiten:
Ich erzeuge das Icon dynamisch mit einem Overlay für die Pixelschrift. Es scheint verschwenderisch zu sein, eine Menge Icon-Größen dynamisch zu generieren, also wäre es nett, ein Icon mit all den "möglichen" Größen zu erstellen (nicht dass ich mir überhaupt sicher bin, was das ist).
GetSystemMetrics (SM_CXSMICON) gibt 16 - den falschen Wert zurück.
GetThemeBackgroundContentRect hat auch nicht geholfen.
Marks Kernantwort ist die richtige: Erstellen Sie Ihre Symbole in verschiedenen Formaten und lassen Sie Windows die richtige Wahl treffen. Vergessen Sie nicht, 32x32- und 64x64-Symbole für HighDPI-Szenarien zu verwenden.
Aber SM_CXICON / SM_CYICON gibt nicht unbedingt die Größe zurück, die in der Taskleiste verwendet wird. Die Taskleiste wählt die richtige Symbolgröße für die Größe aus (in Fenster 7 ist viel wichtiger).
Stellen Sie einfach Symbole in angemessener Größe bereit und Sie sollten in Ordnung sein.
Erstellen Sie Ihre Symbole in mehreren Formaten und lassen Sie Windows die gewünschte auswählen.
Hier ist der Wikipedia-Artikel zum .ico-Format.
Wenn Sie wirklich wissen müssen, GetSystemMetrics mit einem Parameter von SM_CXICON oder SM_CYICON werden Ihnen die Breite und Höhe mitteilen, die Windows laden möchte.
Ihre beste Wette ist GetThemeBackgroundContentRect , die TBN_BACKGROUND
als iPartId übergibt für das Fach benachrichtigen Hintergrund.
GetThemeBackgroundContentRect sollte die vom aktuellen Thema definierte Größe zurückgeben, die zum Zeichnen verwendet werden kann, ohne die Grenzen des übergeordneten Elements zu überlappen. Wenn ich das richtig lese, wäre das das größte zulässige Benachrichtigungssymbol und vermutlich die Größe, die verwendet wird.
Das Testen mit mehreren DPI-Einstellungen ist wahrscheinlich der einfachste Weg, um festzustellen, ob dies den richtigen Wert liefert.
Tags und Links windows winapi taskbar system-tray