Rubrik: Grafik und Font · Bilder & Icons | VB-Versionen: VB4, VB5, VB6 | 13.07.07 |
Systemspezifische MsgBox-Symbole ermitteln und anzeigen Mit diesem Code lassen sich die systemspezifischen MsgBox-Symbol ermitteln und bspw. in einer PictureBox anzeigen. | ||
Autor: Dieter Otter | Bewertung: | Views: 11.900 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Sicher haben Sie auch schon bemerkt, dass die Symbole in der VB Standard-MsgBox nicht unter allen Windows-Versionen gleich aussehen. Die Symbole für das Info-, Frage oder auch Ausrufezeichen variieren von Windows-Version zu Windows-Version. Nachfolgender Code zeigt, wie Sie diese Symbole selbst verwenden können - und zwar immer exakt die Symbole, wie sie auch Windows verwendet. Wenn Sie bspw. Ihre eigene MessageBox-Form verwenden können Sie mit Hilfe dieses Tipps die "richtigen" Warn- und Infosymbole anzeigen.
Fügen Sie nachfolgenden Code in ein Modul:
Option Explicit ' Benötigte API-Deklarationen Private Declare Function LoadSystemIcon Lib "user32" _ Alias "LoadIconA" ( _ ByVal hInstance As Long, _ ByVal nIcon As Long) As Long Private Declare Function DrawIcon Lib "user32" ( _ ByVal hDC As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal hIcon As Long) As Long ' Symbol-Aufzählung Public Enum eSystemIconID IDI_APPLICATION = 32512& IDI_ASTERISK = 32516& IDI_EXCLAMATION = 32515& IDI_HAND = 32513& IDI_QUESTION = 32514& End Enum
Public Sub DrawSystemIcon(ByVal hDC As Long, _ ByVal nID As eSystemIconID) ' System-Icon anzeigen Dim nHandle As Long nHandle = LoadSystemIcon(0&, nID) DrawIcon hDC, 0, 0, nHandle End Sub
Anwendungsbeispiel:
Platzieren Sie auf die Form ein PictureBox-Control, um darin das gewünschte Systemsymbol anzuzeigen. Daneben platzieren Sie ein ComboBox-Control mit der Eigenschaft "Style = 2 - DropDownListe".
Im Form_Load Ereignis wird die Größe der PictureBox autom. auf 32x32 Pixel gesetzt, sowie die AutoRedraw-Eigenschaft auf True festgelegt, damit das Symbol später auch angezeigt wird.
Die ComboBox dient zur Auswahl des anzuzeigenden Symbols.
Private Sub Form_Load() ' Größe der PictureBox auf 32x32 Pixel festlegen With Picture1 .BorderStyle = 0 .Width = 32 * Screen.TwipsPerPixelX .Height = 32 * Screen.TwipsPerPixelY .AutoRedraw = True End With ' ComboBox mit Symbol-Auswahl With Combo1 .AddItem "Anwendung" .ItemData(.NewIndex) = eSystemIconID.IDI_APPLICATION .AddItem "Infosymbol" .ItemData(.NewIndex) = eSystemIconID.IDI_ASTERISK .AddItem "Ausrufesymbol" .ItemData(.NewIndex) = eSystemIconID.IDI_EXCLAMATION .AddItem "Kritischsymbol" .ItemData(.NewIndex) = eSystemIconID.IDI_HAND .AddItem "Fragesymbol" .ItemData(.NewIndex) = eSystemIconID.IDI_QUESTION .ListIndex = 0 End With End Sub
Private Sub Combo1_Click() ' Icon anzeigen With Picture1 .Cls DrawSystemIcon Picture1.hDC, Combo1.ItemData(Combo1.ListIndex) End With End Sub