ich wollte an die Desktop Icons und mein Code funktionierte unter 32bit.
der Code funktionierte aber leider nicht auf einem 64bit OS() und ich fragte mich warum
beim suchen kam ich auf die Antwort : Der Explorer / Listview sind 64bit
es gab nun ein Workaround der bei mir funktioniert ... aber diskussionsfähig ist ob man das machen "darf"
beim debuggen viel mir auf das der Pointer auf die LVITEM Structure nicht völlig verkehrt war ... die ersten 5 Member stimmten.
Code: Alles auswählen
BEGIN STRUCTURE LVITEM64
MEMBER UINT mask
MEMBER int iItem
MEMBER int iSubItem
MEMBER UINT state
MEMBER UINT stateMask
der Workaround besteht nun darin in die Structure einen Member "dazwischen" einzubauen
Code: Alles auswählen
MEMBER int placeholder1 // NEED for 64bit
MEMBER LPSTR pszText
MEMBER int placeholder2 // NEED for 64bit
MEMBER int cchTextMax
auch beim Rest benötigt man noch Anpassungen bis alles "passt"
Code: Alles auswählen
MEMBER int iImage
MEMBER LPARAM lParam
MEMBER int placeholder3
MEMBER int iIndent
MEMBER int iGroupId
MEMBER UINT cColumns
MEMBER int placeholder4
MEMBER POINTER32 puColumns
MEMBER int placeholder5
MEMBER POINTER32 piColFmt
MEMBER int placeholder6
MEMBER int iGroup
MEMBER int placeholder7
END STRUCTURE
leider verstehe ich bislang noch nicht "wieso" es mit der geänderten Structure unter 64bit funktioniert
deshalb bin ich mir auch nicht bewusst ob es da knallen könnte ... ich "lese" nur.
anbei Demo welches die Desktop Icon Positionen speichert / wiederherstellt.