Templates are cool.
Being able to write code that can work on objects of any type that satisfies the minimum functionality that you require make reusing code considerably easier. Templates solve all manner of problems. Using templates with MFC classes, especially MFC classes with message maps isn't easy. You could put items into the list and store pointers to them in the item data and when the box is destroyed it can clean up and delete the objects for you. Calling delete on that pointer wont call the object's destructor.