Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hallo nepumuk

Hallo nepumuk
Ron
Hallo nepumuk,
ich habe eine ganz spezielle Frage an dich und ich hoffe, dass du dich bei mir meldest.
Ich habe von dir den Code hier im Forum gefunden der den Rahmen um die Userform weg macht.
ich habe den beim mir hier in dieser Datei https://www.herber.de/bbs/user/71598.xls
eingebunden.
Jetzt habe ich 2 Problem.
Erstes! ich verstehen den Code kaum da ich mit den Variablen und Werten noch überhaupt nichts zu tun hatte. Könntest du mir den VBA Code ein wenig kommentieren damit ich die einzelnen Schritte bzw. Befehle genau verstehe? Danke schon mal dafür.
Zweites! Unter meinem Bild entsteht immer ein grauer Rahmen. Warum? Welche Variabel bzw was müsste ich im Code anpassen.
Bitte hilf mir Nepumuk. Vielen Dank.
Gruß Ron

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Hallo nepumuk
19.09.2010 09:28:27
Nepumuk
Hallo,
zu 2. Das kommt daher, dass die API-Funktionen die Titelleiste überschreiben. Damit wird die Fläche des Userform um diesen Teil höher. Den müssen wir wieder abziehen.
zu 1.
' **********************************************************************
' Modul: Splash Typ: Userform
' **********************************************************************

Option Explicit

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32.dll" ( _
    ByVal hWnd As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
    ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByRef lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32.dll" () As Long

Private Const GC_CLASSNAMEMSEXCELFORM = "ThunderDFrame"
Private Const GWL_STYLE = -16
Private Const WS_CAPTION = &HC00000
Private Const HTCAPTION = 2
Private Const WM_NCLBUTTONDOWN = &HA1

Private hWndForm As Long

Private Sub BTN_Continue_Click()
    Unload Me
End Sub

Private Sub UserForm_Activate()
    'suche das Handle des Userforms
    hWndForm = FindWindow(GC_CLASSNAMEMSEXCELFORM, Me.Caption)
    If hWndForm <> 0 Then
        'SetWindowLong = Setze ein Attribut in den Windowspeicher des Userforms
        'GetWindowLong = Lese das Attribut des Windowspeichers des Userforms
        SetWindowLong hWndForm, GWL_STYLE, GetWindowLong(hWndForm, GWL_STYLE) And Not WS_CAPTION
        'Erstelle die Menübar des Fensters neu
        DrawMenuBar hWndForm
        'Von der ursprünglichen Höhe des Userforms die Höhe der Titelleiste abziehen
        Height = Height - 12
    End If
End Sub

Private Sub UserForm_MouseDown(ByVal Button As Integer, _
        ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    If Button = 1 Then
        'Stelle die normale Maus-Input Verarbeitung wieder her
        ReleaseCapture
        'Setze die Mausfunktion zum verschieben auf das gesamte Fenster des Userforms
        SendMessage hWndForm, WM_NCLBUTTONDOWN, HTCAPTION, 0&
    End If
End Sub

Die Verschiebbarkeit des Userforms funktioniert aber bei dir nicht mehr, das die gesamte Fläche durch das Image überdeckt wird und ich keine Möglichkeit habe ein Handle eines Image-Controls aus der FM20.dll zu ermitteln. Warum bettest du das Bild eigentlich nicht direkt in das Userform ein, wenn es sowieso die gesamte Fläche füllt?
Gruß
Nepumuk
Anzeige
AW: Hallo nepumuk
19.09.2010 22:04:21
Ron
Hallo Nepumuk,
vielen Dank erst einmal für deine Rückmeldung und den entscheidenen Tipp die Grafik direkt in die Userform einzubinden. Manchmal liegt "das Gute" so nah. Darauf bin ich irgendwie nicht gekommen. Ich habe bis heute immer mit den Image-Controls gearbeitet. Das war es. Nun funktioniert der Splash so wie ich das wolle.
Danke nochmal.
Gruß Ron

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige