Eintrag der Eingabefelder



  • mein Prob:

    ich habe ein Dialog mit mehreren Eingabefelder. Diese bestücke ich anfangs mit nichts, das heißt beim ersten Öffnen soll nichts in den Eingabefelder stehen. Wenn das dialogfeld allerdings gleich danach noch einmal geöffnet wird, dann sollten die Eintragungen noch drin stehen und eventuell koorigiert werden können.
    Wie man texte beim ersten Öffnen erscheinen lässt weiß ich, nutze ich die funktion, dann erscheint aber auch beim zweiten öffnen der gleiche text wie beim ersten mal. Auch wenn beim ersten mal die eingabe geändert wurde erscheint der erste text.

    wer kennt die lösung und hilft mir?

    liebe grüße

    markus



  • naja

    ok text nix eingeben ist m_str_text = "";

    wenn du nun im textfeld was eingibst z.B. Hallo,

    dann ist m_str_text = "Hallo";

    das musst du dann mit

    UpdateData(false); noch bestätigen;

    startest du das programm neu ist wieder nichts eingetragen, woher soll das proggi auch wissen was du vorger reingeschrieben hast. wenn du das willst, dann solltest du den eingegebenen text speichern, entweder im clipboard oder in der registry, oder auslagern.



  • ich starte doch nicht das programm neu, lediglich der dialog wird noch einmal geöffnet.

    Beispiel:

    1. das Dialogfeld wird geöffnet -> es steht nichts drin
    2. der Anwender schreibt ins Eingabefeld und schließt das Programm -> m_strEingabe wird mit Inhalt gefüllt.
    3. der Anwender öffnet den Dialog neu -> jetzt sollte der Inhalt von m_strEingabe drin stehen.

    Achtung: Nicht das Programm wird neu gestartet.

    Grüße

    markus



  • jupp. dann musst du den string speichern.

    gibt da verschiedene möglichkeiten.

    entweder übers clipboard. würd ich aber nur bei einem string machen, du hast ja mehrere.
    oder per registry. du schreibst dann die strings beim schliessen in die registry und beim neustart liest du es aud der registry aus.

    du musst das folgendermassen machen:

    BOOL CNameDlg::OnInitDialog()
    {
        CDialog::OnInitDialog();
    ...
    
        LoadConfig();
    
    ...
    
        return TRUE;
    }
    
    void CNameDlg::SaveConfig()
    {
        UpdateData(true);
    
        CRegKey key;
        key.Create(HKEY_CURRENT_USER, "Software\\Programmname\\Settings");
    
        key.SetValue(m_str_DeinText1, "Text1"); 
    
        key.Close();
    }
    
    void CNameDlg::LoadConfig()
    {
        CRegKey reg;
        DWORD dwValue=0;
        reg.Open(HKEY_CURRENT_USER, "Software\\Programmname\\Settings", KEY_READ);
    
        char bufferName[256];
        bufferName[0] = 0x00;
        DWORD dwCountName = sizeof( bufferName);
    
        reg.QueryValue(bufferName, "Text1", &dwCountName);
        m_str_DeinText1.Format("%s", bufferName);
    
        UpdateData(false);
    }
    
    void CNameDlg::OnCancel() 
    {
        SaveConfig();
    
        CDialog::OnCancel();
    }
    

    Hoffe das hilft dir weiter


Anmelden zum Antworten