OnBeforeNavigate2 时间当转向新地址之前发生,在此之前用户可以通过各种条件限定来决定是否转向,但这个事件有一个特点就是:如果同一个页面中有 frame,iframe等,会多次激发这个事件,有些特定的场合可能需要判定是否是最上层页面激发的,此时就需要使用该事件的另外一种形式。
1 | BeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL,VARIANT* Flags, VARIANT* TargetFrameName,VARIANT* PostData, VARIANT* Headers, BOOL* Cancel) |
CHtmlView 中默认的 OnBeforeNavigate2 事件是不带 pDisp 参数的,因此不能直接从 VC 的 ClassWizard 下复写该事件,只能手工添加,在 .h 中照葫芦画瓢
1 | virtual void BeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers, BOOL* Cancel); |
在 cpp 中添加
1 | void CIEView::BeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL,VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers, BOOL* Cancel) |
特此记之方便他人,免得走弯路。