使用CDHtmlDialog

时间:2013-09-02 17:01:35

标签: winapi mfc

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

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

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

  3. 在MFC代码中捕获DHTML按钮,并根据该更改图像&文本。

  4. 1& 2我计划在TIMER或Thread内部进行此操作,并动态地为用户更改它们。

    我能够创建一个简单的应用程序,但正在努力的是改变图像&来自MFC代码的DHTML页面中的文本。

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

    示例应用或代码非常棒。

    提前致谢。

1 个答案:

答案 0 :(得分: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;
}