CComboBox und CString nach int bei VC++2005
-
Hallo,
ich habe im Resourcen-Editor einen Dialog mit einer Combobox drauf die ich mit mehreren Strings fülle. In der Vorschau werden mir alle Strings wunderbar angezeigt, aber wenn ich das Programm compiliert habe, dann sehe ich nicht einen String drinne. Habe auch versucht bei OnInitDialog das ganze mit
... m_ctrlComb.AddString(_T("Einfach")); m_ctrlComb.AddString(_T("Zweifach")); m_ctrlCpmb.AddString(_T("Dreifach")); ...zu füllen aber das klappt auch nicht. Weis da jemand Rat ?
Und noch was wenn ich einen String nach int mit atoi(str) konvertieren will, dann zeigt er mir folgende Fehlermeldung an:
error C2664: 'atoi': Konvertierung des Parameters 1 von 'CString' in 'const char *' nicht möglichWeis jemand auch hier Rat ?
Dank Euch schon mal.
-
Ist das hier eins deiner Probleme ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39108.html
-
Wo ist in Deinem Code die stelle mit "atoi"?
Und verwende anstelle von atoi bitte "_tstoi" (TCHAR-Version!).
-
Es ist übrigens einfacher die Daten/Werte diezu einem Eintrag gehören mit SetItemData abzulegen.
Also AddString durchführen, den index nutzen und SetItemData aufrufen. Dann kannst Du einfach die selektierten Daten per GetItemData abfragen.
-
Hallo Leute und Danke für die Hilfen erstmals.
Also das mit dem CString nach int funzt jetzt mit:CString str = "120"; int a = _tstoi(str);aber das Problem mit der ComboBox ist noch nicht behoben. Kann mir da jemand vieleicht ein Beispiel posten so wie z.B. das folgende ? Ich habe dort immer noch das Problem das gleich beim ersten Eintrag das Programm abbricht. Vorweg schon mal die Liste ist im Resourcen-Editor groß genug.
CComboBox* pComb = new CComboBox(); pComb->AddString(_T("1")); // Hier erfolgt schon der Abbruch pComb->AddString(_T("2")); pComb->SetItemData(0,2);Danke schon mal
-
in der MSDN stehts ohne new
CComboBox* pmyComboBox; CString str=_T(""); for (int i=0;i < 20;i++){ str.Format(_T("item string %d"), i); pmyComboBox->AddString(str); }
-
CComboBox* pmyComboBox; CString str=_T(""); for (int i=0;i < 20;i++){ str.Format(_T("item string %d"), i); pmyComboBox->AddString(str); }Hallo,
so habe ich das auch probiert aber bekomme eine Fehlermeldung das die Variable pmyComboBox benutzt wird ohne vorher initialisiert zu werden.Dann habe ich mit CComboBox* pmyComboBox = new CComboBox(); die Variable initialisiert und trotzdem stürzt das Programm bei AddString ab. Erbitte um weitere Hilfe.
Danke
-
Also entweder fügst du zu einem ComboBox-Element ein Steuerelement als Membervariable hinzu und kontrollierst die Combobox dann über diese Variable, oder du erstellst die Box dynamisch, dazu musst du aber vorher Create aufrufen.
Ich schlage zudem mal vor, dass du dir ein Tutorial zur MFC durcharbeitest. Ein Beispiel wäre dieses hier:
http://www.henkessoft.de/C++/MFC/MFC Tutorials.htmGrüssli
-
Hallo,
das beste was ich jetzt herausgefunden habe ist gar nicht erst mit irgendwelchen Variablen zu arbeiten wenn man nur temporär Daten zwischen Fenstern(z.B. Buttons, Editfelder) hin und herschieben will, sondern mit den API-Funktionen z.B. so:CComboBox* pCombo = (CComboBox*)GetDlgItem(IDC_COMBOF); pCombo->AddString(_T("erster")); pCombo->AddString(_T("zweiter")); pCombo->SetCurSel(0); ...funzt wunderbar und zeigt auch die Werte nach dem compilieren an (Debug- oder Release-Vers. egal).
Oder wenn man die Schrift ändern will:
CWnd* pWnd = GetDlgItem(IDC_PREVSHOW); pWnd->SetFont(m_NewFont); // Pointer auf m_NewFont pWnd->SetWindowText(m_strFont); // CStringfunzt auch wunderbar und finde auch den Zugriff auf die Fenster viel besser. Ausserdem spart man lästige Variablen und bläht nicht unnötig seinen Code auf.
Wenn einer eine bessere Alternative kennt bitte posten.
LG