CProgressBar Methode als Callback?



  • Hallo allerseits,

    Der Hintergrund:
    Ich habe eine externe DLL die soll bei mir im Programm mittels Callback eine Methode in regelmäßigen Abständen aufrufen, um dieser den Fortschritt der Prozedur mitzuteilen.
    In dem Fall möchte ich den Fortschritt mithilfe einer ProgressBar (CProgressCtrl) graphisch darstellen.
    Ich habe also eine ProgressBar erstellt und dazu ein Control-Element (m_progBar_ctrl).
    Dazu hab ich in der zur ProgressBar gehörenden Klasse eine Methode "setProgress(int percent)" erstellt, damit ich von "außen" den Status der Fortschrittsanzeige ändern kann.

    Nun zum eigentlich Problem:
    Ich hab irgendwo gelesen, dass die Callback-Funktion statisch sein muss, wenn sie zu einer Klasse gehört.
    Wie kann ich jetzt auf "m_progBar_ctrl.setPos(x)" zugreifen wenn ich diese in meiner statischen "setProgress(int percent)"-Methode definiere.
    Weil "m_progBar_ctrl" kein statisches Element ist.

    Danke schonmal
    Marcus 🙂



  • Hallo,
    ein Funktionspointer auf eine nicht statische Memberfunktion sollte es doch machen. Wenn Du bei Deiner static bleiben willst, schick halt ne PostMessage() mit den benötigten Parameters.

    Gruß
    foo


  • Mod

    Wenn diese Callback statisch ist muss eben auch eine statische Variable da sein, mit der man das zugehörige Control findet.

    Die meisten Implementierungen für Calbacks erlauben im Baisaufruf einen Parameter den der Benutzer definieren kann (typischerwwiese lParam) und dieser Wert wird einfach an die Callback weitergeleitet.
    Damit kann man gezielt Objekte auch an ein statisches Callback weitergeben.


Anmelden zum Antworten