AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Icons aus MessageBox in eigenem Dialog verwenden?
Thema durchsuchen
Ansicht
Themen-Optionen

Icons aus MessageBox in eigenem Dialog verwenden?

Ein Thema von Whookie · begonnen am 4. Jun 2007 · letzter Beitrag vom 29. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#1

Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 4. Jun 2007, 16:38
Gibt es eine Möglichkeit, die Icons aus der MessageBox (zb.: MB_ICONEXCLAMATION) in einem
eigenen Dialog zu verwenden?

TIA
Whookie
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#2

Re: Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 4. Jun 2007, 16:45
Einerseits könnte man diese zur Laufzeit direkt aus der entsprechenden Shell-Bibliothek "holen"... andererseits hat imho Microsoft für Vista angekündigt, daß dieses Verhalten nicht mehr benutzt werden sollte.

Schau mal in die Unit Dialogs, wie MessageDlg das macht, vielleicht taugt das ja auch was für Dich...
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#3

Re: Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 4. Jun 2007, 23:46
Moin!

Guck Dir MSDN-Library durchsuchenLoadIcon an:

Code:
Value   Description
IDI_APPLICATION   Default application icon.
IDI_ASTERISK   Asterisk (used in informative messages).
IDI_EXCLAMATION   Exclamation point (used in warning messages).
IDI_HAND   Hand-shaped icon (used in serious warning messages).
IDI_QUESTION   Question mark (used in prompting messages).
IDI_WINLOGO   Windows logo.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 5. Jun 2007, 10:37
Tja, so einfach kann das sein:

Delphi-Quellcode:
procedure TOKRightDlg.FormCreate(Sender: TObject);
begin
  Image1.Picture.Icon.Handle := LoadIcon(0, IDI_HAND);
end;
Danke nochmals für den Hinweis! Auf MSDN habe ich allerdings keinen Hinweis darauf gefunden, das diese Funktion nicht mehr verwendet werden soll. Gibts dazu Konkretes?
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 5. Jun 2007, 11:06
Zitat von Whookie:
Auf MSDN habe ich allerdings keinen Hinweis darauf gefunden, das diese Funktion nicht mehr verwendet werden soll. Gibts dazu Konkretes?


Hi Whookie,

ich denke CCRDude meint, dass man die Icons nicht mehr aus der jeweiligen Shell holen sollte, sondern über den Weg, den Du gezeigt hast.

Zitat:
Einerseits könnte man diese zur Laufzeit direkt aus der entsprechenden Shell-Bibliothek "holen"... andererseits hat imho Microsoft für Vista angekündigt, daß dieses Verhalten nicht mehr benutzt werden sollte.
[edit]Es heißt CCRDude, nicht CRCDude *g*[/edit]

[edit2]Erklärung falsch, siehe CCRDude eins drunter[/edit2]
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#6

Re: Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 5. Jun 2007, 11:12
Hier steht schon ein kurzes Do und Don't-Do: MSDN: Using Icons

Lustig da, daß das MS-Beispiel selber noch LoadIcon verwendet; denn das soll man eben nicht mehr direkt verwenden, stattdessen lieber LoadImage, wie hier zu finden ist: MSDN: LoadIcon (siehe Hinweis oben sowie unten in den Kommentaren).
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#7

Re: Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 25. Apr 2008, 23:09
Zitat:
...denn das soll man eben nicht mehr direkt verwenden, stattdessen lieber LoadImage, wie hier zu finden ist: MSDN: LoadIcon (siehe Hinweis oben sowie unten in den Kommentaren).
Tja und daran wollte ich mich auch halten, aber irgend etwas ist hier falsch, denn ich bekomme kein Handle zurück (hndl bleibt 0):
  hndl := LoadImage(HInstance, IDI_QUESTION, IMAGE_ICON,0,0,LR_DEFAULTSIZE); Nutze ich aber:
hndl := LoadIcon(0, IDI_QUESTION); dann klappt es. Also was ist oben falsch ???
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#8

Re: Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 27. Apr 2008, 22:27
Abend!

Zitat von OG Karotte:
Also was ist oben falsch ???
Alle guten Dinge sind 3

1. Kein Instanz Handle setzen
2. Nicht die Icon Konstanten von LoadIcon verwenden
3. Die gewünschte Icon Konstante als Low Order Word übergeben

Langer Rede, kurzes Beispiel:

Application.Icon.Handle:=LoadImage(0, MakeIntResource(OIC_QUES), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE or LR_SHARED); Die Konstanten (OIC_QUES, etc.) finden sich in der Windows.pas

Mfg, Sun
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 28. Apr 2008, 07:25
Zitat von Sunlight7:
1. Kein Instanz Handle setzen
Weil sonst sucht er die Icon-Ressource in der Exe-Datei.

Zitat:
2. Nicht die Icon Konstanten von LoadIcon verwenden
Hm. Warum das?

Zitat:
3. Die gewünschte Icon Konstante als Low Order Word übergeben
Warum das?

Ich meine, ich hätte das auch schon mal auf den "normalen" weg geschafft.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#10

Re: Icons aus MessageBox in eigenem Dialog verwenden?

  Alt 28. Apr 2008, 16:52
Zitat von Luckie:
Hm. Warum das?
Um sauber zu bleiben, die Konstanten von LoadImage haben andere Namen.

Zitat von Luckie:
Warum das?
Frag Billy

Zitat von MSDN:
Parameters

...

lpszName

Identifies the image to load.
...
If hinst is NULL and LR_LOADFROMFILE is not specified, the low-order word of this parameter must be the identifier of the OEM image to load. The OEM image identifiers are defined in WINUSER.H and have the following prefixes:

Prefix Meaning
OBM_ OEM bitmaps
OIC_ OEM icons
OCR_ OEM cursors
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:45 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