Problem mit Combomassage



  • Also ich lasse meine combobox so laufen:

    void CCloneCDProfileMakerDlg::OnSelchangeComboDssue() 
    {
            m_dssue.GetWindowText(m_dssuestr);
    
            if (m_dssuestr == "Aus")
            {
                UpdateData(TRUE);
                m_dssuereg = "FastErrorSkip = 0";
                UpdateData(FALSE);
            }
    
            if (m_dssuestr == "An")
            {
                UpdateData(TRUE);
                m_dssuereg = "FastErrorSkip = 1";
                UpdateData(FALSE);
            }
    
            if (m_dssuestr =="Auto")
            {
                UpdateData(TRUE);
                m_dssuereg = "FastErrorSkip = 2";
                UpdateData(FALSE);
            }
            MessageBox(m_dssuereg); 
    }
    

    Nur wenn ich in meiner combo box etwas wähle tragt er erst den ausgangswert ein.Also muss man dan 2 mal zb. "Aus" wählen damit er auch den richrigen wert in die variable ein trägt.Was mache ich falsch?



  • Verwende statt

    m_dssue.GetWindowText(m_dssuestr);
    

    folgendes:

    m_dssue.GetLBText(m_dssue.GetCurSel(), m_dssuestr);
    


  • Danke hat super geklabt.Aber ich habe noch ein Problem mein Programm hat eine Combobox mit der variable m_dusse. Und dies amcht folgende aufgabe.

    void CTestDlg::OnSelchangeComboDssue() 
    {
            CString m_dssuestr;
            m_dssue.GetLBText(m_dssue.GetCurSel(), m_dssuestr);
    
            if (m_dssuestr == "Aus")
            {
                UpdateData(TRUE);
                m_dssuereg = "FastErrorSkip = 0";
                UpdateData(FALSE);
            }
    
            if (m_dssuestr == "An")
            {
                UpdateData(TRUE);
                m_dssuereg = "FastErrorSkip = 1";
                UpdateData(FALSE);
            }
    
            if (m_dssuestr =="Auto")
            {
                UpdateData(TRUE);
                m_dssuereg = "FastErrorSkip = 2";
                UpdateData(FALSE);
            }
    } [/code]
    
    In einem Späteren Teil des Programms möchte ich des ergebnis abspeichern.Und zwar so:
    
    [cpp] void CTestDlg::OnOK() 
    {       
            CString filter = "Textdatei(*.txt)|*.txt";
            CFileDialog open(FALSE, "*.txt", m_files,NULL,filter);
            if(open.DoModal() == IDOK)
            {
                UpdateData(TRUE);
                CString m_pfad = open.GetPathName();
                UpdateData(FALSE);
    
                CStdioFile output; 
                output.Open(m_pfad,CFile::modeWrite | CFile::modeCreate,NULL);
            output.WriteString(m_dssuereg);
                output.Close();
            }
    }
    

    Irgen wo im Programm ändre ich im Programm die Combox so:

    m_dssue.SetCurSel(m_dssue.FindString(-1,"Aus"));
    

    Da diese Funktion zwar den wert auf "Aus" setzt aber dies nich den ganz oben genannten code ausführt habe ich bei speichern kein ergebnis.Ändre ich aber die Combobox per Maus auf "Aus" ist alles so wie geplannt.



  • Hallo !

    Probier doch mal das:

    m_dssue.SetCurSel(m_dssue.FindString(-1,"Aus"));
    OnSelchangeComboDssue();
    

    oder das:

    m_dssue.SetCurSel(m_dssue.FindString(-1,"Aus"));
    m_dssuereg = "FastErrorSkip = 0";
    // und evtl. noch die Zeile:
    UpdateData(FALSE);  // falls die ganzen UpdateData(...) wirklich nötig sind (könnte man übrigens auch vor und hinter die if-Abfrage setzen)
    

    Tschüss


Anmelden zum Antworten