IWebBrowser2*  WebBrowser_bro;
VARIANT    *varMyURL;
CAxWindow *WinContainer;
WinContainer->Create(g_hWnd, rc, 0, 
WS_CHILD|WS_VISIBLE|WS_BORDER|WS_TABSTOP);
LPOLESTR pszName=OLESTR("shell.Explorer.2");
IDocHostUIHandler
WinContainer->CreateControl(pszName);/////创建
//*WebBrowser_bro->*/
    
WinContainer->QueryControl( __uuidof(IWebBrowser2), (void**)&WebBrowser_bro);
    
   
VariantInit(varMyURL);
varMyURL->vt = VT_BSTR;
   // varMyURL->
varMyURL->bstrVal = SysAllocString(L"www.baidu.com");请问如何接入键盘消息的?????

解决方案 »

  1.   

    需要在消息循环里面预处理消息MSG msg;
    while (GetMessage(&msg,NULL,0,0))
    {
      if (!PreTranslateMessage(&msg))
      {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
      }
    }BOOL PreTranslateMessage(MSG* pMsg)
    {
      if((pMsg->message < WM_KEYFIRST || pMsg->message > WM_KEYLAST) &&
        (pMsg->message < WM_MOUSEFIRST || pMsg->message > WM_MOUSELAST))
        return FALSE;  BOOL bRet = FALSE;
      HWND hWndCtl = pMsg->hwnd;
      if (::IsWindow(hWndCtl) && (::IsChild(WinContainer->m_hWnd,hWndCtl) || hWndCtl==WinContainer->m_hWnd))
      {
        IOleInPlaceActiveObject* pInPlaceActiveObject = NULL;
        WebBrowser_bro->QueryInterface(IID_IOleInPlaceActiveObject, &pInPlaceActiveObject);
        if(pInPlaceActiveObject && pInPlaceActiveObject->TranslateAccelerator(pMsg)==S_OK)
          bRet = TRUE;
        if (pInPlaceActiveObject)
          pInPlaceActiveObject->Release();
      }
      return bRet;
    }
      

  2.   

    窗口是 WinContainer-》create 出来的
    但是这个浏览器并不是主面板。
      

  3.   

    并不希望在MAIN函数中处理 浏览器的这个消息
    还有其他套路没有的哦??
      

  4.   

    不能使用窗口过程来处理,必须在消息过滤器里(进入窗口过程之前)处理,就跟对话框的IsDialogMessage一样的道理。