对 BEGIN_MSG_MAP 和 BEGIN_MSG_MAP_EX 感到困惑
我正在追踪一个 bug,我怀疑根源可能在于使用 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.
但是其余的或宏怎么样?例如,我可以在同一个 BEGIN_MSG_MAP_EX 中使用 COMMAND_ID_HANDLER 和 COMMAND_ID_HANDLER_EX 吗?
I am tracing a bug and I suspect the root could be in the use of WTL macros. When sould I use *_EX and when normal macros. For BEGIN_MSG_MAP_EX there is a note in 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.
but how about the rest or the macros ? can I use both COMMAND_ID_HANDLER and COMMAND_ID_HANDLER_EX in the same BEGIN_MSG_MAP_EX for example ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我推荐 BEGIN_MSG_MAP_EX 因为它支持更多处理程序。它还支持 BEGIN_MSG_MAP 处理程序。
I recommend BEGIN_MSG_MAP_EX because it supports more handlers. It also supports the BEGIN_MSG_MAP handlers.
如果将其添加到主头文件(可能是
stdafx.h
)中会更安全,因此现在使用
BEGIN_MSG_MAP
的代码将被转换为BEGIN_MSG_MAP_EX
code> 在各个方面都更好。It will be safer if you add this to your main header file (probably
stdafx.h
)So now code that is using
BEGIN_MSG_MAP
will be translated toBEGIN_MSG_MAP_EX
which is better in every aspect.