感謝@丹尼爾爲簡單的修復。當我第一次創建文檔時,我使用about:空白頁面,然後將baseurl設置爲我想要使用的目錄。我試圖使用file://但它不起作用。因此我使用完整路徑名稱。再次感謝@Daniel和@MSalters幫助我。對於這裏感興趣的人是代碼。
m_Browser.Navigate(_T("about:blank")); //navigate to blank document
IDispatch* pDispatch = m_Browser.GetHtmlDocument();
//Only if a resource or web page is loaded can we get the document
if(pDispatch != NULL)
{
IHTMLDocument2* pHtmlDoc;
HRESULT hr = pDispatch->QueryInterface(__uuidof(IHTMLDocument2), (void**)&pHtmlDoc);
pDispatch->Release();
if(SUCCEEDED(hr))
{
// Create a safearray to store the HTML text
CComBSTR bstrURL;
CComVariant varDummy;
SAFEARRAY *pSA;
SAFEARRAYBOUND saBound = {1, 0};
pSA = SafeArrayCreate(VT_VARIANT, 1, &saBound);
// Copy the HTML into the one and only element
VARIANT *pVar;
CComBSTR bstrHTML = "<html><head><base href=\"C:\\\"></head><body>Hello!</body></html>"; // Load the text
varDummy = bstrHTML; // .. into a variant
SafeArrayAccessData(pSA, (void**)&pVar); // Access safearray data
pVar[0] = varDummy; // Set the text data
SafeArrayUnaccessData(pSA); // Release access
// Write the HTML as the document's new text
pHtmlDoc->write(pSA); // Overwrite HTML
SafeArrayDestroy(pSA);
pHtmlDoc->close();
}
}
我知道正則表達式不是好主意我只是想知道什麼是好的。對於任何感興趣的人來說,我的快速正則表達式替換代碼 string str =「」+ src = \「)([^ \」>] +)「); std :: string replacement =「$ 1file:// newpath $ 2」; std :: string str2 = std :: tr1 :: regex_replace(str,rx,replacement); – Meanteacher 2014-10-30 13:43:47
如果使用正則表達式更新圖像上的src,最終會漏掉一個案例,除非文檔對格式的一致性非常有信心。相反,我會嘗試一些測試文檔,看看base是否能解決您的問題,如果有問題,請嘗試我提出的解決方案。 – 2014-10-30 13:48:29
很明顯,您希望在問題中將每個想法的基本URL設置爲一個'file://'URL。 '