在 MFC 的 CHtmlView 类中,CHtmlView::OnBeforeNavigate2 不是一个公共方法,而是一个虚拟函数,可以在派生类中进行重写以处理在导航开始之前的事件。

以下是 CHtmlView::OnBeforeNavigate2 方法的签名:
virtual BOOL OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName,
                                CByteArray& baPostedData, LPCTSTR lpszHeaders,
                                BOOL* pbCancel);

在派生类中,您可以重写此方法以处理在导航开始之前的事件。当用户单击链接、通过脚本导航或通过编程方式调用 Navigate2 时,将调用此方法。

下面是一个简单的示例,演示如何在派生类中重写 OnBeforeNavigate2 方法:
class CMyHtmlView : public CHtmlView {
public:
    virtual BOOL OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName,
                                    CByteArray& baPostedData, LPCTSTR lpszHeaders,
                                    BOOL* pbCancel) override {
        // 在此处处理导航前的逻辑
        // 返回 TRUE 表示取消导航,返回 FALSE 表示继续导航
        return FALSE;
    }
};

在上述示例中,CMyHtmlView 是从 CHtmlView 派生的一个类,它重写了 OnBeforeNavigate2 方法以处理导航前的逻辑。通过设置 *pbCancel 参数为 TRUE,可以取消导航,或者通过返回 FALSE 继续导航。




转载请注明出处:http://www.zyzy.cn/article/detail/18204/MFC/CHtmlView