Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 26.09.2004, 13:01 Titel: Listboxen |
|
|
Hallo
Ich habe in mein Dialogfeld eine Listbox eingefügt. Wie kann ich da jetzt Strings hinzufügen? Laut Doku muss man etwas mit LB_ADDSTRING machen, ich kann damit aber nix anfangen. Kennt ihr die Funktion?
THX |
|
Nach oben |
|
 |
mfc++ JLI'ler
Alter: 40 Anmeldedatum: 18.02.2004 Beiträge: 163 Wohnort: Bettlä Medaillen: Keine
|
Verfasst am: 26.09.2004, 13:45 Titel: |
|
|
wenn de in mfc machst ist ganz einfach.
1. machste bei den eigenschaften der listbox die einträge zum wählen und mit ctrl+enter machste nen neuen.
Code: | test1
test2
test3
.
.
. |
und dann machste ne funktion für den button:
Code: | void CProjektDlg::OnButton()
{
UpdateData(TRUE);
if(wert == "test")
{
//funktion
}
else if(wert == "test2")
{
//funktion
}
else if(wert == "test3")
{
//funktion
}
} |
so mach ich es  _________________ www.teslasystems.ch
 |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 26.09.2004, 13:54 Titel: |
|
|
öh? eine LisBox hat keinen Button?
Ich mach's leider nicht mit mfc. Aber trotzdem danke! |
|
Nach oben |
|
 |
DarK Super JLI'ler

Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 26.09.2004, 20:31 Titel: |
|
|
ich hab vor kurzem erst Listboxen benutzt, hier ein Beispiel:
ich benutz auch net die MFC...
Code: |
listbox = CreateMyWindow(L_LIST, hwnd, "LISTBOX", "", 625, 0, 175, 600, WS_CHILD | WS_VISIBLE | LBS_SORT | WS_VSCROLL | WS_BORDER | LBS_NOTIFY);
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM) "test1");
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM) "test2");
|
das angeklickte Element frag ich folgendermaßen ab:
Code: |
switch (message)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case L_LIST:
switch (HIWORD(wParam))
{
case LBN_SELCHANGE:
int nItem;
nItem = SendMessage(listbox, LB_GETCURSEL, 0, 0);
|
_________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 27.09.2004, 08:31 Titel: |
|
|
Vielen Dank, dass hilft mir schon mehr!
Aber von welchem Typ ist "listbox"? Und CreateMyWindow gibt es garnicht? Und wie benutze ich das wenn ich die Listbox mit dem Editor eingebaut habe?
THX |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 27.09.2004, 18:04 Titel: |
|
|
Wo genau liegt denn dein Problem? Die Dialogbox zu starten, oder Werte daraus zu bekommen und in deinem Programm zu benutzen? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 28.09.2004, 13:24 Titel: |
|
|
Mit der DialogBox habe ich keine problem sondern mit der ListBox und bei der weiss ich nicht wie man Werte rein oder raus bekommt, gibt es nicht ne Funktion wie SetDlgItemText? |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 28.09.2004, 14:04 Titel: |
|
|
Ich glaub bei Listbox musst du nur mit SendMessage arbeiten. Einträge dazuschreiben ist LB_ADDSTRING. Die genaue Beschreibung dafür gibts auch in der MSDN: dort einfach mal LB_ADDSTRING eingeben da wird das erklärt.
Aus dem Gedächnis ist das glaub ich SendMessage(hwnd,LB_ADDSTRING,wparam,lparam) ist aber alles ohne gewähr!! _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 28.09.2004, 14:39 Titel: |
|
|
Ja so hab ich es auch probiert. Aber was gebe ich bei HWND an wenn ich es als resource erstellt habe? Und wie weiss er um welche Listbox es sich handelt, wenn es mehrere sind? Hat jemand vielleicht etwas beispiel code? Oder wie bekomme ich das Handle einer DialogBox?
THX |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 28.09.2004, 17:06 Titel: |
|
|
Ich hab es mal so probiert, aber die Liste bleibt leer
Code: |
SendMessage(GetDlgItem(hWnd,IDC_TFRENCH),LB_ADDSTRING,0,(LPARAM)"test"); |
|
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 28.09.2004, 17:09 Titel: |
|
|
Zitat: | lParam
Pointer to the null-terminated string that is to be added. |
pointer!=const _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 28.09.2004, 17:10 Titel: |
|
|
OK, ich hab's gerade mal ausprobiert:
1. es funkt auch mit SendDlgItemMessage:
Code: |
SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"test");
|
und man hat in der Listbox das Wort Test stehen.
hwnd ist ja dein Fensterhandle, das übergibst du ja so oder so.
Wenn du mehere Listboxen hast, hast du ja IDC_LIST1, IDC_LIST2 usw. dadurch kannst du ja dann steuern in welche Listbox er was reinschreibst.
Das kannst zuweisen tust du am besten durch eine separate Funktion.
Bei mir sieht das z.B. so aus:
Code: |
LRESULT CALLBACK startDlgProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lparam)
{
switch(msg)
{
case WM_INITDIALOG:
SetDialogInfo(hwnd);
return TRUE;
case WM_CLOSE:
EndDialog(hwnd,0);
return TRUE;
case WM_COMMAND:
switch(wParam) {
case IDC_CHECK1:
ChangeModusTo16(hwnd);
return TRUE;
case IDC_CHECK2:
ChangeModusTo32(hwnd);
return TRUE;
case IDOK:
WriteDialogInfo(hwnd);
EndDialog(hwnd,IDOK);
return TRUE;
case IDCANCEL:
EndDialog(hwnd,0);
return TRUE;
} // switch(wParam)
default:
//message was not handled
return FALSE;
} // switch(msg)
}
|
wobei die funktion SetDialogInfo(hwnd) dann z.B.
Code: |
SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"test");
|
enthalten kann. _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 28.09.2004, 17:13 Titel: |
|
|
Beni5 hat Folgendes geschrieben: | Ich hab es mal so probiert, aber die Liste bleibt leer
Code: |
SendMessage(GetDlgItem(hWnd,IDC_TFRENCH),LB_ADDSTRING,0,(LPARAM)"test"); |
|
Ganz klar, mit GetDlgItem versuchst du auch markierte Einträge auszulesen und nicht Info's in die Listbox zu schreiben... _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 28.09.2004, 17:38 Titel: |
|
|
Geht jetzt, hab die Nachrichtenschleife rausgenommen, weil das in nem Tutorial so stand... |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 28.09.2004, 21:06 Titel: |
|
|
Das geht auch ohne Nachrichtenschleife??? Wußt ich auch noch nicht. _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
|