在MFC(Microsoft Foundation Classes)中,CDHtmlDialog 类的公共数据成员 m_pBrowserApp 是一个指向 IDispatch 接口的指针,用于表示 HTML 对话框中的浏览器应用程序。

IDispatch 接口是一个用于在COM(Component Object Model)中提供对对象的成员的访问的标准接口。在这里,m_pBrowserApp 提供了与 HTML 对话框关联的浏览器应用程序的接口。

以下是一个简单的示例,演示了如何在 CDHtmlDialog 类中使用 m_pBrowserApp:
// MyHtmlDialog.h
#pragma once

#include "afxhtml.h"

class CMyHtmlDialog : public CDHtmlDialog
{
public:
    enum { IDD = IDD_MYHTMLDIALOG, IDH = IDR_HTML_MYHTMLDIALOG };

    CMyHtmlDialog(CWnd* pParent = nullptr);

    // Dialog Data
    #ifdef AFX_DESIGN_TIME
        enum { IDD = IDD_MYHTMLDIALOG };
    #endif

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

    // Implementation
protected:
    DECLARE_MESSAGE_MAP()
public:
    virtual BOOL OnInitDialog();
    DECLARE_DHTML_EVENT_MAP()
};

// MyHtmlDialog.cpp
#include "stdafx.h"
#include "MyHtmlDialog.h"

// CMyHtmlDialog 对话框

IMPLEMENT_DYNAMIC(CMyHtmlDialog, CDHtmlDialog)

CMyHtmlDialog::CMyHtmlDialog(CWnd* pParent /*=nullptr*/)
    : CDHtmlDialog(CMyHtmlDialog::IDD, CMyHtmlDialog::IDH, pParent)
{
}

void CMyHtmlDialog::DoDataExchange(CDataExchange* pDX)
{
    CDHtmlDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMyHtmlDialog, CDHtmlDialog)
END_MESSAGE_MAP()

BEGIN_DHTML_EVENT_MAP(CMyHtmlDialog)
END_DHTML_EVENT_MAP()

BOOL CMyHtmlDialog::OnInitDialog()
{
    CDHtmlDialog::OnInitDialog();

    // 获取浏览器应用程序接口
    m_pBrowserApp = GetHtmlDocument();

    return TRUE;
}

在这个示例中,OnInitDialog 函数中使用 GetHtmlDocument 函数获取了浏览器应用程序的接口,并将其存储在 m_pBrowserApp 中。这样,您就可以使用 m_pBrowserApp 来访问 HTML 对话框中的浏览器应用程序的功能。


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