AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TAboutScroller Fensterklasse [nonVCL]
Thema durchsuchen
Ansicht
Themen-Optionen

TAboutScroller Fensterklasse [nonVCL]

Ein Thema von Olli · begonnen am 22. Jul 2005 · letzter Beitrag vom 14. Apr 2007
 
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#10

Re: TAboutScroller Fensterklasse [nonVCL]

  Alt 31. Jan 2006, 20:31
Kleines Exe-Demo-Update siehe oben...
---------------------------------------------

So, nun habe ich wieder mal was mit dem AboutScroller zu tun gehabt.
Was mir aufgefallen ist, ist das einige Sachen nicht wieder freigegeben werden.
Delphi-Quellcode:
function ScrollThread(psc: PScrollConfig): DWORD; stdcall;
begin
  // As long as a main window is assigned
  while (psc^.MainWnd <> 0) do
  begin
    // Increment position
    InterlockedIncrement(psc^.Position);
    // Send the change request to the window
    SendMessage(psc^.MainWnd, WM_ASSAREFRESHSCROLL, 0, 0);
    // Sleep until next refresh cycle
    Sleep(psc^.ScrollDuration);
  end;
  // --- nach dem WM_DESTROY kommt er nicht er hier an ---------- //
  // deswegen habe ich die Freigaben ins WM_DESTROY - Ereignis verschoben

  // Make sure no one else will use the pointer
  SetWindowLong(psc^.MainWnd, GWL_USERDATA, Integer(0));
  // And the config struct itself
  GlobalFree(THandle(psc));
  result := Ord(True);
end;
Delphi-Quellcode:
function TAboutScroller_WindowProc...
//...
    WM_DESTROY:
      begin
        // Terminate the scroller thread, friendly method to do this
        // From this value the thread knows it should terminate and free the
        // config struct.

        // Finally free the text buffer <----<<<
        GlobalFree(THandle(psc^.TextBuffer));
        // Delete GDI objects
        DeleteObject(psc^.Bmp);
        DeleteObject(psc^.BgBrush); // <----<<<
        // Close Thread Handle
        CloseHandle(psc^.Thread);

        psc^.MainWnd := 0;
      end;
Was macht man denn nun mit dem "GlobalFree(THandle(psc));"-Dingens, im WM_DESTROY-Ereigniss bringt es eine AV ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.
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