Thema: Virtual Piano

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#301

AW: Virtual Piano

  Alt 2. Jul 2011, 22:50
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.

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.

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

Geändert von EWeiss ( 3. Jul 2011 um 00:20 Uhr)
  Mit Zitat antworten Zitat