Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » mfc und variablen übergabe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.11.2005, 15:33 Uhr
felekchris



hallo,

ich habe schon wieder ein kleines Problem, diesmal mit MFC.

In meiner Anwendung habe ich ein Hauptdialogdfenster (A), welches wiederrum ein anderes Dialogfenster beinhaltet. sagen wir (B) (wird über Menu aufgerufen).
Jedes Dialogfenster ist als eigene Klasse implemetiert, in dem Dialogfenster (B) habe ich ein Eingabefeld und ein eine Methode die diesen Wert zurückliefert.
Meine Frage ist :ich wie komme an die Werte, die dem Dialog (B) übergeben wurden, in meinem Dialog (A) ran?. Ist etwa der Ausdruck CDialog:EndDialog(0) daran Schuld, dass ich kein Ergebnis bekomme?

Dialog (B)

int dialogClasse::getEinsatz(){

return str;
}

void dialogClasse::OnSetEinsatz()
{
str = m_einsatz; //m_einsatz ist das Eingabefeld im Dialog(B)
CDialog::EndDialog(0);

}

Dialog (A)

dialogClass dlg;
int result = dlg.getEinsatz();
if(!result)....

an dieser Stelle ist die Variable "result" nicht mit dem eingegeben Wert belegt.
p.s.
Die Anwendung wurde ohne Doc/View Unterstützung erstellt.

Vielen Dank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.11.2005, 15:42 Uhr
Tommix



Hallo,
Ich vermute mal dieses:

C++:
void dialogClasse::OnSetEinsatz()
{
    UpdataData();
    str = m_einsatz;
    EndDialog(IDOK);
}


Ansonsten: Für MFC gibt's hier ein eigenes Board.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.11.2005, 15:57 Uhr
felekchris



hallo Tommix,

ich hoffe ich werde dabei nicht des doppelpostings beschuldigt?

das Ergebis ist immer noch dasgleiche. ich bekomme rein gar nichts übergeben.
void dialogClasse::OnSetEinsatz()
{
UpdataData();
str = m_einsatz;
EndDialog(IDOK);
}

trotzdem danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.11.2005, 16:03 Uhr
Spacelord
Hoffnungsloser Fall


Wie und wann rufst du denn OnSetEinsatz auf?
Wie sieht die Methode aus in der du den temporären Dialog erstellst?

MfG Spacelord

Bearbeitung von Spacelord:

Der Thread hier wird früher oder später wohl ins MFC Board verschoben und der andere geschlossen.


--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 21.11.2005 um 16:05 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.11.2005, 16:05 Uhr
Tommix



Wo bzw. wie rufst Du den Dialog denn auf?

C++:

dialogClass dlg;
dlg.DoModal(); // oder wie?
int result = dlg.getEinsatz();
if(!result)....


- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.11.2005, 16:26 Uhr
felekchris



sorry, ich habe grad mein posting ins MFC-Board verlegt..

zuerst zu SpaceLord.

das Dialog besteht nur aus einem Eingabefeld und einem Button. Wenn der Button geklickt wird
wird dann die Methode onSetEinsatz aufgerufen. Danach verschwidet das Dialogfenster und (so habe ich mir zuminedest vorgestellt) könnte ich den eingegeben Wert (int, CString ..egal welchen Datentyp) in einem Ausgabefenster des Dialogs (A) sehen. Dazu komme ich leider nicht , und ich weiss nicht recht weshalb. Muss ich etwa die Variablen mit "new" initalisieren ? oder hat da mfc eigene Lösungen.


Heute, 16:05 Uhr
Tommix

Wo bzw. wie rufst Du den Dialog denn auf?

der Dialog, wo das Eingabefeld ist wird über ein MenuEintrag aufgerufen:


void CGame1Dlg::OnInsertcoinsInsertcoins()
{
// TODO: Code für Befehlsbehandlungsroutine hier einfügen
dialogClasse dlg;
dlg.DoModal();
}

ich bin davon überzeugt dass, ich einen ganz blöden Fehler produziert habe (abgesehen von grammatikfehlern) aber ich weiss nicht so recht wo oder woran es liegt, daher danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.11.2005, 16:32 Uhr
Tommix



Jo, alles klar. Du erzeugst in OnInsertcoinsInsertcoins eine lokale Variable vom Typ dialogClasse, die beim Beenden der Funktion wieder zerstört wird und beim Auslesen dann eine andere. Du mußt in CGame1Dlg eine Member-Variable vom Type dialogKlasse einfügen und nur diese dann benutzen.

Gruß, Tommix

Dieser Post wurde am 21.11.2005 um 16:33 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.11.2005, 16:35 Uhr
Spacelord
Hoffnungsloser Fall



C++:
void CGame1Dlg::OnInsertcoinsInsertcoins()
{
dialogClasse dlg;
if(dlg.DoModal()==IDOK)
{
int result = dlg.getEinsatz();//result ist zur Demo nur Funktionslokal bekannt!!
CString temp;
temp.Format("Die Zahl ist %d.",result);
AfxMessageBox(temp);
}
}




MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 21.11.2005 um 16:38 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.11.2005, 16:42 Uhr
felekchris



hey, das ging aber flott!!!
Ich sitze schon seit 4h dabei und versuche das Problem zu beheben, aber vermutlich hätte ich noch weitere 4Tage dafür gebracht. Ich habe das Problem wohl nicht richtig erkennen können,
dabei ging ich ständig davon aus dass, meine Hauptklasse fehlerfrei ist.

Nochmals danke Tommix,

felix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.11.2005, 16:52 Uhr
felekchris



Hallo SpaceLord,

habe den Code gerade angewendet und ausprobiert. Funktioniert einwandfrei.
Vielen Dank.

felix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: