Hallo crack, es geht darum, in ein Virtual-Listview-Feld mehr als 260 Zeichen, was standardmäßig ja das Maximum ist, zu schreiben. Wie üblich stehen die Daten dafür in einem Array. Ich denke mal, das Virtual-Listview benutzt eine feste Struktur, die müsste man dann wohl ändern... ich weiß nur nicht, wie.
Die Struktur über die die Daten an ListView übergeben werden heist "LV_ITEM" und dort gibt es einen Parameter 'cchTextMax', dem Namen nach könnte das der Parameter sein der eine Limitierung der Textlänge setzt. Am besten Du lädst Dir mal von unserer Hauptseite die Win32SDK.hlp runter, da steht das ganze ausführlich drin.
ist schon klar, die Struktur benutze ich natürlich. Unter cchTextMax steht aber:
Size of the buffer pointed to by the pszText member if the structure is receiving item attributes. If the structure specifies item attributes, this member is ignored.
Das heißt, bei LVN_GETDISPINFO ist in der LV_DISPINFO auch LV_ITEM enthalten und dort kann man dann die Länge über cchTextMax ermitteln. Sie läßt sich dort aber nicht setzen.
Ich überlege ob das Limit nicht 'hardcoded' ist, den VirtualListView dient ja der Darstellung von Ordnerinhalten, und Dateinamen sind ja max 256 Bytes lang ...
... kann schon sein, dass MAX_PATH (Systemvariable von Windows, mit 260 Bytes definiert) hier die Grundlage ist. In Virtual-ListViews wird ja eh nicht wie sonst üblich die LV_ITEM Struktur gefüllt und dann mit LVM_INSERTITEM bzw. ab Feld 1 LVM_SETITEMTEXT Text eingesetzt. Dort kann der Text übrigens auch länger als 260 Zeichen sein.
Jetzt werde ich mich noch ein wenig mit der DLL-Geschichte beschäftigen, ist mir unklar, früher in PBWin70 war DLLs erstellen überhaupt kein Problem.