Es happert mit dem Dok / View Modell, weiß nicht wie Anwenden

Hi jokey,
ok, den Satz hab ich auch schon gelesen, und das die OnDraw vom Framework aufgerufen wird, ist mir auch klar, aber:

...to render an image of the document

auf die Gefahr hin, dass ich grade etwas schwer von Begriff bin :( ,
wird meine Instanz von CRotateButton, der eine OnDraw enthält, in derC List in der Dok-Klasse automatisch gemalt?
Hrmpf, ich komm aus der Mikroprozessorprogrammierung, da gibts ne Main und das was ich da Aufruf wird ausgeführt, ich glaub deswegen kann ich mich grad noch net so recht damit abfinden, dass bei Win-Programierung mit der MFC so viel "aus den Tiefen der MFC" kommt :)


Gruß Squeegee
 
Du hast also einen View, auf dem du wiederum mehrere Views anlegst, die eigentlich Buttons sind.

Die Buttonklasse von CView abzuleiten halte ich nicht für sehr günstig, hier wäre CButton oder auch CWnd die bessere Lösung gewesen. View-Klassen sind eigentlich nur sinnvoll, wenn sie direkt in ein FrameWindow eigebettet werden.

Und nun zum Ursprungsproblem: OnDraw (oder auch OnPaint) ist dazu da, um mit GDI-Funktionen direkt ins Fenster zu zeichnen. Wenn du weitere Objekte in diesem Fenster, plazierst, sind diese selbst dafür veantwortlich, sich zu zeichnen. Dafür enthalten die jeweiligen Klassen eine OnDraw bzw OnPaint-Routine, die bei Bedarf vom System aufgerufen wird; du brauchst sie niemals selber aufrufen.
Das Anlegen der Buttonfenster (via Create) erledigst du entweder bei OnInitialUpdate oder als Antwort auf eine Benutzeraktion. Dies Button-Objekte selbst können aus deiner Clist-Klasse kommen.

Gute Quellen kenne ich leider nicht, hab schon ewig kein MFC-Buch mehr in der Hand gehabt.
Deine Instanzen werden übrigens vom Applikations-Framework erzeugt (AddDocTemplate); einfach mal durch den MFC-Code debuggen :)

Grüße
MCoder
 
Hi MCoder,
ich glaub, jetzt hab ichs geblickt, was du meinst und werde wohl meine Architektur doch nochmal nach deinen Richtlinien überarbeiten.

Vielen Dank nochmals
Bis zum nächsten Mal :) :)

Gruß Squeegee
 
Zurück