MFC Navigate2是做什么的

对于MFC的类,源码在C:\Program Files\Microsoft Visual Studio\VC98\MFC\路径下,你要查看的OnBeforNavigate2是CHtmlView的一个虚函数,它的定义在AFXHTML.H,和VIEWHTML.CPP中,你在上面的路径下搜索这两个文件就可以了。
void  CHtmlView::BeforeNavigate2(LPDISPATCH  /* pDisp */, VARIANT* URL,
   VARIANT* Flags, VARIANT* TargetFrameName,
   VARIANT* PostData, VARIANT* Headers, BOOL* Cancel)
{
  ASSERT(V_VT(URL) == VT_BSTR);
  ASSERT(V_VT(TargetFrameName) == VT_BSTR);
  ASSERT(V_VT(PostData) == (VT_VARIANT | VT_BYREF));
  ASSERT(V_VT(Headers) == VT_BSTR);
  ASSERT(Cancel != NULL);
 
  USES_CONVERSION;
 
  VARIANT* vtPostedData = V_VARIANTREF(PostData);
  CByteArray array;
  if (V_VT(vtPostedData) & VT_ARRAY)
  {
   // must be a vector of bytes
   ASSERT(vtPostedData->parray->cDims == 1 && vtPostedData->parray->cbElements == 1);
 
   vtPostedData->vt |= VT_UI1;
   COleSafeArray safe(vtPostedData);
 
   DWORD dwSize = safe.GetOneDimSize();
   LPVOID pVoid;
   safe.AccessData(&pVoid);
 
   array.SetSize(dwSize);
   LPBYTE lpByte = array.GetData();
 
   memcpy(lpByte, pVoid, dwSize);
   safe.UnaccessData();
  }
  // make real parameters out of the notification
 
  CString strTargetFrameName(V_BSTR(TargetFrameName));
  CString strURL = V_BSTR(URL);
  CString strHeaders = V_BSTR(Headers);
  DWORD nFlags = V_I4(Flags);
 
  // notify the user's class
  OnBeforeNavigate2(strURL, nFlags, strTargetFrameName,
   array, strHeaders, Cancel);
}
查看源码,得知是CHtmlView的BeforeNavigate2调用了OnBeforeNavigate2,在查看BeforeNavigate2的引用,
  ON_EVENT(CHtmlView, AFX_IDW_PANE_FIRST, 250 /* BeforeNavigate2 */ , BeforeNavigate2, VTS_DISPATCH VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PBOOL)
得知该函数为一个事件响应。
有了源码,就没有秘密,更深的可以自己去挖掘了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值