Kommunikation zwischen Klassen
-
Hallo
Wie realisiert man folgendes Szenario "MFC-Gerecht" ???
Ich habe eine Dialogbasierende Anwendung.
Auf der Anwendung befinden sich ein EingabeFeld [b}m_cEingabe[/b] vom Typ CSuperEdit, wobei CSuperEdit eine abgeleitete Klasse von CEdit ist.
Desweiteren befindet noch eine ListBox m_cListBox vom Typ CListBox auf dem Dialog.Die CSuperEdit Klasse hat eine WM_DROPFILES Message implementiert, damit ermittelt Sie den absoluten Pfad zum File das auf Sie gedroped wurde und speichert diesen in einen CString m_sDropedFile, das funktioniert alles einwandfrei.
Jetzt die Frage:
Wie bekomme ich jetzt diesen Pfad in die ListBox ???
Vom Dialog aus kann ich ja auf m_cEingabe.m_sDropedFile (CSuperEdit Klasse) zugreifen !!! ist ja nicht das Thema. Ich hätte aber den Pfad genau dann in der ListBox wenn ich es in die EditBox gedroped habe ??? Aber der Dialog bekommt ja die WM_DROPFILES Message nicht mit, die wird ja nur in der EditBox behandelt !!!
Kann man sich da vielleicht irgendwie von der CSuperEdit Klasse in die ListBox hangeln ??? oder wie macht man sowas ???
MfG + Ich hoffe mein Problem ist verständlich erklärt !!!
-
void OnDrop(...) { ((CListBox*)GetParent()->GetDlgItem(IDC_MYLIST))->AddString("Test"); // oder: CListBox* list=(CListBox*)GetParent()->GetDlgItem(IDC_MYLIST); list->AddString("Test"); }
oder eine Membervariable (z.B. m_theList) anlegen und darüber auf die Liste zugreifen (Membervaraiable mit z.B. SetList setzen oder Parameter in Create, oder...)
[ Dieser Beitrag wurde am 04.08.2002 um 01:43 Uhr von Nemesyzz editiert. ]
-
Hallo Nemesyzz,
Danke schon einmal für die Antwort
Ich weiß auch selber, daß es hier viele verschiedene Möglichkeiten gibt, wobei mir Deine nicht so schnell in den Sinn (wenn überhaupt) gekommen wäre.
Ich hätte es wahrscheinlich mit
- einer globalen AddListBox() Funktion und globalen m_cListBox und m_sDropedFile (die ich dann vielmehr mit g_ beginnen ) realisiert, die ich dann in der OnDrop() aufgerufen hätte
oder - Dem Hauptfenster aus der OnDrop() Funktion eine benutzerdefinierte Message Geschickt, welches dann die AddListBox() Funktion aufgerufen hätte, so hätte nur die m_sDropedFile Variable Global sein müssen.
Wären diese beiden Methoden jetzt überhaupt nicht MFC-Konform, oder hätte man diese Realisierungsmöglichkeit auch in Betracht ziehen können ??? wenn man davon absieht, daß sie teilweise komplexer zu realisieren wären als Deine Lösung ???
MfG
- einer globalen AddListBox() Funktion und globalen m_cListBox und m_sDropedFile (die ich dann vielmehr mit g_ beginnen ) realisiert, die ich dann in der OnDrop() aufgerufen hätte
-
Mit den globalen Variablen würde ich es nicht machen, würde dann ja auch stören bei 2 Edit-felder + 2 Listen
Das mit der Message würde ich nur nehmen wenn sie direkt an die Liste geht, extra noch ein Message wäre mir zu umständlich
-
@Nemesyzz
Das mit der Message würde ich nur nehmen wenn sie direkt an die Liste geht, extra noch ein Message wäre mir zu umständlich
Das macht ja sogar mich jetzt neugirig... wie kann man das realisieren ???
MfG veganza
-
@ALL
Da Nemesyzz nicht antworten will/kann !!!
Könnte da vielleicht irgend jemand zur Aussage von Nemesyzz Stellung beziehen ???
Mir fällt dazu nämlich leider gar nichts ein (Realisierungsmöglichkeit)... vielleicht stehe ich ja auch nur auf dem SchlauchMfG veganza
-
Das macht ja sogar mich jetzt neugirig... wie kann man das realisieren ???
Was meinst du? Eine eigene Message? Oder Message direkt zur ListBox?
Eine eigene Message einfach mit WM_USER+n
Mit einer Message direkt zur ListBox meinte ich sowas wie LB_ADDSTRING o.ä.
-
@Nemesyzz
LB_ADDSTRING
Ich habe verstanden... das Thema mit dem Schlauch
SendMessage( (HWND) hListBox, (UINT) LB_ADDSTRING, NULL, "Der Text soll in die Listbox" );
MfG veganza