Benutzer mit den meisten Antworten
C++ Win32-Anwedung Combobox

Frage
-
Mein Problem ist folgendes.
Ich hab eine INI-Datei und möchte die Einträge in eine Win32 Combobox reinladen,
das klappt ganz gut wenn ich es einzeln mache, aber ich möchte es in einer Schleife machen
sonst muss bei jedem neune INI-Eintrag dies auch im Source ändern.
Antworten
-
Hallo Robert!
> Verstanden, und dann wäre der Letzte Parameter von SendMessage à lParam
> = (LPARAM) (LPCTSTR) lpsz ?
Nein... warum soll man zweimal casten?
Eigentlich ist jeder Cast zu viel und deutet meistens auf Fehler hin....
Also so lässt sich das ganze wunderbar compilieren:
void FillListBox(HWND hwndList)
{
LPCTSTR pVarName[] = { _T("Item1"), _T("Item2"), _T("Item3"),
_T("Item4"), _T("Item5") };
for(int i=0; i<5; i++)
SendMessage(hwndList, CB_ADDSTRING, 0, (LPARAM) pVarName[i]);
}
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Robert Breitenhofer Mittwoch, 31. März 2010 12:42
- Als Antwort markiert AntiSpy Donnerstag, 1. April 2010 10:24
Alle Antworten
-
Wie meinst Du das?
Zeig mal die Daten aus der INI Datei damit man eine Ahnung hat, was Du anzeigen willst.
Ansonsten kann man mit GetPrivatePrfoileString auch ganze Sektionen einer INI Datei einlesen.
http://msdn.microsoft.com/en-us/library/ms724353(VS.85).aspxErtser bzw. zweiter Parameter bleibt dann NULL.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Also das aus der INI Lesen klappt
Das ist ja einleichtes steht ja in der Windows.h
TCHAR Comboitems[40];
GetPrivateProfileString(TEXT("combobox"), NULL, NULL, Comboitems, sizeof(Comboitems), TEXT("C:\\Users\\Lilli\\Desktop\\test.ini"));
//g_pCombo.AddString( "test1" );
//g_pCombo.AddString( "test2" );
//g_pCombo.AddString( "test3" );
g_pCombo.SetCurSel( 0 );Das hinzufügen der Items hab ich mal Auskommentiert.
Es Sollte jetzt nur folgendes passieren, eine Schleife die mir die Items in die Combobox hinzufügt
egal wie viele da drin stehen sollte es mir in der INI den Abschnitt [combobox] komplett auslesen.
Also in einer Schleife oder so etwas in der richtung.
-
Hallo AntiSpy,
Schau Dir mal folgendes Beispiel an. Vielleicht kann es Dir weiter helfen.
http://www.daniweb.com/forums/thread34641.html
Auf einmal wird die ComboBox mit folgendem Code gefühlt:
void FillListBox(HWND hwndList) { TCHAR *pVarName[] = {"Item1", "Item2", "Item3", "Item4", "Item5"}; for(int i=0; i<5; i++) SendMessage(hwndList, CB_ADDSTRING, 0, (LPARAM)pVarName[i]); }
Grüße,
Robert
-
Hallo Robert!
> void FillListBox(HWND hwndList)
> {
> TCHAR *pVarName[] = {"Item1", "Item2", "Item3", "Item4", "Item5"};
Ganz böse.... TCHAR verwendet aber String-Literale nicht mit TEXT oder
_T versehen.... richtig wäre:LPCTSTR pVarName[] = {_T("Item1"), _T("Item2"), _T("Item3"),
_T("Item4"), _T("Item5") };
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Robert Breitenhofer Mittwoch, 31. März 2010 12:33
-
Hallo Robert!
> Verstanden, und dann wäre der Letzte Parameter von SendMessage à lParam
> = (LPARAM) (LPCTSTR) lpsz ?
Nein... warum soll man zweimal casten?
Eigentlich ist jeder Cast zu viel und deutet meistens auf Fehler hin....
Also so lässt sich das ganze wunderbar compilieren:
void FillListBox(HWND hwndList)
{
LPCTSTR pVarName[] = { _T("Item1"), _T("Item2"), _T("Item3"),
_T("Item4"), _T("Item5") };
for(int i=0; i<5; i++)
SendMessage(hwndList, CB_ADDSTRING, 0, (LPARAM) pVarName[i]);
}
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Robert Breitenhofer Mittwoch, 31. März 2010 12:42
- Als Antwort markiert AntiSpy Donnerstag, 1. April 2010 10:24