The LVIF_
property of the Win32 classic listview control lets you indent an item in report view. The units of indentation are the size of the image list. But that requires an image list. Why does it require an image list?
The indentation feature of the classic listview control was added for Internet Mail and News, a mail and newsreader program that came with Internet Explorer 3.¹ The indentation was used to represent message threading. Since the indentation was intended to represent reply depth, it was not unreasonable for the listview’s representation of the indentation to match the underlying data’s indentation. And since each item had an icon (representing read or unread), the width of the icon was a natural unit of indentation.
But what if you don’t want an image list?
The indentation demands an image list, but you can provide a 1 × 1 image list, and choose not to show any images. The space will still be reserved, so there will be a 1 pixel gap, but maybe this small glitch isn’t noticeable. The indentation would then be in units of pixels.
Not great, but it might be the best you can do.
¹ Internet Mail and News was subsequently rebranded as Outlook Express, a rebranding which created confusion and unmet expectations.
That does seem like a case of “premature abstraction”, ie drawing up an interface derived from too few or insufficiently diverse examples. Leading of course to suffering all round since the users have to work with a weirdly prickly interface and the developers have to ensure it stays forever identically prickly
(They can always mark the old behaviour as deprecated so it feels as if the nightmare will be over, but unless they can arrange enough down votes to bury the Stack Exchange answer that explains how to use that interface it will live forever)
IIRC, the common controls were created primarily for their use by the Windows Shell team during Chicago/Windows 95 development, and then offered for public consumption because they could be useful. ListView and TreeView, in particular, have many "quirks" (design eccentricities?) that can be easily explained this way. One is their reliance in an external ImageList. For simple uses, it would be easier to provide them the handles of the icons to be displayed. But, of course, in the shell every icon comes from the System ImageList, so this makes a lot of sense.
So yes, their interfaces are designed on...