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..