CHtmlView类和焦点

时间:2010-03-30 10:24:41

标签: c++ html mfc webbrowser-control

我有一个用MFC编写的SDI应用程序。使用分离器窗口将帧分为1行和2列。下面是行和列的详细信息(R0C0表示行#0和列#0)

  1. R0C0视图是一个带有多个输入控件的CFormView,如文本框,组合框等。
  2. R0C1视图是一个CHtmlView,它包含与R0C0中具有输入焦点的控件相关的HTML内容
  3. 我能够更新HTML内容,并通过我的MFC代码调用Javascript函数。

    问题: 当用户点击R0C1,连接CHtmlView时,焦点现在在html页面上。我希望允许用户使用键盘跳出R0C1并返回R0C0。你能帮忙吗?用户显然可以使用鼠标单击R0C0视图,但我们有一个用户需要使用键盘才能使用此功能。

    如果问题不够具有描述性,请告诉我,我会进一步简化。

    感谢您的时间。

    谢谢, 字节

1 个答案:

答案 0 :(得分:1)

尝试重载CHtmlView :: OnTranslateAccelerator。我已成功使用此技巧禁用F5键刷新。从CHtmlView派生你自己的类并重载

virtual HRESULT OnTranslateAccelerator(LPMSG lpMsg, const GUID* pguidCmdGroup, DWORD nCmdID);
像这样:

HRESULT CMyHtmlView::OnTranslateAccelerator(LPMSG lpMsg, const GUID* pguidCmdGroup, DWORD nCmdID)
{
    if(lpMsg->message == WM_KEYDOWN && GetAsyncKeyState(VK_TAB) != 0 )
    {
        // change focus
        return S_OK;
    } 
    return CHtmlView::OnTranslateAccelerator( lpMsg, pguidCmdGroup, nCmdID);
}