2011-04-11 104 views
3

我跟踪bug,我怀疑根可能在使用WTL宏。当我可以使用* _EX和正常的宏时。对于BEGIN_MSG_MAP_EX存在atlcrack.hBEGIN_MSG_MAP和BEGIN_MSG_MAP_EX混淆

// 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. 

但如何休息或宏的注意事项?我可以在同一个BEGIN_MSG_MAP_EX中同时使用COMMAND_ID_HANDLER和COMMAND_ID_HANDLER_EX吗?

回答

1

我推荐BEGIN_MSG_MAP_EX,因为它支持更多的处理程序。它也支持BEGIN_MSG_MAP处理程序。

0

如果您添加到正在使用BEGIN_MSG_MAP将被转换为BEGIN_MSG_MAP_EX这是在各方面更好的主头文件(可能stdafx.h

#undef BEGIN_MSG_MAP 
#define BEGIN_MSG_MAP BEGIN_MSG_MAP_EX 

所以现在代码这将是更安全的。