【问题标题】:Asserts when using an extension dll in MFC在 MFC 中使用扩展 dll 时的断言
【发布时间】:2015-06-02 12:52:16
【问题描述】:

我正在尝试在 dll 中创建一个带有工具栏的新框架窗口。 我能够创建框架和工具栏,但是消息在 CToolbar 中无法正常工作。特别是在 DLL 中永远不会调用 ON_UPDATE_COMMAND_UI 消息。 经过一番研究,我开始知道这是因为 PreTranslateMessage(MSG* pMsg) 和 OnIdle(LONG lCount)

需要调用。 但我的调用应用程序是基于 Delphi 的,无法做到这一点。

经过研究,我知道这是最好的扩展 dll。 由于只能从 MFC 应用程序调用 MFC 扩展 dll。我想到了以下解决方案。

Delphi 调用一个常规的 MFC dll MFC dll 调用 Extension dll。

但由于 MFC AfxGetResourceHandle() 和 AfxGetInstanceHandle() 中的断言,我遇到了问题。

但我也知道 AFX_MANAGE_STATE(AfxGetStaticModuleState());无法从扩展 dll 调用。

有人有解决这个问题的方法吗?

【问题讨论】:

  • 我怀疑这会有所帮助。您需要更改消息循环。哪个在主机 exe 中。

标签: c++ delphi dll mfc


【解决方案1】:

ON_UPDATE_COMMAND_UI 消息由 MFC 消息循环创建。你没有。您将必须构建自己的 ON_UPDATE_COMMAND_UI 翻译器或类似的东西。这一切都始于您的框架窗口消息映射:

    ON_WM_INITMENUPOPUP()

您的 OnInitMenuPopup 处理程序将在用户选择菜单时调用,在菜单显示之前。

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多