我正在开发一个 Visual c++ 应用程序,我必须为预览窗格中的 HTML 预览开发预览处理程序。我有想法对 Xml 文档执行相同的操作(对于 xml 文件,他们创建样式表来完成此任务),但我不知道如何为 .html 文件执行此操作。
如果我是对的,那么我必须做这样的事情-
IHTMLDocument * pDomDoc;
HRESULT hr = CoCreateInstance(CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER,
IID_IHTMLDocument2, (void**)&pDomDoc);
I don't know what after that ??
有任何想法吗 ??
我的意思是我知道如何为他们的 XML 文件执行此操作,如下所示-
IXMLDOMDocument *pDomDoc;
IStream *m_FinalXMLStream;
HRESULT hr = CoCreateInstance(__uuidof(DOMDocument60), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pDomDoc));
if (SUCCEEDED(hr))
{
VARIANT_BOOL vfSuccess = VARIANT_FALSE;
VARIANT vtXmlSource = {0};
V_VT(&vtXmlSource) = VT_UNKNOWN;
V_UNKNOWN(&vtXmlSource) = static_cast<IUnknown *>(m_FinalXMLStream);
//here m_FinalXMLStream is the stream cpntaining the contents of XML file
hr = pDomDoc->load(vtXmlSource, &vfSuccess);
if (vfSuccess != VARIANT_TRUE)
{
hr = FAILED(hr) ? hr : E_FAIL; // keep failed hr
}
if (SUCCEEDED(hr))
{
if ((m_pStyleSheetNode) == NULL)
{
hr = CreateStyleSheetNode();
//This function creates the stylesheet and defined somewhere in my code.
}
if (SUCCEEDED(hr))
{
BSTR bstrRtf;
hr = pDomDoc->transformNode((m_pStyleSheetNode), &bstrRtf);
if (SUCCEEDED(hr))
{
hr = CreatePreviewWindowForXml(bstrRtf);
//This function call creates the window dimension where to preview the Xml contents
SysFreeString(bstrRtf);
}
}
}
pDomDoc->Release();
}
知道如何对 html 文件做同样的事情吗??我想为 HTML 文件做同样的事情。明白了???如果没有请再问我一次??
看到这个来理解我实际上想要做什么——我想要做的是我有一个包含任何 html 文件内容的流(IStream *m_FinalHTMLStream;)。我如何得到流现在不是问题。现在重要的是它包含一个 html 文件的内容(如果你在记事本中打开任何 html 文件-_FinalHTMLStream 包含相同的内容)。现在你可以看到当我们在窗口资源管理器中有一个 html 文件时,如果我们单击它,我们可以在预览窗格中看到 html 文件预览。我也想做同样的事情。为此,我们需要将 html 文件内容存储在某个位置(在我的情况下,我有 _FinalHTMLStream)。对于对 XML 文件执行相同操作,代码如上,但我不知道如何对 html 文件执行此操作。所以这就是我想要的。现在明白了??如果没有,请告诉我??
我正在创建自己的预览处理程序 hor .html 文件,这就是我正在做的事情(简而言之) ..