Basically in Win64 you use 64 bit integers in most instances with the exception of some structure members that can be 32 bit. Avoid mixed data sized where possible as it can make a mess of some code. In 64 bit Windows, all addresses are QWORD so if anything looks like a PTR or similar equates, they are QWORD in size. This keeps the world simple in most instances, just check the size of structure members.
Thank you Hutch, this is exactly my assumptions, but I could easily have been wrong.
I'm working on a 32 bit program that will run on both 32bit and 64 bit windows. It's the same old tired program (DIP) I've been working on occasionally for years. So to send messages to the 64 bit program running the listview for the desktop, I need to get the structures correctly defined. Everything is working except I'm not getting the correct icons using LVM_GETITEM, so I'm now trying LVN_GETDISPINFO. To do that I need to define the structure NMLVDISPINFO and am struggling to get all the items in the correct places.
From win64.inc I got the following and modified them by adding 64 to the names and changing the type to qword or dword as needed by 32 bit-
NMHDR64 STRUCT
hwndFrom qword ? ;HWND ?
idFrom qword ? ;UINT_PTR ?
_code dword ? ;UINT ?
dword ? ;UINT ?
NMHDR64 ENDS
LVITEM64 STRUCT
imask dword ? ;UINT ?
iItem SDWORD ?
iSubItem SDWORD ?
state dword ? ;UINT ?
stateMask dword ? ;UINT ?
DWORD ?
pszText qword ? ;LPSTR ?
cchTextMax SDWORD ?
iImage SDWORD ?
lParam qword ? ;LPARAM ?
iIndent SDWORD ?
iGroupId SDWORD ?
cColumns dword ? ;UINT ? ;tile view columns
DWORD ?
puColumns qword ? ;PUINT ?
piColFmt qword ? ;PSDWORD ?
iGroup SDWORD ? ; // readonly. only valid for owner data.
DWORD ?
LVITEM64 ENDS
NMLVDISPINFO64 STRUCT
hdr NMHDR64 <>
item LVITEM64 <>
NMLVDISPINFO64 ENDS
nmh NMLVDISPINFO64 <>
Still not having a lot of luck, but first step was to make sure I knew what oddball things like PUINT meant.
Thanks for your patience. Sorry I put this in the wrong place, perhaps it should be in the 64 bit programming section?