Everything should be clear now, the wrong statement or'ed the rubbish in the variable with the required flag, then WIN11 strongly checked for invalid flags and aborted, or eventually interpreted them as new flags showing 'chinese' characters.
Win10, easygoing, ignored errors.
Well .... I don't think it was rubbish - It should have been 0 because
LISTVIEWPROGRESS *lvProgress = calloc(1, sizeof(LISTVIEWPROGRESS)); // calloc set all to 0
So I think the 64 bit optimizer
and Win 11 involved somehow... Also tried
lvItem.mask = lvItem.mask | LVIF_PARAM; just in case but it was BAD as well with 64 bit optimization.
Also if rubbish it should still be rubbish
without optimization .... yet it works correctly without optimization.
Also as 32 bit, with and without optimization, it worked with lvItem.mask |= LVIF_PARAM;
P.S. Maybe also ListView_GetSubItemRect macro works now...
YES see update to prior post.... seems fixed
John
P.S. Last post on this I think. It is working ....