none
sdk,怎么使用iwebbrowser2控件,处理事件 RRS feed

  • 问题

  • 对active不熟悉,只想要个现实网页,并且新打开网页在原窗口显示,还有就是处理下键盘。我网上找的代码

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
     int wmId, wmEvent;
     PAINTSTRUCT ps;
     HDC hdc;

     //------------mycode---------
     RECT rc;
     IWebBrowser2* iWebBrowser=NULL;
     VARIANT varMyURL;
     
     LPOLESTR pszName=OLESTR("shell.Explorer.2");
     GetClientRect(hWnd, &rc);


     //--------------------------
     switch (message)
     {
     
     case WM_CREATE:
      WinContainer.Create(hWnd, rc, 0,WS_CHILD |WS_VISIBLE);
      WinContainer.CreateControl(pszName);
      WinContainer.QueryControl(__uuidof(IWebBrowser2),(void**)&iWebBrowser);
      VariantInit(&varMyURL);
      varMyURL.vt = VT_BSTR;
      varMyURL.bstrVal = SysAllocString(_T("http://www.sina.com.cn"));
      iWebBrowser-> Navigate2(&varMyURL,0,0,0,0);
      VariantClear(&varMyURL);
      //iWebBrowser-> Release();
      ConnectEvents();
      break;
     case WM_COMMAND:
      wmId    = LOWORD(wParam);
      wmEvent = HIWORD(wParam);
      // Parse the menu selections:
      switch (wmId)
      {
      case IDM_ABOUT:
       DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
       break;
      case IDM_EXIT:
       DestroyWindow(hWnd);
       break;
      default:
       return DefWindowProc(hWnd, message, wParam, lParam);
      }
      break;
     case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);
      // TODO: Add any drawing code here...
      EndPaint(hWnd, &ps);
      break;
     case WM_DESTROY:
      PostQuitMessage(0);
      break;
     default:
      return DefWindowProc(hWnd, message, wParam, lParam);
     }
     return 0;
    }

    能显示网页,但没有键盘消息。而且不知道怎么处理事件。

    路过的大哥大姐麻烦帮帮忙。新手,代码给全点

    2011年9月9日 7:06

答案

  • 你好,

     

    根据您的添加键盘消息WM_CHAR,或者WM_UNICHAR,例如

    case WM_CHAR:

                                    MessageBox(hwnd, " keyboard!", " keyboard ", MB_OK | MB_ICONEXCLAMATION);

    break;

     

    一条Windows 消息包含WPARAM wParam, LPARAM lParam 包含两个参数, 您可以解析这两个参数同,同时进行不同的处理。例如,

    if(msg->message==WM_CHAR)

            //we handle WM_CHAR messages

            {

                //For WM_CHAR message,

                //wParam is the character code of the key pressed

                charCode = msg->wParam;

                if(IsCharLower(charCode))

                //we check if the character pressed is a small letter

                {

                    //if so, make it to capital letter

                    charCode -=32;

                    msg->wParam=(WPARAM)charCode;

                    //overwrite the msg structure's wparam

                    //with our new value.

                }

            }

     

    这里是一些关于iwebbrowser2控件的一些方法和示例,

    1. http://msdn.microsoft.com/zh-cn/library/aa752127(v=VS.85).aspx

     

    这是关于WM_CHAR消息的具体定义。

    http://msdn.microsoft.com/zh-cn/library/ms646276(v=VS.85).aspx

     

    希望我的回答对您的问题有所帮助


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Rob Pan 2011年9月16日 7:31
    2011年9月12日 6:57