HRESULT IShellExtInit::Initialize (
LPCITEMIDLIST pidlFolder,
LPDATAOBJECT pDataObj,
HKEY hProgID );
Piddlefolder indeed.
The notational conventions used in MFC (and, here, ATL) programming do convey useful information about the values being referred to, but they convey it in such an utterly graceless way that I think I’d rather not know.
class ShellExtInit a where
Initialize :: a -> IORef [Item] -> IORef DataObject -> ProgId -> IO ResultCode
That’s better.