List Box
-
Ich will eine List Box in mein Prog einbinden. Mein Problem ist ich weiss nicht jatzt nicht was mir in den lParam und wParam zurück gegeben wird
(bei LB_GETTEXT, LB_ADDSTRING, LB_GETSELITEMS)
und wie ich zwischen meheren unterscheiden kann.dankbar für Hilfe
-
Da steht alles drin.
cu
-
LB_ADDSTRING:
- wParam: immer 0
- lParam: Zeiger auf den String der eingefügt werden soll
Beispiel:
TCHAR szText[] = TEXT("Der Text"); SendMessage(hwndList,LB_ADDSTRING,0,(LPARAM)szText);
LB_GETTEXT:
- wParam: Nummer des Eintrags, dessen Text du haben willst. Der erste Eintrag hat Nummer 0, der zweite Nummer 1 usw.
- lParam: Zeiger auf den String, in dem der Text gespeichert werden soll.
Beispiel:
TCHAR szText[100]; // muss gross genug sein SendMessage(hwndList,LB_GETTEXT,0,(LPARAM)szText);
In dem Beispiel wird der Text des ersten Eintrags in der Liste ermittelt.
LB_GETSELITEMS:
- wParam: Maximale Anzahl, die das Array aufnehmen kann
- lParam: Pointer auf ein INT-Array, in dem die Indexnummer der selektierten Einträge gespeichert werden.
Beispiel:
#define MAXNUM 20 int iIndices[MAXNUM]; SendMessage(hwndList,LB_GETSELITEMS,MAXNUM,(LPARAM)iIndices);
[ Dieser Beitrag wurde am 12.12.2002 um 17:02 Uhr von macphistox2002 editiert. ]
-
coll danke weiss noch jemand wie ich eine Scroll Leiste hinkriege wenn ich die List Box anklicke(oder Nebenstehenden Button (im Feld)drücke) oder geht das nicht ?
-
wie unterscheide ich nun welche LIST BOX ich etwas hinzufüge oder auslese.
-
am fensterhandle natürlich
-
und wenn ich mehr als eine habe wo schreib ich das hin.
-
Ich glaube du solltest das mit dem Drucker erstmal lassen.
SendMessage(hwndList
-
ja das gibt doch nur an von welchem fenster wenn ich aber nun 3 List Boxen in einem Fenster was mach ich den dann. Das wollte ich wissen und weill es bei mir nicht func. ich hab es bei case WM_INITDIALOG: reingepackt aber es wird nichts angezeigt.
-
Listboxen sind auch Fenster!
-
tja ok dann zu meinem Problem ich denn Text von oben in mein Prog unt case WM_INITDIALOG: eingefügt nur wird nichts angezeigt woran kann das liegen.
BOOL CALLBACK EingabeDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { case WM_INITDIALOG: { SetDlgItemText(hwnd, IDC_VERWENDUNGSZWECK, "- Keine Eingabe -"); TCHAR szText[] = TEXT("Gruppenname"); SendMessage(hwnd,LB_ADDSTRING,0,(LPARAM)szText); return TRUE; } break; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_WEITERE_EINGABEN: { BOOL correct = TRUE; int Betrag; //Abfrage Betrag int BetragV = GetDlgItemInt(hwnd, IDC_BETRAG_V, 0, 0); int BetragN = GetDlgItemInt(hwnd, IDC_BETRAG_N, 0, 0); if (BetragN==0) { Betrag= BetragV+(BetragN/100); }else Betrag = BetragV; //Abfrage Gruppenname kommt noch TCHAR szText[20]; SendMessage(hwnd,LB_GETTEXT,0,(LPARAM)szText); //Abfrage Verwendungszweck int len = GetWindowTextLength(GetDlgItem(hwnd, IDC_VERWENDUNGSZWECK)); char VZweck[len+1]; GetDlgItemText(hwnd, IDC_VERWENDUNGSZWECK, VZweck, len+1); if(len==0) { MessageBox(hwnd, "Keine Eingabe bei Datum (Tag)", "Hinweis", MB_ICONEXCLAMATION | MB_OK); } //Abfrage Datum //Abfrage Tag int Tag = GetDlgItemInt(hwnd, IDC_TAG, 0, correct); if(Tag==0) { MessageBox(hwnd, "Keine Eingabe bei Datum (Tag)", "Hinweis", MB_ICONEXCLAMATION | MB_OK); } //Abfrage Monat int Monat = GetDlgItemInt(hwnd, IDC_MONAT, 0, correct); if(Monat==0) { MessageBox(hwnd, "Keine Eingabe bei Datum (Monat)", "Hinweis", MB_ICONEXCLAMATION | MB_OK); } //Abfrage Jahr int Jahr = GetDlgItemInt(hwnd, IDC_JAHR, 0, correct); if(Jahr==0) { MessageBox(hwnd, "Keine Eingabe bei Datum (Jahr)", "Hinweis", MB_ICONEXCLAMATION | MB_OK ); } //Fehler abfang Betrag if(Betrag==0) { correct=FALSE; MessageBox(hwnd, "Keine Eingabe bei Betrag", "Hinweis", MB_ICONEXCLAMATION | MB_OK); } if (correct) { count++; SetDlgItemText(hwnd, IDC_BETRAG_V, ""); SetDlgItemText(hwnd, IDC_BETRAG_N, ""); SetDlgItemText(hwnd, IDC_VERWENDUNGSZWECK, "- Keine Eingabe -"); SetDlgItemText(hwnd, IDC_TAG, ""); SetDlgItemText(hwnd, IDC_MONAT, ""); SetDlgItemText(hwnd, IDC_JAHR, ""); } return 0; } break; case IDC_ENTFERNEN: { SetDlgItemText(hwnd, IDC_BETRAG_V, ""); SetDlgItemText(hwnd, IDC_BETRAG_N, ""); SetDlgItemText(hwnd, IDC_VERWENDUNGSZWECK, ""); SetDlgItemText(hwnd, IDC_TAG, ""); SetDlgItemText(hwnd, IDC_MONAT, ""); SetDlgItemText(hwnd, IDC_JAHR, ""); return 0; } break; case IDC_ZURUECK: EndDialog(hwnd, IDC_ZURUECK); return 0; break; } return TRUE; } case WM_CLOSE: EndDialog(hwnd, 0); return TRUE; } return FALSE; }
-
lol, du sendest ja LB_ADDSTRING an deinen Dialog. Das kann ja auch nicht funktionieren. mit GetDlgItem und der ID kommst du an das Handle der Listbox
-
funktioniert trotzdem nicht
hab es so probiert:case WM_INITDIALOG: { SetDlgItemText(hwnd, IDC_VERWENDUNGSZWECK, "- Keine Eingabe -"); GetDlgItem(hwnd,IDC_GRUPPE_E); TCHAR szText[] = TEXT("Gruppenname"); for(int x = 0; x<2; x++) { SendMessage(hwnd,LB_ADDSTRING,x,(LPARAM)szText); } return TRUE; } break;
-
löl lies doch mal ein tutorial! du hast ja garnichts verstanden.
case WM_INITDIALOG: { SetDlgItemText(hwnd, IDC_VERWENDUNGSZWECK, "- Keine Eingabe -"); HWND hWndListBox = GetDlgItem(hwnd,IDC_GRUPPE_E); TCHAR szText[] = TEXT("Gruppenname"); for(int x = 0; x<2; x++) { SendMessage(hWndListBox,LB_ADDSTRING,x,(LPARAM)szText); } return TRUE; } break;
ich hoffe mal das IDC_GRUPPE_E wirklich die ID der Listbox ist. vielleicht sind noch andere Fehler drin. :p
-
danke funktioniert jetzt kannst ja nen link oder das tutorial schicken.
[ Dieser Beitrag wurde am 13.12.2002 um 00:20 Uhr von mosta editiert. ]
-
ne kannst du dir selbst aus dem forum zusammensuchen. links zu tutorials wurden hier schon oft gepostet.
-
@fauler sack
-
hey das was ich bisher habe ist nicht so toll bzw beantwortet keine wirklichen hintergrund frage sondern man bekommt nur die funktionen benannt und das wars.
Für den Petzhold hab ich kein Geld über (musste meine komplette Hardware updaten).