AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [NonVCL] Großes statt kleinem Programmicon in Titelleiste
Thema durchsuchen
Ansicht
Themen-Optionen

[NonVCL] Großes statt kleinem Programmicon in Titelleiste

Ein Thema von Daniel Schuhmann · begonnen am 16. Sep 2006 · letzter Beitrag vom 17. Sep 2006
Antwort Antwort
Benutzerbild von Daniel Schuhmann
Daniel Schuhmann

Registriert seit: 16. Jul 2005
Ort: München
391 Beiträge
 
Turbo Delphi für Win32
 
#1

[NonVCL] Großes statt kleinem Programmicon in Titelleiste

  Alt 16. Sep 2006, 23:48
Servus!

Ich habe mal wieder ein kleines Problemchen

Wenn man ein NonVCL-Programm anhand der Dialogvorlage aus dem bekannten Tutorial beginnt, sieht das Laden des Anwendungsicons meist so aus:

Delphi-Quellcode:
  WM_INITDIALOG:
  begin
    SendMessage(hDlg, WM_SETICON, ICON_BIG,
      Integer(LoadIcon(hInstance, MAKEINTRESOURCE(100))));
    SendMessage(hDlg, WM_SETICON, ICON_SMALL,
      Integer(LoadIcon(hInstance, MAKEINTRESOURCE(100))));
    // [...]
  end;
Das PSDK sagt über WM_SETICON folgendes aus:
Zitat:
WM_SETICON Message

An application sends the WM_SETICON message to associate a new large or small icon with a window. The system displays the large icon in the ALT+TAB dialog box, and the small icon in the window caption.
So weit so gut. Das Problem ist nun, dass in der Titelleiste des Programms das große (32x32) Icon angezeigt wird. Besonders bei Icons mit wenigen Farben führt das dazu, dass es so zusammengestaucht wird, dass man kaum etwas vom Icon erkennen kann.
Bei VCL-Programmen funktioniert es jedoch so wie gewünscht, also muss der Fehler in der Programmierung und nicht im PSDK liegen.
Zur Verdeutlichung des Problems hab ich einen kleinen Screenshot hochgeladen. Im Explorer wird das richtige Icon (16x16) genommen, in der Titelleiste ist stattdessen die gestauchte 32x32-Version.

Vielleicht hat jemand eine Idee?
Miniaturansicht angehängter Grafiken
screenshot_782.gif  
Daniel Schuhmann
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: [NonVCL] Großes statt kleinem Programmicon in Titelleist

  Alt 17. Sep 2006, 09:54
Nun kommt es darauf an wie die Icons in der Resourcedatei vorliegen.

Und ich würd's dann so machen:

Delphi-Quellcode:
var
  AppIcon: HICON;

//...

  WM_INITDIALOG:
  begin
    Icon := LoadIcon(hInstance, MAKEINTRESOURCE(100));

    if SendMessage(hDlg, WM_SETICON, ICON_SMALL, Integer(AppIcon)) = 0 then
      SendMessage(hDlg, WM_SETICON, ICON_BIG, Integer(AppIcon));

    DestroyIcon(Icon);
    // [...]
  end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: [NonVCL] Großes statt kleinem Programmicon in Titelleist

  Alt 17. Sep 2006, 10:00
Der Befehl
LoadIcon(hInstance, MAKEINTRESOURCE(100)) lädt beides mal das 32x32-Icon aus deiner Ressource (die Standardauflösung).

Benutze für das kleine Icon die Funktion
LoadImage(hInstance, MAKEINTRESOURCE(100), IMAGE_ICON, 16, 16, 0) um das 16x16-Icon zu laden. Alternativ die 16 noch durch GetSystemMetrics(SM_CXSMICON / SM_CYSMICON) ersetzen.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Daniel Schuhmann
Daniel Schuhmann

Registriert seit: 16. Jul 2005
Ort: München
391 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [NonVCL] Großes statt kleinem Programmicon in Titelleist

  Alt 17. Sep 2006, 12:10
@Flocke: Wunderbar, funktioniert einwandfrei, vielen herzlichen Dank!
Miniaturansicht angehängter Grafiken
hurra_430.gif  
Daniel Schuhmann
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz