Delphi-PRAXiS
Seite 31 von 35   « Erste     21293031 3233     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Virtual Piano (https://www.delphipraxis.net/158944-virtual-piano.html)

EWeiss 2. Jul 2011 21:50

AW: Virtual Piano
 
Du weist schon wofür LockWindowUpdate verwendet wird ;)
Zitat:

The LockWindowUpdate function disables or enables drawing in the specified window.
Only one window can be locked at a time.
Delphi-Quellcode:
  ' Fenster sperren:
  LockWindowUpdate(WinHandle)
 
  ' ... mehrere Zeichenoperationen ...
 
  ' Fenster entsperren und neu zeichnen
  LockWindowUpdate(0)
Genau deshalb habe ich es verwendet damit es nicht flackert :)
bzw. Solange nicht mehr resitz bis die sperrung aufgehoben ist.
Theoretisch würde ein WM_SETREDRAW ausreichen da es fast das gleiche tut nur es sperrt nicht das Window
vor dem Resitzen. !! Und darum geht es mir.

Was da auf XP passiert ist eine sache was hier auf Win7 geschieht eine andere.

Delphi-Quellcode:
SKAERO_AnchorEnum(WinHandle);


Repositioniert die Controls wenn ein Resitz statt findet
Und zwar in diesen speziellen Fall wo das Fenster gesperrt ist damit die Controls nicht erst nachher resizen
nachdem das Fenster wieder gezeichnet werden kann.

Delphi-Quellcode:
FVisible := False;


Sorgt dafür das kein neuzeichen stattfindet wenn das Flag gesetzt ist
Delphi-Quellcode:
      MidiTracker.FVisible := bool(LoWord(WP));
      if MidiTracker.FVisible then
      begin
        MidiTracker.GetLastSize(WinHandle);
        MidiTracker.DrawGrid(WinHandle);
        ShowWindow(SideBarFrame.Handle, SW_HIDE);
        ShowWindow(TopBarFrame.Handle, SW_HIDE);
        MidiTracker.PrintSideBar;
        MidiTracker.PrintTopBar;
      end
tssss.. verstehe ich nicht was du da machst.

Zitat:

Also sooooory @EWeiss falls es falsch rübergekommen ist!
Kein Beinbruch ;)
Wollte nur meinen Standpunkt darlegen

boahh warum ist die schrift jetzt blau?

Ps:
Ach so vergessen!

Delphi-Quellcode:
    WM_SIZE:
    begin
      if assigned(MidiTracker) then
        if MidiTracker.FVisible then
          MidiTracker.ResizeWindow(WinHandle);
    end;
Wird ein Resitz ausgeführt und das flag FVisible ist true
dann wird im ResizeWindow das Flag direkt wieder auf false gesetzt.
Das hängt damit zusammen damit die ToolButton, SideBar, TopBar und das grid gleichzeitig sichtbar werden
und nicht nacheinander gezeichnet werden.

Wie gesagt das hat alles einen Sinn!
Deaktiviere ich alles das was du deaktiviert hast.. flackert mein Grid
und sieht so aus.

gruss

alfold 2. Jul 2011 22:52

AW: Virtual Piano
 
Will ja nicht unken, selbst auf Win7 läuft es ohne die anderen Einträge besser:zwinker:
Delphi-Quellcode:
 Resizing := True;<--nicht notwendig

  // Neuzeichnen sperren
  LockWindowUpdate(WinHandle);<---überflüssig
  SendMessage(WinHandle, WM_SETREDRAW, 0, 0);<--- reicht vollkommen
  FVisible := False; <--nicht notwendig

  SKAERO_AnchorEnum(WinHandle);<---nicht notwedig wird auch ohne neu positioniert
....
....
....
 FVisible := True;<-- nicht notwendig

  // Aktualisiere die Seiten und TopBars
  PrintSideBar;<---nicht notwendig da grid eh noch nicht zusehen und flackert
  PrintTopBar;;<---nicht notwendig da grid eh noch nicht zusehen und flackert

.....
.....
  // Neuzeichnen wieder erlauben
  SendMessage(WinHandle, WM_SETREDRAW, 1, 0);
  LockWindowUpdate(0);<--nicht notwendig

  Resizing := False;<---nicht notwendig
Wenn ich die also weglasse, müsste es ja schlimmer werden, dem ist aber nicht so. Im Genteil Windows selber bleibt ruhiger.


Glaub doch einfach auch anderen mal was. Oder siehst Du dies als persöhnlichen Angriff an, wenn man feststellt das dies oder jenes doppeltgemoppelt ist
oder sogar einfacher ist.

kommt mir jedenfalls so vor:roll:

Ps: Grid ist beim Resize weder auf Win7 noch auf XP bei mir zu sehen auch im originalem.:gruebel:

Gruss alfdold

EWeiss 2. Jul 2011 22:57

AW: Virtual Piano
 
Zitat:

Oder siehst Du dies als persöhnlichen Angriff an
Nööö :)

Ich hab ein Bild angehängt und dir gesagt das es bei mir Flackert und das resultat bei
deaktivierten einträgen siehst du auf meinen Anhang.

Es geht hier um Fakten so wie sie bei mir auftreten das hat nicht's mit 'Persönlich' zu tun

Freut mich ja das du da weitermachst..
Zitat:

Ps: Grid ist beim Resize weder auf Win7 noch auf XP bei mir zu sehen auch im originalem
Oh da mußt noch mal schaun was deaktiviert hast :) Hihihi nichts für ungut.
Welche Version? Die letzte?


PS:
Brrr...
Resizing := False;<---nicht notwendig
Zitat:

Ist notwendig damit du die Scrollbar nicht bedienen kannst wenn ein Song am spielen ist!
bzw.. diese während des Resitz des Fenster nicht aktualsiert das geschieht später.

gruss

alfold 2. Jul 2011 23:14

AW: Virtual Piano
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Welche Version? Die letzte?
Jo, die zum DL da ist

und so sieht es, beim ändern der grösse, bei mir auf win7 und xp aus. Original nichts geändert!!
Und windows flackert! die anderen geöffneten Fenster!
Ändere ich das in meiner version passiert das nicht!

Gruss alf

EWeiss 2. Jul 2011 23:19

AW: Virtual Piano
 
Bei mir so nichts geändert.

Abgesehen von der Uhr ;)
Nach dem resitz natürlich.

PS:
Gerade nochmal letzte version geladen und keine probleme
Wird alles richtig angezeigt.

Zitat:

Und windows flackert! die anderen geöffneten Fenster!
Ja das liegt an LockWindowUpdate wird von MSN ja auch drauf hingewiesen.
Dann mach es halt weg ;)

Zitat:

Unter bestimmten Umständen führt das Aufheben der Sperrung eines inzwischen verkleinerten Fensters mittels LockWindowUpdate dazu,
dass statt der frei gewordenen Fläche das hinter dem betroffenen Fenster liegende Fenster, mitunter gleich der gesamte Desktop,
neu gezeichnet wird. Das daraus resultierende Flackern der gesamten Benutzeroberfläche ist dem gesetzten Ziel natürlich diametral entgegengesetzt.

gruss

alfold 2. Jul 2011 23:26

AW: Virtual Piano
 
Mein Photo ist während ich die grösse ändere also reszize. Sämtlich Desktop icons und fenster im hintergrund flackern. Manchmal kommt sogar ein Fenster durch Deine Oberfläche.
Nach dem ich dies deaktiviert habe, in meiner Version, ist alles ruhiger!

Egal ich mach trotzdem weiter:P Will ja fertig werden:-D

Gruss alfold

EWeiss 2. Jul 2011 23:32

AW: Virtual Piano
 
Zitat:

Zitat von alfold (Beitrag 1109710)
Mein Photo ist während ich die grösse ändere also reszize. Sämtlich Desktop icons und fenster im hintergrund flackern. Manchmal kommt sogar ein Fenster durch Deine Oberfläche.
Nach dem ich dies deaktiviert habe, in meiner Version, ist alles ruhiger!

Egal ich mach trotzdem weiter:P Will ja fertig werden:-D

Gruss alfold

Lese bitte nochmal was ich geschrieben habe als letzten Eintrag.
Du kannst es ruhig entfernen Deaktivieren.

PS:
Das problem mit dem grid kann daran liegen das du verschiedene Versionen mit ein und der
gleichen INI ausführst das führt zum problem und kann nur behoben werden in dem du den Skin vorher änderst.
Hatte das gleiche problem mit der alten Version hier aus dem Forum bedenke das die Bilder in deiner Version anders abgelegt sind!

gruss

EWeiss 3. Jul 2011 02:47

AW: Virtual Piano
 
Zitat:

Glaub doch einfach auch anderen mal was. Oder siehst Du dies als persöhnlichen Angriff an, wenn man feststellt das dies oder jenes doppeltgemoppelt ist
oder sogar einfacher ist.
Es scheint so das ich es mal wieder zu gut machen wollte (doppelt gemoppelt hält besser).
Nee ist schon recht ;)
Wo du recht hast da haste recht.

Wichtig ist das nachher alles noch funktioniert.
Na kleinigkeiten kann man immer noch korrigieren :)

Ich bin dabei das alles noch etwas zu optimieren besonders InvalidateRect.
Da muss man sehr mit Aufpassen.

PS:
Zitat:

Mein Photo ist während ich die grösse ändere also reszize.
Wenn ich dich richtig verstehe tritt der Fehler auf wenn du bzw.. während du das Fenster Resitzen tust?
Wenn ja dann liegt es daran das du dinge raus geworfen hast die das verhindern.
Ich habe das Resitz verhalten so programmiert das du während des Resitz keine Zeichnungs operationen durchführen kannst (darfst)
Was du beim Resitz sehen sollst ist lediglich der Rahmen der Anwendung nicht mehr nicht weniger.
Erst beim loslassen soll das Fenster vollständig neu gezeichnet werden.
Anders ist es mit dem ganzen Design, skins, Aero usw.. nicht möglich.

gruss

EWeiss 3. Jul 2011 09:02

AW: Virtual Piano
 
Neue Version Oben..
Es könnte sein das beim ersten start das Fenster nicht richtig angezeigt wird.
Wenn das auftreten sollte bitte einfach einen anderen Skin im Menü auswählen.
dann gibt sich das von selbst.
Liegt daran das die Bilder nun in anderen Ordern liegen alte INI könnte da ärger machen.

gruss

alfold 3. Jul 2011 09:54

AW: Virtual Piano
 
Startet nicht, fehler in der GDIPlus.DLL lesen von Adresse 00000013

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr.
Seite 31 von 35   « Erste     21293031 3233     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz