在MFC中使用扩展dll时断言

时间:2015-06-02 12:52:17

标签: c++ delphi dll mfc

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

需要被召唤。 但我的调用应用程序是基于Delphi的,这是不可能完成的。

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

Delphi调用常规MFC dll MFC dll调用Extension dll。

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

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

有没有人能解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

    ON_WM_INITMENUPOPUP()

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