Ich nutze die Funktion ListView_GetItemTextW aus der commctrl.pas von Borland. Gut, dass es mit der
Unicode-Unterstützung nicht weit her ist, ist ja bekannt. Aber icl6 Personal dabei. Also habe ich mir die Funktion mal angeguckt:
Delphi-Quellcode:
function ListView_GetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
pszText: PWideChar; cchTextMax: Integer): Integer;
var
Item: TLVItemW;
begin
Item.iSubItem := iSubItem;
Item.cchTextMax := cchTextMax;
Item.pszText := pszText;
Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Longint(@Item));
end;
Das kann ja nicht funktionieren. Benutzt wird die WideChar Version der TLVItem Struktur. Gesendet wird aber die
Ansi-Version der Nachricht LVM_GETITEMTEXT. Da fehlt also ein
W am Ende. LVM_GETITEMTEXT
W muss es heißen und dann funktioniert das ganze auch.
Bei ListView_SetItemTextW übrigens das gleiche:
Delphi-Quellcode:
function ListView_SetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
pszText: PWideChar): Bool;
var
Item: TLVItemW;
begin
Item.iSubItem := iSubItem;
Item.pszText := pszText;
Result := Bool( SendMessage(hwndLV, LVM_SETITEMTEXT, i, Longint(@Item)) );
end;
Was soll denn das?