Ein paar Fragen (2Views)
-
Hallo
Also ich Arbeite gerade an einer kleinen Chat-Anwendung fürs Netzwerk.
Die sollte in Echtzeit gehen. (also kein Senden Button)
Ich möchte das mit 2 CEditView Klassen (mit jeweils eigener Doc) machen.
Meine Fragen:Wie kann ich in ein bestehendes SDI eine 2. CEditView (mit eigener Doc) einfügen (horizontale Teilung). Beispielcode oder Vorgangsweise bitte
Wie kann ich eine CEditView schreibschützen. (Man sollte aber noch Text markieren und z.B.: kopieren können, nicht aber neu was dazuschreiben.
müste irgendwie mit GetEidtCtrl().[...] gehen, weiß aber die Funktion nicht.Und da das ganze wegen Echtzeit, ziemlich lahm wird, sollte man das mit dem Senden in einen Eigenen Thread packen? oder kommt man mit einem aus?
-
teile es mit Splitter und überschreibe die eigenschaften neu
Vossy
-
Ich habe noch nie mit geteilten Fenstern zu tun gehabt, und deshalb wäre es hilfreich mir die Vorgangsweise zu erklären
-
Weiß wirklich keiner wie dass funzt?
Kommt schon
-
Also:
Klasse von CSplitterWnd(in der Liste einfach splitter) ableiten.
Eine Instanz dieser Klasse in CMainFrame implementieren in CMainFrame::OnCreateClient() überschreiben( virtuell).
Mit deiner CSplitterWndInstanz.Create Static() das Fenster teilen
(Horizontal, vertikal).Mit CSplitterWndInstanz.CreateView() 2 View erzeugen.
Dazu solltest du zuvor 2 CEdit-Views abgeleitet haben.Für das erste CEdit View kannst du das vorgegebene View(mit Document) verwenden.
Wie du das 2 View allerdings mit einem weiteren CDocument verbindest weis ich nicht.
-
Dnke das hilft mir weiter.
Weiß einer wie das mit dem 2. Doc geht?
-
Eine SDI Anwendung ist für ein Dokument gedacht. (Single Document Interface)
Wenn 2 Docs parallel laufen sollen dann musst schon eine MDI Anwendung erstellen.
-
OK das mit den 2 Docs ist egal.
Das geht auch mit einem.Aber das mit dem ableiten von splitter geht nicht.
Da kommt ein Fehler, dass das kein CMidiFrame (oder irgendwie anders) ist.
Ich hbs dann ohne ableiten probiert (Membervar von CSplitterWnd in der CMainFrame)
Und dann in OnCreateClient(...)
das CreateStatic(...) und CreateView(...) hineingeschrieben-> Debug Assert
Fehler mit den Rows und Cols (Anzahl)
Einmal habs ich dann irgendwie doch hinbekommen, aber es hat dann trotzdem nur einen View angezeigt.Bitte erklärt es mir nocheinmal
Es ist zum verzweifeln wenn nichts geht
-
OK dass das Fenster jetzt geteilt ist hab ich geschafft.
Musste Nur die letzte Anweisung aus OnCreateClient(...) löschen.
Die Funktion, dass eine View schreibgeschützt ist hab ich auch gefunden.GetEditCtrl().SetReadOnly();
Aber wenn ich das in die View Klasse schreibe, bekomme ich eine Fehlermeldung (Debug Assert: ::IsWindow() -> Es ist kein Fenster).
Wo soll ich den Aufruf dann hinschreiben?
-
Gut, die Funktion hab ich jetzt auch an der richigen Stelle.
Jetzt geht alles
Jetzt muss ich nur noch die Serialize Funtion überschreiben, damit alle 2 Views gespeichert werden. Das dürfte aber kein Problem sein. :p
Das sollte vielleicht in die FAQ[ Dieser Beitrag wurde am 15.11.2002 um 11:37 Uhr von FooFighter86 editiert. ]