ListBox
-
Falls du es dir mit Visual Studio zusammengeklickt hast, wird es wohl bei den Eigenschaften dafür ein Kontrollkästchen geben
-
Hi,
schau dir mal folgende Links an http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listboxes/listboxes.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindowex.asp
über CreateWIndowEx kannst du deine ListBox erstellen und den Stayle "LBS_SORT" setzen.
MfG
Anakin
[ Dieser Beitrag wurde am 03.03.2003 um 13:24 Uhr von Anakin Skywalker editiert. ]
[ Dieser Beitrag wurde am 03.03.2003 um 13:25 Uhr von Anakin Skywalker editiert. ]
[ Dieser Beitrag wurde am 03.03.2003 um 17:07 Uhr von Anakin Skywalker editiert. ]
-
Ich hab die ListBox in einem Dialog, der über das Menü aufgerufen wird.
Die ListBox erstelle ich mit dem Ressourcen-Editor.
Wo kann ich da den Style setzen?PS: Ich hab keine CreateWindowEx-Funktion für den Dialog erstellt. Ich bezieh mich auf den Dialog (und die Listbox) nur mit der Ressourcen-ID.
[ Dieser Beitrag wurde am 03.03.2003 um 18:36 Uhr von Gary editiert. ]
-
Hast du mal nachgeschaut, ob es dafür im Ressourcen-Editor kein Kontrollkästchen gibt?!
Ansonsten SetWindowLong bzw. SetWindowLongPtr mit GWL_STYLE und der neuen Stylekombination aufrufen! Ala King sieht das dann so aus:LONG_PTR lStyle; lStyle = GetWindowLongPtr(hWnd, GWL_STYLE); lStyle &= LBS_SORT; SetWindowLongPtr(hWnd, GWL_STYLE, lStyle);
Ist nicht getestet, sollte aber so funktionieren
Irgendwie mag er heut meine URLs net
[ Dieser Beitrag wurde am 03.03.2003 um 19:30 Uhr von flenders editiert. ]
-
Original erstellt von flenders:
**sollte aber so funktionieren
**Das bezweifle ich.
Versuch es mal so, ist auch kürzer:
SetWindowLongPtr(hWnd, GWL_STYLE, LBS_SORT | GetWindowLongPtr(hWnd, GWL_STYLE));
BTW: Im Res-Editor doppelt auf die Listbox clicken, dann ober auf Formate und ein Häkchen vor Sortieren machen.
-
Uops, sorry! Jetzt hab ich gedacht, ich schaff es das Beispiel von King anzupassen und schon war's nichts
Aber mit der anderen Möglichkeit lag ich richtig
-
Schieben wir die Schuld mal auf King (:p), denn hätte er das Flag statt mit diesem
LONG_PTR lExStyle; lExStyle = GetWindowLongPtr(hWnd, GWL_EXSTYLE); lExStyle &= ~WS_EX_TOOLWINDOW; SetWindowLongPtr(hWnd, GWL_EXSTYLE, lExStyle);
Code, mit diesem gelöscht:
SetWindowLongPtr(hWnd, GWL_EXSTYLE, GetWindowLongPtr(hWnd, GWL_EXSTYLE)^WS_EX_TOOLWINDOW);
wäre es nicht nur viel einfacher zu verstehen, sonern auch viel einfacher anzupassen gewesen
Dank dir und King hab ich allerdings gerade gelernt, was dieser Operator macht: ~
tja in C gibts halt alles
-
Code, mit diesem gelöscht:
SetWindowLongPtr(hWnd, GWL_EXSTYLE, GetWindowLongPtr(hWnd, GWL_EXSTYLE)^WS_EX_TOOLWINDOW);
Das löscht nicht, das dreht um. Ich habe das damals aber extra in mehrere Zeilen gelegt. Ichz dachte, daß das einfacher zu lesen ist. Hab ich mich halt getäuscht.
-
Nagut, natürlich macht es aus einer 0 auch eine 1, aber wenn es eine 1 ist, wird sie gelöscht und wenn es schon eine 0 ist, braucht man das Flag ja nicht mehr zu löschen
-
Das ist natürlich richtig. Und wenn das Flag versehentlich vorher schon gelöscht war, kann man endlich mal wieder seine Zeit mit Fehlersuche verbringen.