2 Dialoge - eine Socketverbindung
-
Hi,
ich möchte gerne 2 bzw später auch mehrere dialoge auf eine verbindung zugreifen lassen.
also im moment sieht es so aus, dass ich im HauptDlg eine netzwerkverbindung über casyncsocket herstelle.
jetzt rufe ich einen zweiten nicht-modalen dialog auf, der auf die gleiche verbindung zugreifen soll.Meine frage is jetzt, wie kann ich aus dem 2. dialog auf das socket/die verbindung aus dem 1. dialog zugreifen??
Danke schonmal
mfg jon
-
der, der den 2. dialog aufruft uebergibt dem dialog einen pointer auf den socket.
Esco
-
So rufe ich den 2. Dlg auf....
Dlg2Klasse* Dlg2 = new Dlg2Klasse(this); Dlg2->Create(Dlg2::IDD, this); Dlg2->ShowWindow(SW_SHOW);
und dann möchte ich so von dort auf das socket zugreifen
Dlg1* MainDlg = new Dlg1; int iLen, iSent; CString m_str = "hallo"; iLen = m_str.GetLength(); iSent = MainDlg->m_sConnectSocket.Send(LPCTSTR(m_str), iLen);
so kommt aber irgendwie nichts an beim server bzw send wird gar nicht aufgerufen....
-
DU solltest dich mal mit den Grundlagen beschäftigen und nochmals durchgehen was ein new macht und was ein Pointer ist.
Dlg1* MainDlg = new Dlg1;
Wenn das dein erster Dialog sein soll dann würde ich sagen das du den neu erstellst und nicht einen Vorhandene Pointer verwendest.Weiters solltest Du Fehlermeldungen des Sockets abfangen. Dnn hättest du dein Problem entdeckt und wüsstest das der Socket keine Verbindung hat. Wundet mich aber das du keine Exeption bekommst das der Socket denke ich nicht nicht besteht.
-
Hallo,
danke für deine antwort.
es ist nen bisschen anders, ich kann im hauptdialog ohne probleme nachrichten hin und her schicken zwischen den sockets, aber jetzt soll der 2. dialog die gleiche verbindung wie der 1. nutzen können.
dass der code ziemlich schwachsinnig ist, leuchtet mir ein.
eigentlich hätte ich es so aufgerufen:
iSent = CMainDlg.m_sConnectSocket.Send(LPCTSTR(m_str), iLen);
aber dann bekomme ich 'CMainDlg' : illegal use of this type as an expression
ich müsste eigentlich nur wissen wie der pointer heißt, der dem 2. dialog übergeben wird. wie esco meinte
mfg Jon
-
Der nennt sich genauso wie du ihn bezeichnest.
Übergibt dem 2ten Dialog den this-Zeiger des ersten und schon sollte es gehen das du auf den ersten zugreifen kannst.Als Hinweis. Dem 2ten Dialog musst du die Klasse des ersten bekanntmachen. IMHO brauchst du dazu eine Forward-Deklaration der Klasse.
Wenn du es jetzt noch nicht weißt dann verschiebe ich dich nach C++ wo man dir Dinge wie Klassen, Zeiger, this, etc. erklären könnte.
-
Kann er sich auch selber anlesen...
http://tutorial.schornboeck.net/