Thema Datum  Von Nutzer Rating
Antwort
30.12.2020 14:01:09 Gast91257
NotSolved
30.12.2020 14:10:49 Mackie
NotSolved
30.12.2020 14:35:41 volti
NotSolved
Blau MsgBox mit eigenem Icon und eigener Buttonbeschriftung anzeigen
30.12.2020 14:39:38 volti
NotSolved
30.12.2020 14:56:21 Gast64367
NotSolved

Ansicht des Beitrags:
Von:
volti
Datum:
30.12.2020 14:39:38
Views:
525
Rating: Antwort:
  Ja
Thema:
MsgBox mit eigenem Icon und eigener Buttonbeschriftung anzeigen

Sorry,

das war wohl zu viel für die Forums-Software:

Code:
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
' Excel-MsgBox mit eigenem Button und Icon aus Ico-Datei versehen
Private Declare PtrSafe Function SetTimer Lib "user32" ( _
        ByVal hwnd As LongPtrByVal nIDEvent As LongPtr, _
        ByVal uElapse As LongByVal lpTimerFunc As LongPtrAs LongPtr
Private Declare PtrSafe Function KillTimer Lib "user32" ( _
        ByVal hwnd As LongPtrByVal nIDEvent As LongPtrAs Long
Private Declare PtrSafe Function FindWindowA Lib "user32" ( _
        ByVal lpClassName As StringByVal lpWindowName As StringAs LongPtr
Private Declare PtrSafe Function SetDlgItemTextA Lib "user32" ( _
        ByVal hDlg As LongPtrByVal nIDDlgItem As LongByVal lpString As StringAs Long
Private Declare PtrSafe Function LoadImageA Lib "user32" ( _
        ByVal hInst As LongPtrByVal lpsz As String, _
        ByVal un1 As LongByVal n1 As LongByVal n2 As LongByVal un2 As LongAs LongPtr
Private Declare PtrSafe Function SendDlgItemMessageA Lib "user32" ( _
        ByVal hDlg As LongPtrByVal nIDDlgItem As LongByVal wMsg As Long, _
        ByVal wParam As LongPtrByVal lParam As LongPtrAs LongPtr
        
Dim hTimer As LongPtr
Dim gsPfad  As String, gsCaption As String, sBtns(5As String

Function MsgBoxEx(sText As StringOptional sBtnText As String = "OK", _
         Optional ByVal vbStyle As LongOptional sCaption As String, _
         Optional sIconPfad As StringAs String
  Dim sBtnArr() As String, iOffset As Integer
  
  gsCaption = sCaption: gsPfad = sIconPfad              ' Parameter global setzen
  
  vbStyle = vbStyle And &HFFFF8                         ' Buttonteil abtrennen
  sBtnArr = Split(sBtnText, ",")
  Select Case UBound(sBtnArr)                           ' Buttonstyle setzen
  Case 0: vbStyle = vbStyle Or vbOKOnly:   sBtns(2) = sBtnArr(0): iOffset = 1
  Case 1: vbStyle = vbStyle Or vbOKCancel: sBtns(1) = sBtnArr(0): sBtns(2) = sBtnArr(1)
  Case 2: vbStyle = vbStyle Or vbAbortRetryIgnore:
          sBtns(3) = sBtnArr(0): sBtns(4) = sBtnArr(1): sBtns(5) = sBtnArr(2)
  End Select
  
  hTimer = SetTimer(0&0&25AddressOf SetIconButtontext)
  MsgBoxEx = Replace(sBtns(MsgBox(sText, vbStyle, gsCaption) + iOffset), "&", "")
End Function

Private Sub SetIconButtontext()
' Setzt die Button-Texte und das Icon individuell
  Dim hwnd As LongPtr, iBtn As Integer

  KillTimer 0&, hTimer                                  ' Timer löschen
  hwnd = FindWindowA("#32770", gsCaption)               ' Handle der DlgBox ermitteln
' &H170=STM_SETICON,  &H1=IMAGE_ICON,  40=Breite, Höhe,  &H10=LR_LOADFROMFILE
  If gsPfad <> "" Then _
  SendDlgItemMessageA hwnd, 20&H170LoadImageA(0&, gsPfad, &H14040&H10), 0
  For iBtn = 1 To 5SetDlgItemTextA hwnd, iBtn, sBtns(iBtn): Next iBtn

End Sub


Sub Aufruftest()
  MsgBox (MsgBoxEx("Bitte wähle die Schlumpfaktion aus!", "Schlumpfe &aus,Schlumpfe &ein", _
          vbInformation, "Schlumpftest", "C:\ControlApp\schlumpf.ico"))
End Sub
 
_________
viele Grüße
Karl-Heinz

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
30.12.2020 14:01:09 Gast91257
NotSolved
30.12.2020 14:10:49 Mackie
NotSolved
30.12.2020 14:35:41 volti
NotSolved
Blau MsgBox mit eigenem Icon und eigener Buttonbeschriftung anzeigen
30.12.2020 14:39:38 volti
NotSolved
30.12.2020 14:56:21 Gast64367
NotSolved