【问题标题】:COMMAND AND UPDATE_COMMAND_UI handlers not called in MFC dllMFC dll 中未调用 COMMAND 和 UPDATE_COMMAND_UI 处理程序
【发布时间】:2015-04-30 12:28:32
【问题描述】:

我有用于 MFC dll 中菜单项的 ON_COMMAND 和 ON_UPDATE_COMMAND_UI 处理程序。但它们没有被调用。编译为 .exe 的相同代码具有正在调用的处理程序。这可能是什么原因?

【问题讨论】:

  • 你在使用 AFX_MANAGE_STATE(AfxGetStaticModuleState( )) 吗?看看msdn.microsoft.com/en-us/library/ba9d5yh5.aspx
  • 我知道这一点。但是处理程序一开始就没有被调用。
  • 你有一个带有消息循环的 UI 线程吗?

标签: c++ dll mfc


【解决方案1】:

ON_UPDATE_COMMAND_UI 和 ON_COMMAND 处理程序仅在包含处理程序的对象在命令路由内时才被调用。

所以 DLL 本身不是问题,但这也取决于您如何创建 DLL。对于标准 DLL 并且没有将 MFC 作为 DLL 共享,这根本不起作用。 AFAIK 让它运行 DLL 应该是加载到应用程序中的扩展 DLL。原因是当 MFC 被静态链接时,主应用程序将无法识别标准 DLL 中的对象。

MSDNtechnical notes 中阅读有关命令路由的更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    相关资源
    最近更新 更多