wert zuweisen einer edit-control



  • hallo leute..

    ich habe folgendes problem: habe mir einen dialog mit tab gemacht. dort sind verschiedene buttons, edit controls usw.

    ich lese mir mit einer funktion CPageConnection::GetLLTInfos verschiedene infos raus.
    z.b.

    cout << "Gets the serial number of the LLT\n";
      if((nRetValue = m_pLLT->GetFeature(FEATURE_FUNCTION_SERIAL, &Serial)) < GENERAL_FUNCTION_OK)
      {
        OnError("Error during GetSerial", nRetValue);
        return;
      }
    
      cout << "Serial is " << Serial << "\n";
    

    dieses wird mir nun auf der konsole angezeigt, weil ich mir ein extra projekt gemacht habe, um zu sehen, was ausgegeben wird, aber s handelt sich um mfc.

    nun möchte ich meinem edit control den wert, den Serial bekommt zuweisen. Wie mache ich das??ach ja, die Serial-Variable ist vom Typ DWORD.



  • Möglichkeit 1: Du verknüpfst das Edit-Feld per Klassenassistent mit einer Variablen (int oder CString), der kannst du an der richtigen Stelle einen Wert zuweisen und diesen mit UpdateData(FALSE) anzeigen lassen.

    Möglichkeit 2: Du verknüpfst das Edit-Feld mit einer CEdit-Variablen und kannst dann über SetWindowText() oder SetSel()/ReplaceSel() seinen Inhalt verändern.

    Möglichkeit 3: Wie (2), aber du holst dir das Control direkt per GetDlgItem().



  • drei möglichkeiten. kannst du mir auch dies per code anweisung aufzeigen??wo packe ich den codeteil hin in welche funktion??



  • Möglichkeit 1a:
    ("CString m_edit;" lässt du vom Klassenassistenten anlegen)

    m_edit.Format("Serial is %i",Serial);
    UpdateData(FALSE);
    

    Möglichkeit 1b:
    ("int m_edit;" liefert der Assistent - hier kannst du nur die Zahl eintragen, die Bemerkung "Serial is" mußt du neben das Feld schreiben)

    m_edit = Serial;
    UpdateData(FALSE);
    

    Möglichkeit 2:
    ("CEdit m_edit;" liefert wieder der Assistent)

    CString out;
    out.Format(Serial is %i",Serial);
    m_edit.SetWindowText(out);
    

    Möglichkeit 3:
    (benötigt keine Membervariable, nur die Id 'IDC_EDIT' des Controls)

    CString out;
    out.Format("Serial is %i",Serial);
    GetDlgItem(IDC_EDIT)->SetWindowText(out);
    

    Den jeweiligen Code packst du dort hin, wo du ihn brauchst (sprich: in die Funktion, in der auch dein obiges Code-Fragment steht).



  • danke für die schnelle antwort. also brauche ich nicht den code irgendwo reinpacken, wo sozusagen mir das fenster neugeladen wird??



  • mit der letzten methode hat es super geklappt. nun habe ich aber auch noch eine frage. ich habe eine Variable, die ist vom Typ

    std::vector<char> DeviceName[50];
    

    wie wandle diese wieder in einen string um?? so dass ich wieder die sache ausgeben kann??

    um vielleicht noch etwas genauer zu sagen:

    ich habe folgendes:

    cout << "Gets the device name\n";
    std::vector<char> DeviceName[50];
    if((nRetValue = m_pLLT->GetFeature(FEATURE_FUNCTION_SERIAL, &DeviceName[0],(unsigned int) DeviceName.size(),NULL,NULL)) < GENERAL_FUNCTION_OK)
      {
        OnError("Error during GetDeviceName", nRetValue);
        return;
      }
    
      cout << "DeviceName is " << &DeviceName[0] << "\n";
    

    wie kann ich mir nun DeviceName in mein EditControl packen?



  • Ein Array mit 50 vector<>en? Wozu soll das gut sein?



  • keine ahnung.ist so vorgegeben in der dll, die ich einbinde und somit denke ich, dass ich die sache irgendwie übernehmen muss..



  • Also für mich macht dieser Code keinen echten Sinn - das heißt entweder ich hab' das Konzept deines Systems nicht verstanden oder du. Zeig doch mal die Deklaration der Methode GetFeature().



  • schon erledigt..danke für eure hilfe..


Anmelden zum Antworten