Immer wieder taucht im Forum die Frage auf, wie man ein eigenes Icon in einer MsgBox platzieren kann. Bis jetzt war die Antwort, dass es z.B. mit den Dabei gibt es insgesamt 3 API's, mit denen man eine MsgBox anzeigen lassen kann. Mit der API-Funktion MessageBoxIndirect können wir das Problem lösen. Und damit die MsgBox mit einem Ton daherkommt, nehmen wir auch noch die API-Funktion MessageBeep dazu. Einen kleinen Nachteil hat das Ganze allerdings. Das Icon wird nur in der kompilierten EXE-Datei angezeigt. Alles was wir nun brauchen ist ein Modul, eine Form mit einem Button (Command1) und einem Label (Label1) darauf, sowie eine Ressourcendatei, in die wir unser Icon als Iconressource auslagern. Fügen Sie nachfolgenden Code in das Modul ein: Option Explicit ' Benötigte API-Deklaration Public Declare Function MessageBoxIndirect Lib "user32.dll" _ Alias "MessageBoxIndirectA" ( _ lpMsgBoxParams As MSGBOXPARAMS) As Long ' Damit die MsgBox auch einen Ton von sich gibt... Public Declare Function MessageBeep Lib "user32" ( _ ByVal wType As Long) As Long Public Type MSGBOXPARAMS cbSize As Long ' Größe der Struktur in Bytes hwndOwner As Long ' Fensterhandle, dem die MsgBox zugeordnet ist hInstance As Long ' Instanzhandle der Anwendung, die die ' Iconressource beinhaltet, falls ein ' benutzerdefiniertes Icon angezeigt werden soll. lpszText As String ' Text,der in der MsgBox angezeigt werden soll lpszCaption As String ' Text der Titelleiste der MsgBox dwStyle As Long ' eine oder ein Kombination der dwStyle ' Konstanten, z.B. Art u. Anzahl der Buttons, ' eigenes Icon, Modalität etc. lpszIcon As Long ' der Name der Icon-Ressource dwContextHelpId As Long ' die HelpContextID, wenn der Help- Button mit ' angezeigt werden soll lpfnMsgBoxCallback As Long ' Adresse einer Funktion, die Ereignisse ' empfangen soll dwLanguageId As Long ' SprachID für Buttonbeschriftung. Ist die ' gewählte Sprache nicht installiert, wird ' die Standardsystemsprache verwendet End Type ' MessageBoxIndirect Rückgabe-Konstanten: können nach Klick auf ' einen Button abgefragt werden Public Const IDABORT = 3 ' Beenden wurde gewählt Public Const IDCANCEL = 2 ' Abbrechen wurde gewählt Public Const IDIGNORE = 5 ' Ignorieren wurde gewählt Public Const IDNO = 7 ' Nein wurde gewählt Public Const IDOK = 1 ' OK wurde gewählt Public Const IDRETRY = 4 ' Wiederholen wurde gewählt Public Const IDYES = 6 ' Ja wurde gewählt ' dwStyle-Konstanten Public Const MB_ABORTRETRYIGNORE = &H2 ' Abbrechen, Wiederholen, Weiter Public Const MB_HELP = &H4000 ' Hilfe: wird nur in Verbindung ' mit einem anderen Button angezeigt Public Const MB_OK = &H0 ' OK Public Const MB_OKCANCEL = &H1 ' OK, Abbrechen Public Const MB_RETRYCANCEL = &H5 ' Wiederholen, Abbrechen Public Const MB_YESNO = &H4 ' Ja, Nein Public Const MB_YESNOCANCEL = &H3 ' Ja, Nein, Abbrechen Public Const MB_ICONERROR = &H10 ' Fehler Symbol Public Const MB_ICONEXCLAMATION = &H30 ' Ausrufezeichen Symbol Public Const MB_ICONINFORMATION = &H40 ' Informations Symbol Public Const MB_ICONQUESTION = &H20 ' Fragezeichen Symbol Public Const MB_DEFBUTTON1 = &H0 ' Standardbutton ist Button 1 Public Const MB_DEFBUTTON2 = &H100 ' Standardbutton ist Button 2 Public Const MB_DEFBUTTON3 = &H200 ' Standardbutton ist Button 3 Public Const MB_DEFBUTTON4 = &H300 ' Standardbutton ist Button 4 Public Const MB_APPLMODAL = &H0 ' Messagebox modal zum Programm anzeigen Public Const MB_SYSTEMMODAL = &H1000 ' Messagebox modal zum System anzeigen Public Const MB_TASKMODAL = &H2000 ' Messagebox modal zum Thread anzeigen Public Const MB_DEFAULT_DESKTOP_ONLY = &H20000 ' (WinNT/2000) die Dialogbox wird ' nur auf dem Standard Desktop ' angezeigt Public Const MB_RIGHT = &H80000 ' Der Text wird rechts ausgerichtet Public Const MB_RTLREADING = &H100000 ' Richtet die Schrift der Dialogbox von ' rechts nach links, falls dies der ' Systemstandard ist Public Const MB_SETFOREGROUND = &H10000 ' Die Messagebox wird in den ' Vordergrund gebracht. Public Const MB_USERICON = &H80& ' (MSGBOXPARAMS) Legt fest, dass ein ' benutzerdefiniertes Icon angezeigt ' werden soll Public Const MB_TOPMOST = &H40000 ' MsgBox wird als 1. in der Z-Order- ' Reihenfolge angezeigt ' dwLanguageId-Konstanten Public Const LANG_BULGARIAN = &H2 Public Const LANG_CHINESE = &H4 Public Const LANG_CROATIAN = &H1A Public Const LANG_CZECH = &H5 Public Const LANG_DANISH = &H6 Public Const LANG_DUTCH = &H13 Public Const LANG_ENGLISH = &H9 Public Const LANG_FINNISH = &HB Public Const LANG_FRENCH = &HC Public Const LANG_GERMAN = &H7 Public Const LANG_GREEK = &H8 Public Const LANG_HUNGARIAN = &HE Public Const LANG_ICELANDIC = &HF Public Const LANG_ITALIAN = &H10 Public Const LANG_JAPANESE = &H11 Public Const LANG_KOREAN = &H12 Public Const LANG_NEUTRAL = &H0 Public Const LANG_NORWEGIAN = &H14 Public Const LANG_POLISH = &H15 Public Const LANG_PORTUGUESE = &H16 Public Const LANG_ROMANIAN = &H18 Public Const LANG_RUSSIAN = &H19 Public Const LANG_SLOVAK = &H1B Public Const LANG_SLOVENIAN = &H24 Public Const LANG_SPANISH = &HA Public Const LANG_SWEDISH = &H1D Public Const LANG_TURKISH = &H1F Public Const SUBLANG_CHINESE_HONGKONG = &H1D Public Const SUBLANG_CHINESE_SIMPLIFIED = &H2 Public Const SUBLANG_CHINESE_SINGAPORE = &H4 Public Const SUBLANG_CHINESE_TRADITIONAL = &H1 Public Const SUBLANG_DEFAULT = &H1 Public Const SUBLANG_DUTCH = &H1 Public Const SUBLANG_DUTCH_BELGIAN = &H2 Public Const SUBLANG_ENGLISH_AUS = &H3 Public Const SUBLANG_ENGLISH_CAN = &H4 Public Const SUBLANG_ENGLISH_EIRE = &H6 Public Const SUBLANG_ENGLISH_NZ = &H5 Public Const SUBLANG_ENGLISH_UK = &H2 Public Const SUBLANG_ENGLISH_US = &H1 Public Const SUBLANG_FRENCH = &H1 Public Const SUBLANG_FRENCH_BELGIAN = &H2 Public Const SUBLANG_FRENCH_CANADIAN = &H3 Public Const SUBLANG_FRENCH_SWISS = &H4 Public Const SUBLANG_GERMAN = &H1 Public Const SUBLANG_GERMAN_AUSTRIAN = &H3 Public Const SUBLANG_GERMAN_SWISS = &H2 Public Const SUBLANG_ITALIAN = &H1 Public Const SUBLANG_ITALIAN_SWISS = &H2 Public Const SUBLANG_NEUTRAL = &H0 Public Const SUBLANG_NORWEGIAN_BOKMAL = &H1 Public Const SUBLANG_NORWEGIAN_NYNORSK = &H2 Public Const SUBLANG_PORTUGUESE = &H2 Public Const SUBLANG_PORTUGUESE_BRAZILIAN = &H1 Public Const SUBLANG_SPANISH = &H1 Public Const SUBLANG_SPANISH_MEXICAN = &H2 Public Const SUBLANG_SPANISH_MODERN = &H3 Public Const SUBLANG_SYS_DEFAULT = &H2 Und jetzt der Aufruf und die Auswertung in der Form: Private Sub Command1_Click() Dim MsgResult As Long Dim MsgPar As MSGBOXPARAMS ' Mesagbox-Eigenschaften setzen ' Das Icon wird in der IDE NICHT angezeigt! With MsgPar .cbSize = Len(MsgPar) .dwLanguageId = (SUBLANG_GERMAN * 1024) Or LANG_GERMAN ' MB_TOPMOST besser als MB_SYSTEMMODAL .dwStyle = MB_YESNOCANCEL Or MB_TOPMOST Or MB_USERICON .hInstance = App.hInstance .hwndOwner = Me.hWnd .lpszCaption = "hier steht der Text der Titelleiste" .lpszText = "... und hier der Text der MsgBox." & vbNewLine & "" & _ vbNewLine & "Beachten Sie, dass das Icon nur in der" & vbNewLine & _ "kompilierten .exe dargestellt wird!" .lpszIcon = 101 ' Name einer Icon-Ressource ' wird erst in der .exe angezeigt .lpfnMsgBoxCallback = 0 End With ' MsgBox-Beep erzeugen MessageBeep MB_ICONINFORMATION ' MessageBox aufrufen MsgResult = MessageBoxIndirect(MsgPar) ' MessageBox auswerten und in Label anzeigen If MsgResult = IDYES Then Label1.Caption = "Ja wurde gewählt" ElseIf MsgResult = IDNO Then Label1.Caption = "Nein wurde gewählt" ElseIf MsgResult = IDCANCEL Then Label1.Caption = "Abbrechen wurde gewählt" End If End Sub Dieser Tipp wurde bereits 24.090 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevWizard für VB5/6 ![]() Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats ![]() Dieter Otter sevTabStrip: Rechtsklick auf Reiter erkennen Eine Funktion, mit der sich prüfen lässt, auf welchen Tab-Reiter ein Mausklick erfolgte TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |