// Write an xml report for given two documents to given path void XmlReport::WriteXmlReport (wxString save_report_path, int doc1, int doc2) { if (_file.Open(save_report_path, wxFile::write)) { _file.Write ("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"); _file.Write ("<?xml-stylesheet type=\"text/xsl\" href=\"uhferret.xsl\" ?>\n"); _file.Write ("<uhferret>\n"); // -- write document comparison summary _file.Write (wxString::Format ("<common-trigrams>%d</common-trigrams>\n", _doclist.CountMatches (doc1, doc2, _unique))); _file.Write (wxString::Format ("<similarity>%f</similarity>\n", _doclist.ComputeResemblance (doc1, doc2, _unique))); if (_unique) { _file.Write ("(Pairwise similarity ignores trigrams in common with other documents)"); } // -- write out document 1 WriteDocumentHeader (doc1, doc2); WriteDocument (doc1, doc2); // -- write out document 2 WriteDocumentHeader (doc2, doc1); WriteDocument (doc2, doc1); _file.Write("</uhferret>\n"); _file.Close (); } }
// 输出日志2,在m_logExplorer写日志 void CLog::DoLog(const CString* output) { if (m_logDocument.p == NULL) { delete output; return; } WriteDocument(*output); delete output; // 滚动到底端 CComPtr<IHTMLElement> body; m_logDocument->get_body(&body); // 取ID static LPOLESTR scrollHeightName = OLESTR("scrollHeight"), scrollTopName = OLESTR("scrollTop"); static DISPID scrollHeightID = -1, scrollTopID = -1; if (scrollHeightID == -1) body->GetIDsOfNames(IID_NULL, &scrollHeightName, 1, LOCALE_SYSTEM_DEFAULT, &scrollHeightID); if (scrollTopID == -1) body->GetIDsOfNames(IID_NULL, &scrollTopName, 1, LOCALE_SYSTEM_DEFAULT, &scrollTopID); // body.scrollTop = body.scrollHeight DISPPARAMS params = {}; _variant_t scrollHeight; #pragma warning(suppress: 6102) if (scrollHeightID != -1) body->Invoke(scrollHeightID, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYGET, ¶ms, scrollHeight.GetAddress(), NULL, NULL); params.cArgs = 1; params.rgvarg = &scrollHeight; #pragma warning(suppress: 6102) if (scrollTopID != -1) body->Invoke(scrollTopID, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYPUT, ¶ms, NULL, NULL, NULL); }
// 初始化 void CLog::Init() { // 取document m_logExplorer.Navigate(_T("about:blank"), NULL, NULL, NULL, NULL); while (TRUE) { Delay(1); CComDispatchDriver disp(m_logExplorer.get_Document()); if (disp.p == NULL) continue; if (SUCCEEDED(disp->QueryInterface(&m_logDocument))) break; } // 写框架 WriteDocument(LOG_FRAME); // 屏蔽右键菜单、监听Log消息 m_explorerHwnd = m_logExplorer.m_hWnd; EnumChildWindows(m_explorerHwnd, EnumChildProc, (LPARAM)&m_explorerHwnd); s_oldExplorerWndProc = (WNDPROC)SetWindowLong(m_explorerHwnd, GWL_WNDPROC, (LONG)ExplorerWndProc); // 日志开始时间 GetLocalTime(&m_logStartTime); }
BOOL DocRoot::SaveDocument(const char* pszPathName) { if (gs_Exec.Busy()) { LogError("SysCAD", 0, "Must not be running"); return False; } char Fn[512]; CString TmpFn; if (pszPathName==NULL) { TmpFn=GetTitle(); pszPathName = TmpFn.GetBuffer(0); } if (strpbrk(pszPathName, ":\\")==NULL) { strcpy(Fn, PrjFiles()); strcat(Fn, pszPathName); } else strcpy(Fn, pszPathName); CString Ext; VERIFY(GetDocTemplate()->GetDocString(Ext, CDocTemplate::filterExt)); pchar ext=Ext.GetBuffer(0); const int l=strlen(Fn); const int el=strlen(ext); if (l<=el) strcat(Fn, ext); else if (_stricmp(&Fn[l-el], ext)!=0) { if (Fn[l-el]=='.') Fn[l-el]=0; //"old" or "incorect" extension needs to be replaced strcat(Fn, ext); } FILE* pFile= fopen(Fn, "wt"); flag b=(pFile!=NULL); if (b) b=WriteDocument(Fn, pFile); if (pFile) fclose(pFile); if (b) { SetPathName(Fn); SetModifiedFlag(FALSE); gs_pCmd->Print("%s - Saved\n", Fn); } else { gs_pCmd->Print("%s - NOT SAVED\n", Fn); } return b; }
// 清空日志 void CLog::Clear() { if (m_logDocument.p == NULL) return; IDispatch* tmp; m_logDocument->open(_T("about:blank"), variant_t(), variant_t(), variant_t(), &tmp); tmp->Release(); WriteDocument(LOG_FRAME); GetSystemTime(&m_logStartTime); }
RESULTCODE DescribeCsvResponse::Write(WebWriter* pWriter) { if(pWriter==NULL) { return AG_FAILURE; } XDocument* pxDoc = new XDocument(); WriteDocument(pxDoc); int len = 0; g_uchar* buffer = NULL; GLogger* pLogger = augeGetLoggerInstance(); pxDoc->WriteToString(&buffer, len, m_pRequest->GetEncoding(),1); pWriter->WriteHead(m_pRequest->GetMimeType(),false); pWriter->Write(buffer, len); pWriter->WriteTail(); pLogger->Info((g_char*)buffer); return AG_SUCCESS; }