2

我正在使用 CDHtmlDialog 创建一个简单的 MFC 应用程序。我希望我的应用程序执行以下操作。

  1. 通过使用 MFC 代码将图像加载到 DHTML 页。

  2. 使用 MFC 代码更改 DHTML 页面中的文本。

  3. 捕获 MFC 代码中的 DHTML 按钮点击,并在此基础上更改图像和文本。

对于 1 和 2,我计划在 TIMER 或 Thread 内执行此操作,并为用户动态更改它们。

我能够制作一个简单的应用程序,但正在努力的是从 MFC 代码更改 DHTML 页面中的图像和文本。

有人可以告诉我该怎么做吗?

一个示例应用程序或代码会很棒。

提前致谢。

4

1 回答 1

1

在扩展的 CDHtmlDialog 类的上下文中,您应该能够使用如下代码访问和修改 dom 元素:

IHTMLElement* pElement = NULL;
if(GetElement(_T("ELEMENT_BY_ID"), &pElement) == S_OK && pElement != NULL){

    // Get element html
    BSTR html = SysAllocString(_T(""));
    pElement->get_outerHTML(&html);

    // Update element html
    CString updatedHtml;
    updatedHTML.Format(_T("<div ID=\"ELEMENT_BY_ID\" >&nbsp; %s </div>"), _T("BLA")); 
    pElement->put_outerHTML(updatedHtml.AllocSysString());
}

要捕获事件,您可以注册一个处理程序,该处理程序将在单击 id 的元素时触发。

//
BEGIN_DHTML_EVENT_MAP(CYourDlg)
    DHTML_EVENT_ONCLICK(_T("ELEMENT_ID_TO_WATCH"), OnElementClickHandler)


protected:
HRESULT OnElementClickHandler(IHTMLElement *pElement);

HRESULT CYourDlg::OnElementClickHandler(IHTMLElement* /*pElement*/)
{
    return S_OK;
}
于 2014-08-15T23:01:51.687 回答