Parameterübergabe von einem Dialog ???



  • Hi,
    habe eine Funktion in meiner Dialogklasse erstellt:

    int DrawPoints::OnNBSTD()
    {
    int nbstd=0;
    GetDlgItemInt(IDC_NBSTD,&nbstd);
    return nbstd;
    }

    Ich erzeuge mir ausserhalb dieser Klasse ein Objekt mit:
    DrawPoints DP;
    DP.DoModal();//Aufruf des Dialogs funktioniert
    dann möchte ich den zur Laufzeit eingegebenen Wert vom Dialog abholen.
    m_nbstd=DP.OnNBSTD();

    Funktioniert ohne Kompilerfehler aber zur Laufzeit wenn ich den Wert in das Eingabefeld des Dialoges reinschreibe,dann stürzt meine Anwendung ab. 😞

    Habe ich irgendwas bei dieser Sache übersehen ? 😕
    (Mache Eingabe in einem Dialog zu ersten mal).

    Grüsse



  • Du gehst da total Umständlich ran. Erstelle doch im Klassenassistenten eine Membervariavle vom Typ int für dein Editfeld. Die liest du einfach mit UpdateData(TRUE) aus und weist schließlich diese Membervariable, aus deinem Dialog, einer Variablen im Hauptprog zu.



  • vagabond hat da schon recht nur bekommst du deine Werte trotzdem nicht bei einem Aufruf DoModal()
    Du musst einen nicht modalen Dialog erzeugen



  • Hallo,

    ein Editfeld ist nicht automatisch ein Integer. Daher würde ich einen String nehmen. Wenn er ein int mit der Eingabe des Editfeldes füllt, gibt es einen Schuss. Wenn die Eingabe nur Zahlen sind, dann würde ich beim Füllen des Integers aufjedenfall eine atoi(editfeldinhalt) machen.

    Gruß

    Ocrana



  • Der Fehler kommt deshalb da du auf eionen Dialog zugreifst der nicht mehr existriert.
    Do Modal kehrt nach beenden des Dialogs zurück.
    Man kann zwar auf Variablen dieser Klasse zugreifen jedoch nicht auf Steuerelemente.
    Schreibe den Inhalt der Eingabe in eine Variable der Dialogklasse (OnOK) und hole dir dann den Inhalt.

    Hier rufst du den Dialog auf

    DP.DoModal();

    Hier geht der Code weiter wenn der Dialog geschlossen wird

    Hier fragst du in der Dialogklasse ein Steuelement ab welches nicht existriert und somit Speicherzugriffsfehler.

    m_nbstd=DP.OnNBSTD();

    [ Dieser Beitrag wurde am 11.12.2002 um 14:03 Uhr von Unix-Tom editiert. ]

    [ Dieser Beitrag wurde am 11.12.2002 um 14:04 Uhr von Unix-Tom editiert. ]



  • Hallo,

    nochmal ich. Sicher bekommt mein aus einem Modalen Dialog einen Wert. Man mache folgendes:

    in dem ModalenDialog einen zusätlich int setzen(Public)

    int mein_modalerwert;

    So, in dem Modalen Dialog machst Du einfach (Ich gehe davon aus das in dem Editfeld nur Zahlen stehen):

    mein_modalerwert = atoi(m-edit.GetItemText());

    Dann einfach nach dem do.modal hat man Zugrif auf das Element. Durch :

    DP.mein_modalerwert; //Dies ist dan nder Integer Wert aus dem Modalen Dialog.

    Gruß

    Ocrana

    [ Dieser Beitrag wurde am 11.12.2002 um 14:07 Uhr von Ocrana editiert. ]



  • @Ocrana

    Was hab ich denn oben bitte schön beschrieben??? Doch nix anderes als du eben, oder?!


Anmelden zum Antworten