Я сейчас работаю над этой самой проблемой.
Запуск WinMerge, чтобы увидеть, что я изменил ...
ОК, вот что я должен был исправить в огромном клиентском приложении Win32 / MFC:
Некоторые функции MFC стали виртуальными (чего не было в прошлом - CWnd :: GetMenu, если я правильно помню). Также кое-что, связанное с нашей устаревшей поддержкой колесика мыши (до того, как в Windows была встроена поддержка колесика мыши), каким-то образом сломалось (я просто удалил эту функцию, поэтому я так и не понял, почему это сломалось).
Некоторые методы ATL (или параметры метода) были изменены на const, которые не были изначально (испортили мои переопределения).
Platform SDK новее - будьте осторожны, если вы правильно устанавливаете версию Windows SDK #defines (мы были не во всех местах - что было глупо). Теперь вы можете собирать с более новыми версиями (Vista / 2008) структур Win32. Это не сработало на моем компьютере с XP.
STDMETHOD теперь включает в себя __declspec (nothrow), что на 100% верно - за исключением того, что это обнаружило некоторые проблемы в нашем коде. Какой-то интерфейс, который был написан так, как будто он будет доступен через COM, но никогда не создавал исключений.
В среде IDE есть ошибка , когда отключенные точки останова не показывают пустую окружность на полях, если у вас не установлены точки останова для выделения всей линии (о чем я думаю * Возможно, 1020 * по умолчанию для VC ++?).
Большинство из этих проблем были из-за незначительных ошибок в нашем коде или агрессивной перегрузки библиотек MFC / ATL. Поскольку код всех остальных идеален, у вас все должно быть в порядке;)