wie bekomme ich das handle für listbox in in der initdlg?
-
blöde frage, aber ich raffs grad gar nicht mehr. hab ne listbox die ich mit werten füllen möchte. klar mit sendmessage(..) funktioniert aber nur, wenn ich es im case IDC_LIST1 mache, denn wenn ich es in den IntiDialog setze (wo es auch hingehört) habe ich das handle der listbox noch nicht, bzw. weiss nicht genau wie ich da dran komme... hilfe

LRESULT CALLBACK DlgGazeProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { HWND hwndList; switch(uMsg) { case WM_INITDIALOG: //wie komme ich hier an das handle von idc_list1? return TRUE; case WM_COMMAND: switch(LOWORD (wParam)) { case IDC_LIST1 : hwndList = GetDlgItem(hWnd, IDC_LIST1); SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "0"); SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "1"); SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) "2"); break;
-
Der Code zum füllem muss in den Abschnitt von WM_INITDIALOG! WENn GetDlgItem NULL zurück gibt, stimmt die ID nicht.
-
glaub da hast du mich falsch verstanden... :p ich weiss ja, dass des in den initdlg muss, aber wenn ich es dort mache, brauche ich ja das handle von meiner listbox - und eben da liegt mein problem. wie bekomme ich aus dem initdlg heraus das handle meiner listbox? momentan ist es ja so gelöst, dass wenn ich in die listbox klicke auch mein text erschein - allerdings soll der ja beim aufruf des dialogs schon drinstehen.
thnx & greetz
-
Ich habe Dich schon verstanden. Du machst es genauso wie Du es im WM_COMMAND Handler gemacht hast:
hwndList = GetDlgItem(hWnd, IDC_LIST1);
-
geht tatsächlich... als ich es das letze mal dort stehen hatte war das ergebnis, dass nichts in der listbox stand. seeehr seltsam.
aber vielen dank!
hast du evtl noch einen tip, wie ich am besten das gewählte element (string) abgreife (kein doppelklick oder so, sondern ok-button) und dann eine aktion durchführe?greetz & thnx
-
LB_GETCURSEL...
-
so in der art? klappt leider nicht ganz, denn nSelect kriegt immer den wert -1 zugewiesen. eine idee warum?
nSelect = (int)SendDlgItemMessage(hWnd, IDC_LIST1, LB_GETCURSEL, 0, 0);
greetz & thnx