我正在开发一个MFC Document View架构应用程序,它有多个文档和视图以及一个标签式窗口界面。
我的任务是在另一个选项卡中按下OK按钮,自动切换到另一个选项卡。单击其他选项卡时,它使用IWebBrowser2上的C ++包装器导航到特定网页。
当通过单击选项卡手动完成此操作时,一切正常,视图中的网页加载成功。
在我第一次尝试这样做时,标签成功切换以响应对
的调用 AfxGetMainWnd()->SendMessageToDescendants(SOME_MESSAGE, ...);
然而,通过在错误的点发送此窗口消息,一旦控件返回,应用程序就会崩溃,因为事件链导致(无模式)对话框(*) 发送消息,不再存在。
然后我找到了拨打电话的正确位置,但现在当其他标签被激活时,它不再显示网页。
为了调试这个问题,我添加了代码来检查READYSTATE的工作情况和不工作的情况。当页面加载失败时(尽管调用Navigate2返回S_OK),READYSTATE只停留在READYSTATE_LOADING。
不幸的是,现在,当我将其部分工作时,我会进行许多编辑。
我已将TRACE语句添加到最明显的事件中,例如OnSetFocus,CView :: OnActivateView,但所有跟踪都以相同的顺序出现,尽管行为不同
*托管在视图中