Entwickler-Ecke

Windows API - Rausfinden ob eine Listbox Multiselect zulässt bzw. LB_EXTSE


Tweafis - So 22.06.03 08:52
Titel: Rausfinden ob eine Listbox Multiselect zulässt bzw. LB_EXTSE
Ich weiß, dass ich es beim erstelllen festlegen kann, aber ich will eine Unit für Listboxes schreiben und das wäre blöd wenn ich jedesmal das übergeben muss :( Es kommt mir darauf an dass ich feststellenkann ob LB_EXTENDEDSEL oder LB_MULTIPLESEL im Stil ist. gibt es da nicht sowas wie WN_GETSTYLE? Dann kan ich es ja ganz einfach mit

Delphi-Quelltext
1:
if (style) or LB_EXTENDEDSEL = LB_EXTENDEDSEL then ...                    

Es geht darum, dass ich sonst Fehler bei der ausgabe der selektierung bekomme, weil diese zwei verschiedene Messages braucht.


Delete - So 22.06.03 15:09

Ich weiß zwar nicht, was du da vor hast, aber die gesetzten Stile bekommst du mit GetWindowLong.


Tweafis - So 22.06.03 15:25


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function ListboxIsMultiSel(hWnd: HWND): Boolean;
var
  Style: DWORD;
begin
  Style := GetWindowLong(hWnd, GWL_STYLE);
  result :=
  ((Style and LBS_EXTENDEDSEL = LBS_EXTENDEDSEL) or
   (Style and LBS_MULTIPLESEL = LBS_MULTIPLESEL));
end;


Jetzt hab ich ne funktion, da ich ja irgendwie unterscheiden muss (beim auslesen von Selecteds), da ich ja ein array zurpckgeben und beim anderen ne Zahl. Kann man eigentlich verschiedene Sachen in einem Record zurpckgeben also so:


Delphi-Quelltext
1:
2:
3:
4:
case Integer of
0: bla1, bla2: Integer;
2: bla1, bla2: string;
end;

Kenn ich von fürher Dos die messages war das auch irgendwie so (mit den verscheidenen teilei neiemn Record)[/delphi]