MFC's OLE container support will take you a long way. However, it won't do everything. You'll want to use MFC's dynamic control creation support provided by the CWnd, COleControlContainer, COccManager classes. I'm writing a control container and want to put in the property window like in VB4 or the ActiveX Control Pad. Mike Blaszczak's book tells you how to mostly do this, but doesn't cover enumerated types or stock properties.
Controls specify enumerated types in one of two ways.
The most common is the static enumerated property. The less common technique is to provide enumerated types through the IPerPropertyBrowsing interface. This allows a control to change the types at runtime. So you will need to support both methods. Extended property examples include Top, Name, etc.