Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Info-Icon für MessageDlg auslesen - Windows 8 (https://www.delphipraxis.net/181015-info-icon-fuer-messagedlg-auslesen-windows-8-a.html)

BlueStarHH 8. Jul 2014 11:17

Info-Icon für MessageDlg auslesen - Windows 8
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich möchte das blaue Standard-Info-Icon, das in MessageDialogen verwendet wird auslesen. Bisher habe ich das immer so gemacht:

Delphi-Quellcode:
iIcon.Picture.Icon.Handle := LoadIcon(0, IDI_INFORMATION);
Das funktionierte immer. Unter Windows 8 wird jedoch das falsche Icon zurückgeben: Es kommt das Icon im alten Style und nicht im neuen Windows 8 Stil. Bildschirmfoto dazu im Screenshot.

Wie kann ich das richtige Icon auslesen?

fred.ahrens 8. Jul 2014 12:38

AW: Info-Icon für MessageDlg auslesen - Windows 8
 
Hallo,

vielleicht hilft Dir dieser Beitrag weiter: http://blogs.embarcadero.com/pawelgl...10/05/31/39072
Am Ende gibt es auch einen Link zu einem Codebeispiel.

Fred

DeddyH 8. Jul 2014 12:51

AW: Info-Icon für MessageDlg auslesen - Windows 8
 
Oder evtl. so (ab Vista)?
Delphi-Quellcode:
uses ShellAPI;

procedure TFormDings.SomeProc(Sender: TObject);
var
  Info: SHSTOCKICONINFO;
begin
  ZeroMemory(@Info, SizeOf(Info));
  Info.cbSize := SizeOf(Info);
  if SHGetStockIconInfo(SIID_INFO, SHGSI_ICON, Info) = S_OK then
    Image1.Picture.Icon.Handle := Info.hIcon;
end;

Luckie 9. Jul 2014 00:38

AW: Info-Icon für MessageDlg auslesen - Windows 8
 
Reine Neugier: Wozu brauchst du das?

BlueStarHH 9. Jul 2014 06:57

AW: Info-Icon für MessageDlg auslesen - Windows 8
 
Danke an alle. Das klappt mit den vorgestellten Lösungen!

Ich habe einen eigenen Info-Dialog erstellt, der so aussehen soll, wie die Standarddialoge. Dort sind z.B. Radiobuttons und Editfelder zusätzlich vorhanden.

Luckie 9. Jul 2014 12:19

AW: Info-Icon für MessageDlg auslesen - Windows 8
 
Du fängst also den Dialog von Windows ab, unterdrückst ihn und zeigst deinen eigenen an mit zusätzlichen Elementen?

BlueStarHH 9. Jul 2014 12:39

AW: Info-Icon für MessageDlg auslesen - Windows 8
 
Zitat:

Zitat von Luckie (Beitrag 1264934)
Du fängst also den Dialog von Windows ab, unterdrückst ihn und zeigst deinen eigenen an mit zusätzlichen Elementen?

Nein, noch simpler: Es ist ein neues TForm. Es wird einfach mit ShowModal aufgerufen. Kein Abfangen von irgendwas, modifizieren der Standarddialoge oder ähnliches.

himitsu 9. Jul 2014 12:48

AW: Info-Icon für MessageDlg auslesen - Windows 8
 
Du könntest natürlich auch mal in Units wie der Dialogs umsehen und z.B. den TTaskDialog/TCustomTaskDialog oder CreateMessageDialog verwenden, um dort deine "zusätzlichen" Controls einzubauen,

anstatt den "Zusätzliches" als Grundsystem zu verwenden und da dann das Standardverhalten nachträglich zu integrieren. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 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