Смущен BEGIN_MSG_MAP и BEGIN_MSG_MAP_EX - PullRequest
3 голосов
/ 11 апреля 2011

Я отслеживаю ошибку и подозреваю, что корень может быть в использовании макросов WTL. Когда я должен использовать * _EX и когда нормальные макросы. Для BEGIN_MSG_MAP_EX есть примечание в atlcrack.h

// Note about message maps with cracked handlers:
// For ATL 3.0, a message map using cracked handlers MUST use BEGIN_MSG_MAP_EX.
// For ATL 7.0 or higher, you can use BEGIN_MSG_MAP for CWindowImpl/CDialogImpl derived classes,
// but must use BEGIN_MSG_MAP_EX for classes that don't derive from CWindowImpl/CDialogImpl.

а как насчет остальных или макросов? могу ли я использовать, например, COMMAND_ID_HANDLER и COMMAND_ID_HANDLER_EX в одном BEGIN_MSG_MAP_EX?

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Я рекомендую BEGIN_MSG_MAP_EX, потому что он поддерживает больше обработчиков.Он также поддерживает обработчики BEGIN_MSG_MAP.

0 голосов
/ 31 августа 2011

Будет безопаснее, если вы добавите это в свой основной заголовочный файл (вероятно, stdafx.h)

#undef BEGIN_MSG_MAP
#define BEGIN_MSG_MAP BEGIN_MSG_MAP_EX

Так что теперь код, который использует BEGIN_MSG_MAP, будет переведен в BEGIN_MSG_MAP_EX, что лучше во всех аспектах.

...