Announcement

Collapse
No announcement yet.

Wer hilft: Probleme beim Entwurf einer eigenen Windows-Fensterklasse

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wer hilft: Probleme beim Entwurf einer eigenen Windows-Fensterklasse

    >>Entschuldigt bitte, dass dieser Beitrag im übergeordneten Teil<< <br>
    >>des Forums bereits gepostet wurde, aber man kann nicht sicher << <br>
    >>sein ob dort jemand was liest...

    Hallo,<br>
    ich habe, nachdem ich mich nun ausreichend mit der C++-Syntax herumgeschlagen habe, eine Sache vor, die mir schlichtweg nicht gelingen will. Deshalb frage ich Euch, ehe ich das ganze komplett in die Tonne trete. <br>

    Ziel ist der Entwurf einer Windows-Fensterklasse unter Nutzung des Win32-API. In Delphi ist mir das problemlos gelungen, jedoch stellt mich C++ vor scheinbar unüberwindbare Hindernisse.<br>

    Um eines klarzustellen: Mit Windows-Fensterklasse ist hier nicht die "Pseudoklasse" von Windows gemeint, die mit RegisterClass registriert wird, sondern eine echte, objektorientierte C++ Wrapper-Klasse für die WindowsKlasse.

    Mein Hauptproblem liegt nun bei der WndProc. Ich möchte die Ereignisse für jede Fensterinstanz individuell abarbeiten. Die WndProc MUSS aber leider static sein, da ich etwas anderes nucht dem Feld WndProc in der WindowStruktur zuweisen kann. Zumindest weigert sich mein Compiler stein und bein z.B. eine Memberfunktion mit exakt derselben Signatur (Rückgabewert und Parameter) zu akzeptieren, weil es sich dabei nicht um eine statische Methode sondern eine Instanzmethode meiner Fensterklasse handelt.

    Es bleiben mir also 2 Möglichkeiten: Entweder <br>
    a.) eine globale WndProc dem Konstruktor meiner Fensterklasse zu übergeben, was mir aber wenig objektorientiert erscheint.<br>

    oder <br>

    b.) eine WndProc als statische Memberfunktion meiner Fensterklasse einzubauen.<br>

    Beides bringt mich nicht weiter, weil ich nur eine Behandlungsmethode für ALLE Instanzen meiner Fensterklasse hätte. Ich hatte mir das in der Art gedacht, dass es zwar eine statische WndProc für meine Fensterklasse gibt, von der aber dann jeweils Ereignisse wie WM_PAINT etc. durch Instanzmethoden aufgerufen werden. Das geht aber nicht, weil man von einer statischen Methode keine nichtstatischen Methoden aufrufen darf.<br>

    Warum das ganze ein Problem für mich darstellt ? Folgendes Beispiel:<br>

    Nehmen wir an, Fenster meiner Klasse werden als Projektfenster einer MDI-Anwendung genutzt. Ich hätte von der WndProc aus keinerlei Zugriff auf Instanzspezifische und somit projektspezifische Daten des durch das Fenster repräsentierte Projekt.<br>

    Die Implementierung eines Model-View-Controller-Systems wäre insofern ebenfalls unmöglich, da ich aus der WndProc der Fensterklasse (View) keine Information über die Projektinstanz an den Controller (Applikation) senden könnte um z.B. eine Aktualisierung der jeweiligen Projektdaten im Model zu bewerkstelligen. Die WndProc 'weiss' nämlich garnicht um welche Fensterinstanz es sich handelt, weil sie statisch ist, und somit keinen this-Zeiger etc. liefern kann.<br>

    Ok, ich hoffe so ungefähr ist mein Problem rübergekommen. Ebenfals hoffe ich, dass sich da draussen ein versierter C++-Programmierer finden wird, der mir bei der Lösung dieses Problemknotens helfen kann.<br>

    Vielen Danke im Voraus:<br>

    Bernd<br>

    PS: Hilfe ist auch gern per E-Mail unter [email protected]
Working...
X