none
MFC Activex 处理键盘快捷键及方向键的问题 RRS feed

  • 问题

  • 用MFC开发ActiveX的时候会遇到不能处理快捷键及方向键的问题,我在控件里用到CHtmlEditView视图,并通过键盘HOOK捕获到了需要处理的键盘信息,但是我通过SendMessage将消息发送给CHtmlEditView后没有任何反应。请问怎样给CHtmlEditView视图发送键盘消息,比如按方向键之后让文本框中的光标发生移动?我在代码中:
     
    SendMessage(m_pWebView->GetSafeHwnd(),WM_KEYDOWN,wParam,lParam);  

    SendMessage(m_pWebView->GetSafeHwnd(),WM_CHAR,wParam,lParam);  

    SendMessage(m_pWebView->GetSafeHwnd(),WM_KEYUP,wParam,lParam);  

    以上三个都没有反应。

    有人说先取得Internet Explorer_Server窗口句柄,然后发送按键消息,我按如下代码取得Internet Explorer_Server窗口句柄后发送消息但还是没有反应。

    IHTMLDocument2* pDoc = (IHTMLDocument2*) pHtmlEditView->GetHtmlDocument(); 

    IServiceProvider* pServiceProvider = NULL;
    if (SUCCEEDED(pDoc->QueryInterface(
      IID_IServiceProvider, 
      (void**)&pServiceProvider)))
    {
    IOleWindow* pWindow = NULL;
    if (SUCCEEDED(pServiceProvider->QueryService(
    SID_SShellBrowser, 
    IID_IOleWindow,
    (void**)&pWindow)))
    {
    HWND hwndBrowser = NULL;
    if (SUCCEEDED(pWindow->GetWindow(&hwndBrowser)))
    {
    ::SendMessage(hwndBrowser,WM_KEYDOWN,VK_LEFT,NULL);
    }

    pWindow->Release();
    }
     
    pServiceProvider->Release();

    请高手解答~ 谢谢。
    2012年7月17日 5:32

全部回复