2010-09-07 48 views
1

那麼,經過幾個小時我迷路了......IXSLTemplate :: putref_stylesheet返回E_INVALIDARG

IXSLTemplate::putref_stylesheet不只是E_FAIL記錄任何錯誤。

但在我的情況下putref_stylesheet返回E_INVALIDARGGetErrorInfo()只是多餘的告訴我,「論據是無效的」。所以我沒有留下太多的信息。

但是,我的代碼非常接近我在網絡和msdn上找到的所有示例。 而且它確實是這樣的:

void xsltProcessing(MSXML2::IXMLDOMDocument* pXmlDoc, MSXML2::IXMLDOMDocument * pXslDoc) 
{ 
    IXSLTemplatePtr pTemplate; 
    pTemplate.CreateInstance(_T("Msxml2.XSLTemplate")); 
    pTemplate->putref_stylesheet(pXslDoc); 
    //... 
} 

由於沒有對putref_stylesheet多文檔。你有什麼想法可能會出現錯誤返回E_INVALIDARG

我的pXslDocIXMLDOMDocument我已經從靜態const字符串加載成功。

任何線索? (我猜這是一個非常含糊的問題,但我一直在搜尋的小時數)

回答

1

你是否正在異步加載pXslDoc

IXMLDOMDocument對象的默認行爲是異步加載的,所以在調用putref_stylesheet()時,pXslDoc可能尚未完成加載。

添加以下代碼加載pXslDoc之前會解決這個問題,如果你患了什麼:

pXslDoc->put_async(VARIANT_FALSE); 
+0

是。我這樣做是因爲我在網絡上的例子中看到它,但不知道爲什麼。感謝你的解釋。 – 2010-09-07 14:08:15

相關問題