_ATL_ENABLE_PTM_WARNING
Defina este macro para forçar o uso da sintaxe compatível com o padrão ANSI C++ para o ponteiro funções de membro.Usar este macro fará com que o erro do compilador C4867 a ser gerado quando a sintaxe não padronizada é usada para inicializar um ponteiro para uma função de membro.
#define _ATL_ENABLE_PTM_WARNING
Comentários
As bibliotecas de ATL e de MFC foram alteradas para corresponder ao padrão aprimorada de C++ o compilador Visual C++.De acordo com o padrão ANSI C++, a sintaxe de um ponteiro para uma função de membro da classe deve ser &CMyClass::MyFunc.
Quando _ATL_ENABLE_PTM_WARNING não está definido (os casos padrão), ATL/MFC desativa o erro C4867 em mapas macro (em especial mapas de mensagem) para que o código que foi criado em versões anteriores pode continuar a compilação como antes.Se você definir _ATL_ENABLE_PTM_WARNING, seu código deve ser compatível padrão C++.
Em o entanto, o formulário diferente do padrão foi substituído, portanto você precisa mover o código existente a sintaxe compatível padrão C++.Por exemplo, o seguinte:
BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
ON_COMMAND(ID_MYCOMMAND, OnMycommand)
END_MESSAGE_MAP()
Deve ser modificado:
BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
ON_COMMAND(ID_MYCOMMAND, &CMFCListViewDoc::OnMycommand)
END_MESSAGE_MAP()
Observe que para as macros de mapa que adicionam o caractere “&”, você não deve adicioná-lo novamente em seu código.