Такие вещи, как декораторы "afx_msg", все еще используются VS / MFC? - PullRequest
7 голосов
/ 23 февраля 2009

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

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

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

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

Ответы [ 4 ]

10 голосов
/ 23 февраля 2009

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

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

2 голосов
/ 23 февраля 2009

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

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

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

1 голос
/ 23 февраля 2009

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

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

0 голосов
/ 23 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...