AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi IconHandle von Icon Datei
Thema durchsuchen
Ansicht
Themen-Optionen

IconHandle von Icon Datei

Ein Thema von EWeiss · begonnen am 25. Apr 2019 · letzter Beitrag vom 26. Apr 2019
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: IconHandle von Icon Datei

  Alt 25. Apr 2019, 23:33
Zitat:
Geht's denn beim ersten Aufruf von ExtractIconEx um die Ermittlung der Anzahl von Icons? Dann solltest du keinen Parameter für ein HICON übergeben.
Nein.. Es wird ein Icon für das Menu übergeben.. diese sind unterschiedlich.. hänge gleich mal einen Shot an.
Sorry ja dann dürfte das ausreichen oder?
If ExtractIconEx(AFileName, -1, HICON(nil^), HICON(nil^), 0) <> 0 then

Zitat:
ReportMemoryLeaksOnShutdown meldet nicht freigegebene Icons eben nicht, wie ich selber schon in einem ähnlichen Zusammenhang festgestellt habe.
Ja das war mein Problem habe nicht bedacht das ich so wie du bemerkt hast 2 Icons extrahiere.
Aber! Seltsam ist das schon denn die Icons liegen nur im Format 16x16 vor direkt von einem Icon File nicht aus einer EXE-Datei!
Habe auch im Taskmanager nicht feststellen können das sich der Speicher erhöht der blieb immer konstant.

Also das LDummy hätte eigentlich gar kein Icon ausgeben dürfen.
Weil kein Large Icon in der Icon Datei existiert.

Diese Icons werden addiert + die Icons für die Pfeile.
Danke nochmal für deine Hilfe.

Wenn ein Icon übergeben wird, wird dieses als Overlay auf den Button gezeichnet.
Delphi-Quellcode:
  if ImageIconPath <> 'then
   begin
     FIcon[ButtonCount].ImageIcon := GetHIconFromFile(ImageIconPath, true);
     if (FIcon[ButtonCount].ImageIcon <> 0) then
       btnMenu[ButtonCount].ImageDrop(HButton, FIcon[ButtonCount], X, Y, W, H);
   end;
und später mit
btnMenu[IntI].ImageDropRemove(btnMenu[IntI].Handle);

gelöscht..

gruss

Geändert von EWeiss ( 9. Jul 2019 um 08:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#2

AW: IconHandle von Icon Datei

  Alt 26. Apr 2019, 00:06
Nein.. Es wird ein Icon für das Menu übergeben.. diese sind unterschiedlich.. hänge gleich mal einen Shot an.
Die Intention der Funktion GetHIcon insgesamt ist mir schon klar. Es ging mir nur um den darin enthaltenen Aufruf if ExtractIconEx(..., -1, ...) <> 0 . Das eigentliche Extrahieren der Icons erfolgt ja erst danach in einem weiteren Aufruf von ExtractIconEx (sofern der erste Aufruf klappte).

Anders ausgedrückt: Sofern das erste ExtractIconEx klappt, rufst du es danach nochmals auf. Wenn man die Doku zu MSDN-Library durchsuchenExtractIconEx ganz genau nimmt, holen beide Aufrufe (der mit -1 als Index und der mit dem eigentlichen Index) jeweils ein Icon:
Zitat:
nIconIndex
If this value is a negative number and either phiconLarge or phiconSmall is not NULL, the function begins by extracting the icon whose resource identifier is equal to the absolute value of nIconIndex.
Leider ist aus der Doku nicht ersichtlich, ob auch ein Icon geholt wird, wenn man ExtractIconEx(AFileName, -1, Result, HICON(nil^), 0) ruft, also nIconIndex=-1 und nIcons=0, aber trotzdem ein Ziel (hier Result) angegeben wurde.

Zitat:
Habe auch im Taskmanager nicht feststellen können das sich der Speicher erhöht der blieb immer konstant.
Schau lieber auf die Anzahl der Handles, ggf. im Process Explorer bzw. Process Hacker.

Zitat:
Danke nochmal für deine Hilfe.
Keine Ursache. Ich wusste nur deshalb um das Problem, weil ich es selbst schon hatte .

Grüße
Dalai
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: IconHandle von Icon Datei

  Alt 26. Apr 2019, 00:09
Zitat:
Die Intention der Funktion GetHIcon insgesamt ist mir schon klar. Es ging mir nur um den darin enthaltenen Aufruf if ExtractIconEx(..., -1, ...) <> 0. Das eigentliche Extrahieren der Icons erfolgt ja erst danach in einem weiteren Aufruf von ExtractIconEx (sofern der erste Aufruf klappte).
Sorry hatte dich nicht richtig verstanden habe es oben editiert.. aber hier nochmal..
If ExtractIconEx(AFileName, -1, HICON(nil^), HICON(nil^), 0) <> 0 then

oder besser so!
If ExtractIconEx(AFileName, -1, -1, -1) <> 0 then




gruss

Geändert von EWeiss (26. Apr 2019 um 00:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#4

AW: IconHandle von Icon Datei

  Alt 26. Apr 2019, 00:19
Sorry hatte dich nicht richtig verstanden habe es oben editiert.. aber hier nochmal..
If ExtractIconEx(AFileName, -1, HICON(nil^), HICON(nil^), 0) <> 0 then
Ja, so meinte ich das.

Zitat:
oder besser so!
If ExtractIconEx(AFileName, -1, -1, -1) <> 0 then
Keine Ahnung, was dann passiert. Deutet die API die HICON-Parameter dann als NULL? Wäre ich mir nicht sicher genug, um es so zu benutzen.

Grüße
Dalai
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: IconHandle von Icon Datei

  Alt 26. Apr 2019, 00:24
Zitat:
Keine Ahnung, was dann passiert. Deutet die API die HICON-Parameter dann als NULL? Wäre ich mir nicht sicher genug, um es so zu benutzen.
Ich mache es wie im ersten Beispiel dann bin ich auf der sicheren Seite. Danke!

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#6

AW: IconHandle von Icon Datei

  Alt 26. Apr 2019, 00:27
Mir fällt gerade ein, dass es wohl gar nicht geht, eine Konstante (hier -1) als var -Parameter zu übergeben. Und die beiden HICON-Parameter von ExtractIconEx sind im Delphi als var deklariert. D.h. der Compiler müsste meckern, wenn 3x -1 übergeben wird.

Grüße
Dalai
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: IconHandle von Icon Datei

  Alt 26. Apr 2019, 00:38
Mir fällt gerade ein, dass es wohl gar nicht geht, eine Konstante (hier -1) als var -Parameter zu übergeben. Und die beiden HICON-Parameter von ExtractIconEx sind im Delphi als var deklariert. D.h. der Compiler müsste meckern, wenn 3x -1 übergeben wird.

Grüße
Dalai
JO denke ich auch war auch nur getippt und nicht getestet..

gruss
  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 16:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz