Listbox Stil ändern
-
Hallo Leute!
Ich habe in einem Dialog eine Listbox mit einfacher Auswahl.
Nun möchte ich programmgesteuert Mehrfachauswahl. Wie mach ich das???
Habe folgenden Anfängerversuch unternommen:case WM_INITDIALOG: ... HWND hLB = ::GetDlgItem(hDlg, ID_LISTBOX1); ::SetWindowLong(hLB, GWL_STYLE, ::GetWindowLong(hLB, GWL_STYLE) | LBS_EXTENDEDSEL); //Der neue Stil wird wunderbar akzeptiert, //wie man bei ein späteren Aufrufen von ::GetWindowLong(hLB, GWL_STYLE) sieht, //hat jedoch keinerlei Effekt - noch immer nur Einfachauswahl! //Auch das in der MSDN vorgeschlagene SetWindowPos() nutzt nichts ::SetWindowPos(hLB, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); //Dialogvorlage in RC-Datei IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 232, 126 STYLE DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION FONT 8, "MS Sans Serif" BEGIN LISTBOX ID_LISTBOX1,12,22,158,63,LBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "OK",IDOK,25,100,50,14,BS_CENTER ENDLeider hat das überhaupt keine Auswirkungen auf die Listbox! Was mache ich falsch??
-
AFAIK lässt sich der Auswahltyp-Style bei Listboxen nicht ändern.
-
wie wäre es denn mit einer listview
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/listview.asp
-
Geht es dir um die Erstellung (kannst du doch auf der Eigenschaftsseite des Listenfeldes) auswählen, oder darum, wie du jetzt über den Quelltext mehrere Einträge markierst?
siehe auch: Using List Boxes
-
Danke für die Tips!
Einmal erzeugt läßt sich tatsächlich bei einer Listbox so gut wie nichts mehr ändern. Werde dann eben doch die Vorlage in der RC-Datei anfassen müssen.
-
Wie kommst du darauf, dass sich da nichts mehr ändern liese

Schau dir mal SetWindowLong(Ptr) an
-
Manche Sachen lassen sich aber trotzdem nicht nachträglich noch ändern!!!!!!
-
flenders schrieb:
Wie kommst du darauf, dass sich da nichts mehr ändern liese

Hier heißt es:
MSDN schrieb:
After the control has been created, these styles cannot be modified, except as noted.
flenders schrieb:
Schau dir mal SetWindowLong(Ptr) an

Klappt nicht, sorry. Probier's aus

-
*duck* - ich hätte mir die Seite wohl doch etwas genauer anschauen sollen
