CEdit->SetWindowText () ändert Wert in anderer



  • Hallo NG,
    bitte schaut euch mal diesen Quelltext an. Ich verstehe die Welt nicht mehr. Meine Frage wird im Quelltext gestellt.

    void CLineDefinitionDlg::InitDialog(CLineType *pLineType)
    {
    if (!pLineType) return;
    [snip]
    ... der Code hier zwischen ist nicht relevant
    [snip]
    CComboBox* pCombo = NULL;
    CEdit* pEdit = NULL;
    CHAR SegmentType =' ';
    int SegmentLaenge = 0;
    CString Text = _T("");
    
    // Hier wird die Segmentanzahl aus pLineType abgefragt
    // Der Wert ist korrekterweise 2
    int Segmentanzahl = pLineType->GetSegmentAnzahl ();
    
    for (int i=0; i < Segmentanzahl; i++) {
    pCombo = (CComboBox*) GetDlgItem (IDC_LINE_SEG1 + i);
    pEdit = (CEdit*) GetDlgItem (IDC_LINEDEF1 + i);
    
    SegmentType = pLineType->GetSegmentType (i);
    SegmentLaenge = pLineType->GetSegmentLength (i);
    Text.Format ("%d",SegmentLaenge);
    
    switch (SegmentType) {
    case ' ': pCombo->SetCurSel (0);
    break;
    case '-': pCombo->SetCurSel (1);
    break;
    case 'C': pCombo->SetCurSel (2);
    break;
    case 'T': pCombo->SetCurSel (3);
    break;
    case 'S': pCombo->SetCurSel (4);
    default: pCombo->SetCurSel (0);
    break;
    } // switch
    // Jetzt kommt der Hammer!!!
    // Die nächste Zeile setzt den Text in der Editbox und zwar korrekt.
    
    pEdit->SetWindowText (Text);
    
    // ABER gleichzeitig ändert sich hier AUCH die Segmentanzahl in 
    // pLineType!!! Die Segmentanzahl wird genau um eins erhöht!!!
    // Ich bin am verzweifeln. Woran kann das liegen???
    
    }
    }
    

    Vielen Dank für jede Hilfe,
    Gruß
    Christian



  • Hast Du einen MessageHandler für EN_CHANGE vom Edit ?



  • Danke!
    Das wars, Man bin ich blöd man.

    Gruß
    Christian


Anmelden zum Antworten