void CDHtmlMainDialog::ChangeTheme(CString ThemeName) { CComPtr<IHTMLDocument2> pHtmlDoc; CComPtr<IHTMLStyleSheet> pHtmlStyleSheet; CComPtr<IHTMLStyleSheetsCollection> pStyleSheetsCollection; HRESULT hr; CComBSTR bstr; CString cstr; LONG length; hr = GetDHtmlDocument(&pHtmlDoc); if(FAILED(hr)) return ; hr = pHtmlDoc->get_styleSheets(&pStyleSheetsCollection); if(FAILED(hr)) return ; hr = pStyleSheetsCollection->get_length(&length); if(FAILED(hr)) return ; VARIANT index; VariantInit(&index); // by ordinal index.vt = VT_I4; index.intVal = 0; // by name // index.vt = VT_BSTR; // index.bstrVal = L"StyleSheet"; VARIANT dispatch; VariantInit(&dispatch); dispatch.vt = VT_DISPATCH; hr = pStyleSheetsCollection->item(&index, &dispatch); if(FAILED(hr)) return ; dispatch.pdispVal->QueryInterface(IID_IHTMLStyleSheet, (void **) &pHtmlStyleSheet); if(FAILED(hr)) return ; cstr.Format(_T("%s\\%s\\%s"), m_ThemeDir, ThemeName, MAIN_CSS_FILE_NAME); bstr = cstr; hr = pHtmlStyleSheet->put_href(bstr); if(FAILED(hr)) return ; VariantClear(&index); VariantClear(&dispatch); #ifdef SUISHO_SHIZUKU_SUPPORT #ifdef KUREI_KEI_SUPPORT WritePrivateProfileString(_T("Setting"), _T("ThemeKureiKei"), ThemeName, m_Ini); #else WritePrivateProfileString(_T("Setting"), _T("ThemeShizuku"), ThemeName, m_Ini); #endif #else WritePrivateProfileString(_T("Setting"), _T("Theme"), ThemeName, m_Ini); #endif }
//获取JS脚本 bool CHTMLContainerDlg::GetJScript(CComPtr<IDispatch>& spDisp) { HRESULT hr = S_OK; if (!m_spDoc) { hr = GetDHtmlDocument(&m_spDoc); ATLASSERT(SUCCEEDED(hr)); } if (SUCCEEDED(hr)) { hr = m_spDoc->get_Script(&spDisp); ATLASSERT(SUCCEEDED(hr)); } return SUCCEEDED(hr); }
void CHtmlCaretTestView::OnMovetoend() { IHTMLDocument2 *pHTMLDocument2; if(!GetDHtmlDocument(&pHTMLDocument2))return; IDisplayServices *pDisplayServices; HRESULT hRes = pHTMLDocument2->QueryInterface(IID_IDisplayServices, reinterpret_cast<void**>(&pDisplayServices)); if (FAILED(hRes)) return; IDisplayPointer *pDisplayPointer; hRes = pDisplayServices->CreateDisplayPointer(&pDisplayPointer); if (FAILED(hRes)) return; IMarkupServices *pMarkupServices; hRes = pDisplayServices->QueryInterface(IID_IMarkupServices, reinterpret_cast<void**>(&pMarkupServices)); if (FAILED(hRes)) return; IMarkupPointer *pMarkupPointer; hRes = pMarkupServices->CreateMarkupPointer(&pMarkupPointer); if (FAILED(hRes)) return; IHTMLElement *pElement; pHTMLDocument2->get_body(&pElement); hRes = pMarkupPointer->MoveAdjacentToElement(pElement, ELEM_ADJ_BeforeEnd); if (FAILED(hRes)) return; hRes = pDisplayPointer->MoveToMarkupPointer(pMarkupPointer, NULL); if (FAILED(hRes)) return; IHTMLCaret *pHTMLCaret; hRes = pDisplayServices->GetCaret(&pHTMLCaret); if (FAILED(hRes)) return; hRes = pHTMLCaret->MoveCaretToPointerEx(pDisplayPointer, TRUE, TRUE, CARET_DIRECTION_FORWARD); if (FAILED(hRes)) return; }