Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1788to1792
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

Zoom Frame mit WMP in Userform Flackern

Zoom Frame mit WMP in Userform Flackern
21.10.2020 07:06:59
Andrea
Hallo Gemeinde, wieder mal nächtelang rauf und runter gesucht. Deshalb meine Frage.
Habe eine Windowsmediaplayer auf einer Userform2 in Frame1. Frame1 befindet sich in Frame2, da ich ab und zu den Bildausschnitt des Frames1 verändern/verschieben/vergrößern/verkleinern möchte.
Mit Scrollbar1 verändere ich den Zoomfaktor des Frames1 und somit die Größe des WMP-Standbilds. Funktioniert auch soweit gut. Nun ist meine Frage: Wie kann ich beim Zoomen des Frames1 das aktuelle WMP-Standbild (WMP wird vorher per Pause angehalten) im Frame1 für die Zeit des Zoomens (Millisec. mit ständigem Aktualisieren) einfrieren? Jeder kleine Zoomschritt wird ja sichtbar neu berechnet und mit störendem Flackern angezeigt.
Ich hab's jetzt probiert mit folgenden Varianten:
- .Frame1.visible = false/ nach zoom true... (flackert zwar auch noch aber nicht mehr so doll, sieht trotzdem nicht so schön aus).
- .Frame2.visible = false... (flackert ebenfalls ein bisschen /grauer Hintergrund des Userforms wird bei beiden Varianten kurz sichtbar)
- Application.ScreenUpdating = False.... vor Zoomberechnung bringt nichts - WMP-Bild im Frame1 wird trotzdem beim Zoomen gezeigt und sehr unruhig verändert.
- 2. Userform mit identischen WMP-Player (aus Hintergrund für Zeit des Zoomens per Show nach vorne holen, funktioniert zwar, Scrollbar gerät aber ins Stocken (vielleicht zu viel Rechnerei, denn die 2. Userform muss ja danach auch angepasst werden und der Vorgang müsste sich ja ständig wiederholen)
- Screenshort.Bild erstellen und im Frame1/oder Frame2.Picture für die Zeit des Zoomens permanent aktualisieren/löschen ...Hm?
Stecke also da jetzt aktuell fest - bräuchte dafür also Hilfe - aber kann mir vorstellen, dass das auch letztendlich Kapazitäten verbraucht und die Scrollbar, bzw. das Scroll-Event mit dem permanenten Austausch (StandBild.Picture, WMP, Standbild.Picture. WMP .... usw.) ins Stocken gerät?
Es sind viele Überlegungen und vielleicht befinde ich mich mit meinen bescheidenen Kenntnissen auf dem absoluten Holzweg und es gibt eine viel simplere Lösung. Also bitte nicht schimpfen. Der Code ist schon etwas durcheinandergeraten. Es funktioniert ja bisher gut, aber könnte doch etwas schöner aussehen beim WMP-Zoom-Scrollen.
Ich danke Euch für die freundliche Hilfe.
Viele Grüße Andrea

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zoom Frame mit WMP in Userform Flackern
21.10.2020 10:05:22
Nepumuk
Hallo Andrea,
teste mal folgendes im Modul deines UserForms:
Option Explicit

Private Declare PtrSafe Function FindWindowA Lib "user32.dll" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function LockWindowUpdate Lib "user32.dll" ( _
    ByVal hwndLock As LongPtr) As Long

Private Const GC_CLASSNAMEUSERFORM As String = "ThunderDFrame"

Public Sub Test()
    
    Dim lngptrHwnd As LongPtr
    
    lngptrHwnd = FindWindowA(GC_CLASSNAMEUSERFORM, Caption)
    
    Call LockWindowUpdate(lngptrHwnd)
    
    'hier dein Zoom
    
    Call LockWindowUpdate(0)
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Zoom Frame mit WMP in Userform Flackern
21.10.2020 17:41:22
Andrea
Hallo Nepumuk, vielen Dank zunächst, dass Du Dich reingedacht und sogar noch dabei an meine _ 64er Bit Version gedacht hast. Ich hab jetzt alles probiert. Meinen Code nochmal auseinander genommen und nur das Wichtigste gekoppelt mit Deiner Idee in das Scrollevent der Scrollbar eingefügt. Das klang vielversprechend. Aber es blitzen und blinken immer noch Geisterbilder im WMP kurz, wenn ich Frame1.visible auf true belasse und die Zoomzeile passiere. Hab mal den Code der Scrollbar hier reingehängt. Im Frame1 ist der WMP. Alles; Scrollbar, Frames und WMP befinden sich im selben Userforms. Vielleicht hast Du noch eine Idee. Ich kann mit dem Frame1.visible=false/true auch leben. Schöner wäre es flüssig. (Deinen Codeblock hier über

Public Sub Test habe ich ganz oben im Userforms eingefügt.) Vielleicht hab ich ja einen Fehler  _
gemacht.
Danke und viele Grüße
Andrea

Public Sub ScrollBarVertiWMP_Scroll()
Dim lngptrHwnd As LongPtr
Application.ScreenUpdating = False
TabelleWMP.Range("B14").Value2 = ScrollBarVertiWMP.Value ' Zoom Prozenterhöhung
With Frame1
.Top = TabelleWMP.Range("B20")
.Left = TabelleWMP.Range("C20")
.Height = TabelleWMP.Range("B18")
.Width = TabelleWMP.Range("C18")
.Visible = False
lngptrHwnd = FindWindowA(GC_CLASSNAMEUSERFORM, Caption)
Call LockWindowUpdate(lngptrHwnd)
.Zoom = 100 + TabelleWMP.Range("B17").Value2
Call LockWindowUpdate(0)
.Visible = True
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Zoom Frame mit WMP in Userform Flackern
21.10.2020 17:54:30
Nepumuk
Hallo Andrea,
kannst du die Mappe mit dem UserForm mal hochladen? Dann kann ich selbst testen.
Gruß
Nepumuk
AW: Zoom Frame mit WMP in Userform Flackern
22.10.2020 02:31:25
Andrea
Hallo Nepumuk, ja werde ich machen. Wird etwas dauern, da ich das ganze Probier-Gewurstel im Hintergrund herausschmeißen muss. So wäre es eine Zumutung;-). Danke, bis dann.
Viele Grüße
Andrea

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige