The first cut at these was a disaster. Objects would get out of synchronization with state held by MicrosoftWindows whenever the latter was called directly. More recent versions leave nothing of value in the C++ "objects".
MFC is ("was") justifiably held up as a cautionary tale regarding a very long list of OO sins and DesignSmells. Most noticeably, it leaves its private parts hanging out in public for others to play with.
The cautionary tale here is not the end-user's, it is MicroSoft's. They bear the burden of their own bad design decisions (even as they carve these in stone) by paying their own engineers to fix and patch while maintaining backwards compatibility with all the client applications.