VS / MFC все еще использует такие вещи, как декораторы afx_msg?

Я работаю над программой MFC, которая началась еще во времена VC6. Тогда был мастер классов, который использовал кучу декораторов и разметку в комментариях для анализа файлов классов.

Например, он вставит afx_msg перед обработчиками сообщений, которые он обслуживает. Он помечает блок кода комментариями // {{AFX_MSG_MAP (TheApp) и /}} AFX_MSG_MAP, чтобы помочь ему найти части карты сообщений, которые он хочет обработать.

AFAIK, это больше не нужно. Кроме того, в мастере классов было так много недостатков, что нам приходилось делать много ручного редактирования этих управляемых блоков, и мы никогда не использовали его очень часто.

Есть ли другие причины продолжать использовать afx_msg и ему подобные?

Ответов (4)

Решение

afx_msg все еще существует, но всегда был чисто информативным. Декоратор, как вы выразились. Это всегда # определялось как пустая строка.

маркеры {{и}} больше не нужны с VS2003: VS теперь достаточно умен, чтобы расставлять вещи в нужном месте, не полагаясь на эти маркеры. Вы заметите, что VS2003 + больше не включает эти строки в создаваемые проекты.

В VS2008 afx_msg - это пустой #define. Я удалил все остальные вставленные ClassWizard ненужные файлы из нашего приложения, которое было обновлено с VC6 до 2005. Конечно, я также вообще не использую ClassWizard.

AFAIK они больше не нужны. Мастер классов в VS2008 больше не будет генерировать комментарии и не будет использовать существующие комментарии, созданные в предыдущих версиях. Мастер классов по-прежнему будет генерировать декораторы afx_msg, но они не используются.

Мое общее правило при работе с кодом из дней VC6 - удалить все комментарии, но оставить декораторы afx_msg. Я считаю, что декораторы полезны при чтении кода, чтобы указать, что метод - это обработчик сообщений.

AFAIK, afx_msg больше не используется. Другой маркер использовался, чтобы помочь CW выяснить, куда положить вещи, и некоторые из них все еще могут быть использованы (например: расположение карты сообщений в файлах .cpp). Те, что находятся в файлах заголовков, вероятно, более безопасно удалить, но я бы не стал удалять их произвольно.

Одно можно сделать: запустить новый фиктивный проект MFC в текущей версии VS, добавить класс окна и несколько обработчиков и наблюдать за созданными в настоящее время нотациями. Все, что не вставлено, вероятно, больше не используется, и все, что еще вставлено, вероятно, все еще используется в той или иной форме).

PS: MS хорошо осведомлена о проблемах с текущим редактированием CW, и мне сказали, что они будут решены в значительной степени в VS2010 ... мы увидим.