里面就一个webbrowser控件和pagecontrol控件代码如下,我怎么样都不能捕捉到OnNewWindow2事件,就是说我在浏览器中点击一个连接后,动态出现一个webbrowser,并在pagecontrol中建立一个新的页。
unit xxxxxx;interfaceuses
  Windows, messages,SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,ActiveX, OleCtrls, SHDocVw, ComCtrls, StdCtrls,MSHTML;type
    TfrmChildWeb = class(TForm)
    WebBrowser: TWebBrowser;
    PageControl1: TPageControl;
    Constructor Create(AOwner:TComponent);
    procedure FormCreate(Sender: TObject);
  private
    FOleInPlaceActiveObject: IOleInPlaceActiveObject;
    procedure MsgHandler(var Msg: TMsg; var Handled: Boolean);
    procedure Navigate2(Sender: TObject;const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
    procedure WebBrowserNewWindow(Sender: TObject; var ppDisp: System.IDispatch; var Cancel: WordBool);
  public
    procedure TabSheetWithBrowserResize(var amsg:TMessage); message WM_SIZE;
    Destructor Destory;
    published
  end;
var
   frmChildWeb:TFrmChildWeb;implementation{$R *.dfm}
constructor TfrmChildWeb.Create(AOwner: TComponent);
begin
  inherited;
  self.WebBrowser:=TWebBrowser.Create(AOwner);
end;destructor TfrmChildWeb.Destory;
begin
  WebBrowser.Destroy;
  WebBrowser:=nil;
  inherited;
end;procedure TfrmChildWeb.TabSheetWithBrowserResize(var amsg:TMessage);
begin
  self.WebBrowser.SetBounds(0,0,amsg.LParamLo,amsg.LParamHi);
end;procedure TfrmChildWeb.WebBrowserNewWindow(Sender: TObject; var ppDisp: System.IDispatch; var Cancel: WordBool);
var
  tabwb:TfrmChildWeb;
begin
 tabwb:=TfrmChildWeb.Create(self);
 tabwb.PageControl1 := self.PageControl1 ;
 tabwb.WebBrowser.ParentWindow := tabwb.Handle ;
 tabwb.WebBrowser.SetBounds(0,0,tabwb.Width,tabwb.Height);
end;
//下面的过程用于WebBrowser输入回车
Procedure TfrmChildWeb.Navigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  S : String;
Begin
  S := URL;
  Application.MessageBox(pchar(S), 'URL', 0);
End;
procedure TfrmChildWeb.MsgHandler(var Msg: TMsg; var Handled: Boolean);
var
  iOIPAO: IOleInPlaceActiveObject;
  Dispatch: IDispatch;
begin
  if WebBrowser = nil then begin
    Handled := False;
    Exit;
  end;
  Handled := (IsDialogMessage(WebBrowser.Handle, Msg) = True);  if (Handled) and (not WebBrowser.Busy) then
  begin
    if FOleInPlaceActiveObject = nil then
    begin
      Dispatch := WebBrowser.Application;
      if Dispatch <> nil then
      begin
        Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
        if iOIPAO <> nil then
          FOleInPlaceActiveObject := iOIPAO;
      end;
    end;    if FOleInPlaceActiveObject <> nil then
      if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
        ((Msg.wParam = VK_BACK) or (Msg.wParam = VK_LEFT) or (Msg.wParam = VK_RIGHT)) then
      else
        FOleInPlaceActiveObject.TranslateAccelerator(Msg);
  end;
end;//主窗体启动后激发的事件
procedure TfrmChildWeb.FormCreate(Sender: TObject);
begin
  Application.OnMessage := MsgHandler;
  WebBrowser.Navigate('http://xxxxxxxxxx', EmptyParam,EmptyParam);
end;
//加入下面两行代码,可以使用Ctrl+C进行复制
initialization
    OleInitialize(nil);
finalization
      OleUninitialize;end.