Tipp 0221 UserForm mit Icon in der Titelleiste
Autor/Einsender:
Datum:
  Angie
09.04.2002
Entwicklungsumgebung:   Excel 97
Auch in der Titelleiste einer UserForm ist es möglich, mit Hilfe von API-Funktionen ein Icon anzuzeigen. In diesem Beispiel wurde das Icon als Bild (Picture) bereits im Designmodus einem Image-Steuerelement (Anzeige-) zugewiesen.
Code im Codebereich der UserForm
 
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias _
      "FindWindowA" (ByVal lpClassName As String, ByVal _
      lpWindowName As String) As Long

Private Declare Function GetWindowLong Lib "user32" Alias _
      "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex _
      As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias _
      "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex _
      As Long, ByVal dwNewLong As Long) As Long

Private Declare Function SendMessage Lib "user32" Alias _
      "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
      ByVal wParam As Integer, ByVal lParam As Long) As Long

Private Declare Function DrawMenuBar Lib "user32" (ByVal _
      hWnd As Long) As Long

Private Const GWL_STYLE As Long = -16
Private Const GWL_EXSTYLE As Long = (-20)
Private Const WS_EX_DLGMODALFRAME As Long = &H1
Private Const WM_SETICON = &H80

Private hWndForm As Long
Private bIcon As Boolean

Private Sub UserForm_Initialize()
  imgIcon.Visible = False

  If Val(Application.Version) >= 9 Then
    hWndForm = FindWindow("ThunderDFrame", Me.Caption)
  Else
    hWndForm = FindWindow("ThunderXFrame", Me.Caption)
  End If

  bIcon = True
  ChangeIcon
  SetUserFormStyle
End Sub

Private Sub SetUserFormStyle()
  Dim frmStyle As Long

  If hWndForm = 0 Then Exit Sub

  frmStyle = GetWindowLong(hWndForm, GWL_EXSTYLE)

  If bIcon Then
    frmStyle = frmStyle And Not WS_EX_DLGMODALFRAME
  Else
    frmStyle = frmStyle Or WS_EX_DLGMODALFRAME
  End If

  SetWindowLong hWndForm, GWL_EXSTYLE, frmStyle

  DrawMenuBar hWndForm
End Sub

Private Sub ChangeIcon()
  Dim hIcon As Long

  On Error Resume Next
  If hWndForm <> 0 Then
    If bIcon Then
      hIcon = imgIcon.Picture
    Else
      hIcon = 0
    End If
    SendMessage hWndForm, WM_SETICON, True, hIcon
    SendMessage hWndForm, WM_SETICON, False, hIcon
  End If
End Sub

Private Sub optIconOn_Click()
  bIcon = True
  ChangeIcon
  SetUserFormStyle
End Sub

Private Sub optIconOff_Click()
  bIcon = False
  ChangeIcon
  SetUserFormStyle
End Sub
 
Links zum Thema
UserForm minimieren/maximieren
UserForm ohne Titelleiste anzeigen
UserForm Schließen-Schaltfläche deaktivieren
UserForm Schließen-Schaltfläche entfernen
UserForm ungebunden anzeigen
UserForm verschieben verhindern
Hinweis
Die im Download befindliche *.frm-Datei kann für Word und PowerPoint im jeweiligen Programm im VB-Editor importiert werden.

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
Anwendung/VBA-Version
Access 97
Access 2000
Access XP
Access 2003
Access 2007
Access 2010
Excel 97
Excel 2000
Excel XP
Excel 2003
Excel 2007
Excel 2010
Word 97
Word 2000
Word XP
Word 2003
Word 2007
Word 2010
PPT 97
PPT 2000
PPT XP
PPT 2003
PPT 2007
PPT 2010
Outlook 97
Outlook 2000
Outlook XP
Outlook 2003
Outlook 2007
Outlook 2010


Download  (15,8 kB) Downloads bisher: [ 2352 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 31. Mai 2011