ListBox Elemente hinzufügen + EnumWindowsProc
-
Servus,
möchte eine ListBox mit allen aktiven Fenstern ausgeben.
Hier die EnumWindowsProc:
/* Callback Funktion EnumWindowsProc * --------------------------------- */ BOOL CALLBACK EnumWindowsProc (HWND hWnd, LPARAM lParam){ if(hWnd != (HWND) lParam){ int iBufferSize = GetWindowTextLength(hWnd) + 1; char *buffer = new char[iBufferSize]; GetWindowText(hWnd,buffer,iBufferSize); if (GetParent(hWnd)!=NULL){ if(lstrcmp(buffer,"") != 0) { // Noch mit FEHLER!!!! SendMessage(MAKEINTRESOURCE(IDC_LIST1),LB_ADDSTRING, 0, (LPARAM)buffer); // SendMessage ((HWND) lParam, WM_MYMSG); // ADD.fensterListe.ITEM(buffer, index_num) //MessageBox(NULL,buffer,"Titel",0); } } delete [] buffer; } // true zurückgeben, um Aufzählung fortzusetzten: return TRUE; } /*Ende CALLBACK - EnumWindowsProc*/Wie man sieht habe ich schon etwas rumprobiert... allerdings bekomme ich es net hin...
Möchte das gerne in der WndProc Callback ausgeben beim Klicken der rechten Maustaste:
case WM_RBUTTONDOWN: DialogBox(hInstance, MAKEINTRESOURCE(IDD_LISTE), hWnd, AboutDlgProc); break;Wie kann ich jetzt dem DialogFenster (IDD_LISTE) sagen, dass ich Elemente zu der darin vorhanden ListBox (IDC_LIST1) hinzufügen kann?
Habe schon mit google gesucht, aber nichts gefunden. Würde mich über eine Antwort freuen!
Danke!
-
Zuerst mal brauchst Du ein Window-Handle auf Deine ListBox (GetDlgItem). Dieses kannst Du dann z.B. dem EnumWindows mitgeben, damit Du es intern verwenden kannst...
Und dann kannst Du LB_ADDSTRING mit diesem Handle aufrufen...
-
Also irgendwie sowas?
IDD_LISTE = GetDlgItem(hWnd, -1); SendMessage(IDD_LISTE , LB_ADDSTRING, 0, (LPARAM)buffer);
-
Eher sowas:
HWND hListBox = GetDlgItem(hDialog, IDC_LIST1); SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM) szText);
-
Danke, allerdings hab ich noch nen Problem mit
GetDlgItem(hDialog... HWND GetDlgItem( HWND hDlg, // handle of dialog box int nIDDlgItem // identifier of control );musste also ja dann bei mir
HWND hListBox = GetDlgItem(hWnd, IDC_LIST1); SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM) buffer);heißen...
Allerdings wird so nichts zu meiner Liste hinzugefügt...
Die Anweisung in der Callback für den Dialog zu machen geht ja auch nicht, oder?
-
Also leider funktioniert es immer noch nicht bei mir.
Müsste ich nicht die ListBox, die ja in einem DialogFenster eigebaut ist, über die CallBack des DialogFenster ansprechen?
Vielleicht könnte mir ja mal einer erklären, wie ich eine ListBox in einem Dialog Fenster anspreche bzw. Fülle...Danke!