2009-02-23 14 views
7

Estoy trabajando en un programa MFC que comenzó mucho en los días de VC6. En aquel entonces había un asistente de clase que usaba un grupo de decoradores y etiquetas en los comentarios para analizar los archivos de clase.¿Los decoradores "afx_msg" todavía usan VS/MFC?

Por ejemplo, insertaría afx_msg delante de los manejadores de mensajes que mantenía. Marcaría un bloque de código con // {{AFX_MSG_MAP (TheApp) y /}} AFX_MSG_MAP comentarios para ayudarlo a encontrar las partes del mapa de mensajes que quería manejar.

AFAIK, esto ya no es necesario. Además de eso, había tantas fallas con el asistente de clase que tuvimos que hacer mucha edición manual de estos bloques administrados y nunca lo usamos con mucha frecuencia de todos modos.

¿Hay alguna otra razón para seguir utilizando afx_msg y su estilo de letra?

Respuesta

10

afx_msg todavía existe, pero siempre ha sido puramente informativo. Un decorador como tú lo pones. Siempre ha sido #definido como una cadena vacía.

los {{y}} marcadores ya no son necesarios ya que VS2003: VS es ahora lo suficientemente inteligente como para colocar las cosas en el lugar correcto sin tener que depender de estos marcadores. Notará que VS2003 + ya no incluye estas líneas en los proyectos que crea.

2

AFAIK, afx_msg ya no se utiliza. El otro marcador se usó para ayudar a CW a descubrir dónde colocar las cosas, y algunas de ellas aún se pueden usar (por ejemplo, la ubicación del mapa de mensajes en los archivos .cpp). Los que están en los archivos de encabezado probablemente sean más seguros de eliminar, pero no los eliminaría arbitrariamente.

Una cosa que podría hacer: iniciar un nuevo proyecto ficticio MFC en su versión VS actual, agregar una clase de ventana y algunos manejadores, y observar las anotaciones actualmente creadas. Probablemente ya no se use todo lo que no se ponga, y todo lo que se haya insertado probablemente aún se use de alguna forma).

PD: MS es consciente de los problemas con la edición actual de CW, y me dijeron que se tratarán en gran medida en VS2010 ... ya veremos.

1

AFAIK ya no son necesarios. El asistente de clase en VS2008 ya no generará los comentarios y no usará los comentarios existentes que fueron generados por versiones anteriores. El asistente de clase aún generará los decoradores afx_msg, pero no se usarán.

Mi regla general cuando se trata de código de los días VC6, es eliminar todos los comentarios, pero dejar los decoradores afx_msg. Los decoradores me resultan útiles cuando leo el código, para señalar que un método es un manejador de mensajes.

0

En VS2008, afx_msg es un #define vacío. He eliminado todos los otros dreck insertados en ClassWizard de nuestra aplicación que se actualizó de VC6 a 2005. De acuerdo, tampoco uso ClassWizard.

Cuestiones relacionadas