Frage zu CSplitterWnd



  • Hi,
    ich mal wieder mit ner Frage:
    Versuche, ein CSplitterWnd zu machen, funktioniert soweit auch einwandfrei.
    Jetzt will ich aber die Größe des gesplitteten Fenster fixieren, weil ich eine feste Breite brauche.
    Dazu hab ich, man höre und staune, ein Tut bei der MSDN gefunden, das da behauptet, man solle einfach die OnLButtonDown und die OnMouseMove überschreiben, so dass diese keine Messages weitergibt.
    Gesagt getan, ich habe eine neue Klasse von CSplitterWnd abgeleitet und dann zur Sicherheit, bevor ich mit Überschreibungen anfange mal getestet ob es tut.
    Und siehe da: Nehme ich die abgeleitete Klasse (ohne irgendwelche Überschreibungen) sind meine Ränder des Fensters plötzlich durchsichtig, nehme ich die Originalklasse, werden sie wieder dargestellt. 😕

    Was habe ich denn da schon wieder angestellt? Müsste doch eigentlich genau diesselbe Klasse sein, oder?

    Grüße Squeegee



  • Hi,
    anscheinenden hat dieses Problem noch niemand gehabt. Habe da vielleicht eine Vermutung:
    ich hab die Klasse wie folgt abgeleitet:
    Mit der Assistenten von .NET eine Klasse von CWnd abgeleitet und die Ableitung manuell auf CSplitterWnd geändert. Könnte ja sein, dass da irgendein Template oder so fehlt, oder zu viel ist...
    Daher meine weitergehende Frage:
    Wie leite ich Klassen ab, die nicht in der Liste des Klassenasisstenten stehen?

    Grüße
    Squeegee



  • Wenn du schon von anfang an die zwei unterschiedlichen Fenster erstellst, kannst du die größe beim CreateView angeben!!!



  • Hallo,
    hab das Problem meanwhile gelöst... Eigentlich ein ganz blöder Anfängerfehler:
    Hab nach dem Ableiten vergessen, in der MessageMap die CWnd gegen die CSplitterWnd auszutauschen und deswegen hat die eben auch keine Messages bekommen 😃

    Und das mit dem fixierten Fenster: Ging eigentlich dann ganz einfach: Hab einfach in der abgeleiteten Klasse die beiden Methoden OnLButtonDown und OnMouseMove so überschrieben, dass sie nicht mehr die CSplitterWnd aufrufen, sondern direkt die CWnd. Damit bekommt die CSplitterWnd gar nix davon mit, dass der Benutzer die Skalierung ändern will und macht demnach auch nix.

    Grüße und danke
    Squeegee


Anmelden zum Antworten