如何在MFC编程中使用GetDHtmlDocument()?

2023-12-04

我正在尝试使用

H结果 获取DHtml文档(IHTMLDocument2 **pphtml文档);

MFC编程中的函数。

基本上,我试图在给定不同配置(加载输入)的 HTML 视图对话框应用程序(C++ w/ MFC)中呈现 GUI。

所以我将以下代码放入 OnInitDialog() 函数中。

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

    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    SetIcon(m_hIcon, TRUE); 
    SetIcon(m_hIcon, FALSE);

    // My code starts from here....
    HRESULT hr = S_OK;
    IHTMLDocument2 *pphtmlDoc;

    //MessageBox(_T("If I let this MessageBox to pop-up, the code works fine."));

    hr = GetDHtmlDocument(&pphtmlDoc);

    IHTMLElement *e;
    hr = GetElement(_T("someElement"), &e);

    if (SUCCEEDED(hr))
        e->put_innerHTML(_T("<h1>someLoadingInputWillGoHereLater</h1>"));

    //My code ends here.....

    return TRUE;
}

正如我在上面的代码中注释掉的,如果我让 Messagebox 弹出 ID=“someElement”的元素,将会打印出“someLoadingInputWillGoHereLater”。

但是,如果我注释掉 Messagebox,GetDHtmlDocument() 将返回“E_NOINTERFACE”HRESULT,这会使代码无法工作。

我只能猜测这可能是“焦点”问题。但我无法弄清楚确切的原因。

所以我请求你的帮助。 =(


您的呼唤GetDHtmlDocument() and GetElement()将返回E_NOINTERFACE.

据我所知,你是not当您执行时,始终保证 html 文档完全加载CDHtmlDialog::OnInitDialog().

相反,你应该覆盖CDHtmlDialog::OnDocumentComplete() in CSampleProgramDlg。这是一个回调函数,在加载文档时将被调用。然后您可以评估该文档。

void CSampleProgramDlg::OnDocumentComplete(
   LPDISPATCH pDisp,
   LPCTSTR szUrl 
)
{
    // You can get the document and elements here safely
}

您的呼唤MessageBox()可能会以某种方式触发文档提前加载。虽然我不是100%确定。

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在MFC编程中使用GetDHtmlDocument()? 的相关文章

随机推荐

  • 如何为 HTML/CSS 页面添加加载更多按钮?

    我想制作一个单页网站 它将包含大量内容 假设上面有 1000 张照片 我不希望人们等待 5 分钟才能加载我的页面 所以我想在页面底部添加 加载更多 按钮 如何使用 HTML CSS JS 做到这一点 你可以设置所有divs to displ
  • androidcursor.getBlob 不工作

    您好 我尝试在 sqlite 数据库中存储和检索图像 我的以下代码不起作用 我不确定我做错了什么 请帮忙 我创建的数据库表如下 db openOrCreateDatabase StudentDB Context MODE PRIVATE n
  • 在 Mongo/RectiveMongo 中存储/获取列表引用的值的最佳方式?

    我有一个非常常见的用例 评论列表 每个评论都有一个作者 我使用引用存储评论中对作者的引用 因为作者可以发表多个评论 现在我正在使用 ReactiveMongo 并希望尝试保持数据库访问异步 但在这种情况下 我不知道如何做 我对数据库进行异步
  • Android 序列化/对象传递和返回

    所以我有一个管理工单的应用程序 在应用程序的一部分中 我有一个从网络服务检索到的工作订单列表 然后 用户从列表中选择一个工作订单 列表将启动一个显示工作订单详细信息的新活动 将工作订单对象传递给它 用户可以在此期间编辑工作订单的部分内容 如
  • 使用已删除的函数‘sf::RenderWindow& sf::RenderWindow::operator=(const sf::RenderWindow&)’

    我对 C 还很陌生 所以请放轻松 我正在尝试使用 sfml 创建一个 RenderWindow 然后 在创建播放器时 该播放器的关联 窗口 对象将设置为之前创建的 RenderWindow 我的目的是能够从播放器对象运行窗口方法 例如 wi
  • 如何直接初始化一个HashMap(以字面的方式)?

    有没有像这样初始化 Java HashMap 的方法 Map
  • 无法安装APK

    我正在使用 Eclipse GanymedeADT 10 0插件和Android3 0 SDK构建我的应用程序 当我尝试在手机上部署应用程序时 我在控制台上看到以下内容 2011 05 06 10 35 38 MyProject Faile
  • jquery is(":visible") 和 is(":animated") 动画期间的错误?

    事情是这样的 我有多个图标 每个图标在 div 中显示一条消息 当我将鼠标悬停在图标上时 该框会显示 当我将鼠标移出时 它会关闭 当我单击时 我希望该框不会自动关闭 但仅在我单击该框角落的 X 后才关闭 这一切都很顺利 直到我添加了动画 问
  • CSS:如何强制背景图像拉伸/压缩以适合div,而不保持纵横比

    我遇到了一个令人沮丧的问题 希望得到一些帮助 我编写了一个脚本 允许我调整屏幕上为客户构建的应用程序的 div 大小 但我遇到了一个以前从未遇到过的幽默问题 我知道有很多方法可以确保图像Does保持其纵横比 但我不知道如何强制不这样做 例如
  • 获取SWF版本信息

    在 FlashBuilder 的编译器选项 属性 gt Flex 编译器 中 在 Adobe Flash Player 选项 下有一个 使用特定版本 的选项 您可以在其中告诉它要链接到哪个 Flash Player 如何在运行时获取这个值
  • ImageMagick 将大图像裁剪为 xyz 块

    我有一个大的 jpg 其分辨率为 x 256 x 256 我想将此图像剪切成 256x256 的图块 命名约定为 zoom x y jpg 过去我使用 ZoomifyExpress Converter 来进行剪切和缩放 我还想要 6 种不同
  • 确定两个 IP 地址是否在同一子网中 - IP 地址中的前导 0 或尾随 0 是否被删除?

    我知道如果两个 IP 地址与子网掩码进行 AND 运算 如果结果相同 那么它们位于同一网络上 如果结果不同 则它们位于不同的网络上 我的问题是 当给定的 IP 地址省略一些 0 时 多余的 0 放在哪里 例如 如果子网掩码是 255 128
  • 在 Mvc.Controller 中使用服务器

    我有自己的遗传App Controller from Mvc Controller然后我的所有控制器都继承自它 我利用接口编写了一个提供程序并将其实现为MyService并且构造函数采用Server的财产Mvc Controller这是属于
  • 按索引对 numpy.array 行进行排序

    我有 2Dnumpy array和一个索引元组 a array 0 0 0 1 1 0 1 1 ix 2 0 3 1 如何按索引对数组的行进行排序 预期结果 array 1 0 0 0 1 1 0 1 我尝试使用numpy take 但它只
  • 不断收到 org.hibernate.exception.JDBCConnectionException: 无法执行查询

    我有一个 J2EE 应用程序 它使用 JSP 页面作为前端 使用 Struts2 作为控制器 我还使用 Hibernate 将对象映射到 MySql DB 当我在服务器上部署应用程序时 它工作正常 但在不可预测的一段时间 例如一两天 之后
  • 在多个 settimeout 上使用 Async/Await

    为了理解 async await 我尝试在 settimeout 运行并到期后显示一条控制台消息 如何修复下面的代码 我有 5 个 settimeout 函数 每个函数完成后都应显示各自的消息 function t1 setTimeout
  • 以编程方式查找 sql server 的所有实例

    我知道有很多与此类似的主题 但没有一个提供我正在寻找的正确答案 我正在努力收集我们网络上的所有 SQL Server 实例 它应该能够检测正在运行的 SQl Server 版本 我们运行的不同版本之间存在差异 SQL Server 2000
  • BotFramework 和 LUIS 出现 JSON 序列化器错误

    StackOverflow 社区 我有一个聊天机器人 并集成了 LUIS ai 以使其更加智能 其中一个对话即将与主管 老师 预约 一切都运行良好 代码完全相同 几个小时前 我遇到了一些奇怪的错误 Exception Type Newton
  • 如何从 shell 脚本中变量中存储的日期中减去年份?

    as of dt 2016 01 01 as of dt prev year as of dt d 1 year Y m d echo as of dt prev year 这是行不通的 错误 d 找不到命令 但是 如果我们使用 date
  • 如何在MFC编程中使用GetDHtmlDocument()?

    我正在尝试使用 H结果 获取DHtml文档 IHTMLDocument2 pphtml文档 MFC编程中的函数 基本上 我试图在给定不同配置 加载输入 的 HTML 视图对话框应用程序 C w MFC 中呈现 GUI 所以我将以下代码放入