if don't call Destroy(), gdi leak.
+1 to CImageListT<t_bManaged>
Here it is - changed CImageList to CImageListT<t_bManaged> and added typedefs for CImageList and CImageListManaged.
Unfortunately, these names don't follow naming convention of the usual managed/unmanaged resource classes (NameHandle, Name) to eliminated breaking changes that would be severe. Those breaking changes would introduce silent runtime problems that couldn't be detected at compile time.
Commit #502, atlctrls.h