bool CFYSPrintDoc::SendXmlDoc(CString strURL) { CComPtr<IWebBrowser2> pBrowser; HRESULT hr = pBrowser.CoCreateInstance(_bstr_t("InternetExplorer.Application")); if (hr != S_OK) { SetError("Failed to start IE!."); return false; } CString strSendFile = m_strFYSTempPath + FORYOURSOUL_TXT; CHTTPClient *pHttpClient = new CHTTPClient(pBrowser); pHttpClient->AddPostArguments("File1", strSendFile, true); BOOL bRetVal = pHttpClient->Request(strURL, CHTTPClient::RequestPostMethodMultiPartsFormData); //pHttpClient->Request("http://localhost/simpleupload/Receiver.aspx", CHTTPClient::RequestPostMethodMultiPartsFormData); VARIANT_BOOL bBusy = true; int ix = 300; while (bBusy) { ::Sleep(100); pBrowser->get_Busy(&bBusy); if (--ix <= 0) break; } if (!bRetVal) { m_strErrorMsg.Format("Failed to send project to the website."); return false; } CComPtr<IDispatch> spDisp; hr = pBrowser->get_Document(&spDisp); if (FAILED(hr) || !spDisp) { delete pHttpClient; return false; } CComQIPtr<IHTMLDocument2> spDoc(spDisp); if (!spDoc) { m_strErrorMsg.Format("Invalid response from website after sending project successfully."); delete pHttpClient; return false; } CComPtr<IHTMLElement> spElem; hr = spDoc->get_body(&spElem); if (FAILED(hr) || !spDisp) { m_strErrorMsg.Format("Invalid response from website after sending project successfully."); delete pHttpClient; return false; } CString strTxt; CComBSTR bstr; spElem->get_innerHTML(&bstr); strTxt = bstr; #ifdef _DEBUG spElem->get_innerText(&bstr); strTxt = bstr; #endif delete pHttpClient; if (strTxt.Find("<FYS_DATASTREAMACKNOWLEDGMENT") < 0) { m_strErrorMsg.Format("Invalid response from website after sending project successfully."); return false; } strTxt = strTxt.Mid(strTxt.Find("<FYS_DATASTREAMACKNOWLEDGMENT")); CString strSrchPtrn("//FYS_DATASTREAMACKNOWLEDGMENT"); CXMLDocument* pXMLDoc = new CXMLDocument; pXMLDoc->LoadString(strTxt); pXMLDoc->RegisterCallback(MyXMLCallback, (LPARAM)this); if (pXMLDoc->WalkTree(strSrchPtrn) != S_OK) { pXMLDoc->SetFYSError(); m_strErrorMsg = pXMLDoc->GetErrorMsg(); delete pXMLDoc; return false; } delete pXMLDoc; return true; }
void CPhotoManager::Callback(IDispatch* pDisp1, IDispatch* pDisp2, DISPID id, VARIANT* pVarResult) { if (!pDisp1) return; HRESULT hr = S_OK; if (id == DISPID_MOUSEOVER) { CComQIPtr<IHTMLElement2> spElem2(pDisp1); if (!spElem2) return; hr = spElem2->focus(); } else if (id == DISPID_MOUSEDOWN) { CComQIPtr<IHTMLElement> spElem(pDisp1); if (!spElem) return; CComPtr<IDispatch> spDisp; spElem->get_document(&spDisp); CComQIPtr<IHTMLDocument2> spDoc(spDisp); if (FAILED(hr) || !spDoc) return; CComPtr<IHTMLWindow2> spWnd; HRESULT hr = spDoc->get_parentWindow(&spWnd); if (FAILED(hr) || !spWnd) return; CComPtr<IHTMLEventObj> spEventObj; hr = spWnd->get_event(&spEventObj); if (FAILED(hr) || !spEventObj) return; long lVal; spEventObj->get_button(&lVal); if ( lVal == 1) // 1 = left button is pressed hr = spElem->click(); } else if (id == DISPID_MYCLICK) { CComQIPtr<IHTMLElement> spElem(pDisp1); if (!spElem) return; CComQIPtr<IHTMLImgElement> spImgElem(pDisp1); if (!spImgElem) return; CComPtr<IDispatch> spDisp; hr = spElem->get_document(&spDisp); if (FAILED(hr) || !spDisp) return; CComQIPtr<IHTMLDocument2> spDoc(spDisp); if (!spDoc) return; CString strFileName; bool bOK = AddAPhoto((IHTMLDocument2*)spDoc, strFileName); if (!bOK) return; CComQIPtr<IMarkupServices2> spMarkup2 = spDoc; if (spMarkup2) hr = spMarkup2->BeginUndoUnit(L"Add a Photo"); long lElemWidth = 0; long lElemHeight = 0; GetElemSize(spElem, lElemWidth, lElemHeight); if (!lElemWidth && !lElemHeight) { GetImgElemSize(spImgElem, lElemWidth, lElemHeight); SetElemSize(spElem, lElemWidth, lElemHeight); } long lImageWidth = 0; long lImageHeight = 0; CImage Image(strFileName); Image.GetNativeImageSize(lImageWidth, lImageHeight); #define SHIFT (GetAsyncKeyState(VK_SHIFT) < 0) if (SHIFT) ::MessageBox(NULL, "The photo will be embedded in the email message.", g_szAppName, MB_OK); else { CString strURL = m_strHost + "/cgi-bin/flashalbum/cmaddaphoto.pl"; // strFormDataPairs is a string of name/value pairs as follows "name1:value1|\nname2:value2|\n" CString strFormDataPairs; strFormDataPairs += "inputfile:~" + strFileName + "|\n"; CUploadImages Upload(ULI_NOUPSIZE /*| ULI_LEAVETEMP | ULI_DEBUG*/); CString strResult; Upload.UploadImages(strURL, strFormDataPairs, lElemWidth, lElemHeight, 70/*nQuality*/, strResult); if (strResult.Find("error") < 0 && strResult.Find("http") >= 0) { GetImageHost(strResult); strFileName = strResult; //::MessageBox(NULL, String("The photo was uploaded first to %s.", strFileName), g_szAppName, MB_OK); } else { CString szMsg; szMsg.LoadString(IDS_ADDAPHOTO_ERROR); ::MessageBox(NULL, szMsg, g_szAppName, MB_OK); if (spMarkup2) hr = spMarkup2->EndUndoUnit(); return; } } if (lImageWidth && lImageHeight) { ScaleToFit(&lElemWidth, &lElemHeight, lImageWidth, lImageHeight, true/*bUseSmallerFactor*/); SetImgElemSize(spImgElem, lElemWidth, lElemHeight); SetElemStyle(spElem, lElemWidth, lElemHeight); } hr = spImgElem->put_src(CComBSTR(strFileName)); if (spMarkup2) { hr = spMarkup2->EndUndoUnit(); CComQIPtr<IMarkupContainer2> spMarkupCont2 = spMarkup2; if (spMarkupCont2) { long l = spMarkupCont2->GetVersionNumber(); l += 0; } } if (FAILED(hr)) return; } }
void CFlashManager::FlashCallback(IDispatch * pDisp1, IDispatch * pDisp2, DISPID id, VARIANT* pVarResult) { CFuncLog log(g_pLog, "CFlashManager::FlashCallback()"); if (!pDisp1) return; if (id == DISPID_MOUSEOVER) { // Play flash //Flash_Play(pDisp2); // Interferes with interactive flash, i.e. Care Bear game // Set contentEditable false (true if alt key pressed) CComQIPtr<IHTMLElement> spElem(pDisp1); if (!spElem) return; HRESULT hr = S_OK; CComPtr<IDispatch> spDisp; hr = spElem->get_document(&spDisp); if (FAILED(hr) || !spDisp) return; CComQIPtr<IHTMLDocument2> spDoc(spDisp); if (!spDoc) return; CComPtr<IHTMLWindow2> spWnd; hr = spDoc->get_parentWindow(&spWnd); if (FAILED(hr) || !spWnd) return; CComPtr<IHTMLEventObj> spEventObj; hr = spWnd->get_event(&spEventObj); if (FAILED(hr) || !spEventObj) return; VARIANT_BOOL bVal; spEventObj->get_altKey(&bVal); if ( bVal ) SetContentEditable(pDisp1, TRUE); else SetContentEditable(pDisp1, FALSE); } else if (id == DISPID_MOUSEDOWN) { CComQIPtr<IHTMLElement> spElem(pDisp1); if (!spElem) return; CComPtr<IDispatch> spDisp; HRESULT hr = spElem->get_document(&spDisp); CComQIPtr<IHTMLDocument2> spDoc(spDisp); if (FAILED(hr) || !spDoc) return; CComPtr<IHTMLWindow2> spWnd; hr = spDoc->get_parentWindow(&spWnd); if (FAILED(hr) || !spWnd) return; CComPtr<IHTMLEventObj> spEventObj; hr = spWnd->get_event(&spEventObj); if (FAILED(hr) || !spEventObj) return; long lVal; spEventObj->get_button(&lVal); if ( lVal == 1) // 1 = left button is pressed hr = spElem->click(); } else if (id == DISPID_DRAGEND) { // New flash elements added, re-enable. CComQIPtr<IHTMLElement> spElem(pDisp1); if (!spElem) return; HRESULT hr = S_OK; CComPtr<IDispatch> spDisp; hr = spElem->get_document(&spDisp); if (FAILED(hr) || !spDisp) return; CComQIPtr<IHTMLDocument2> spDoc(spDisp); if (!spDoc) return; Enable(spDoc, FALSE); } else if (id == DISPID_PASTE) { CComQIPtr<IHTMLDocument2> spDoc(pDisp1); if (!spDoc) return; if (m_bPasteTimerInUse) return; m_pPrePasteTimerDoc = spDoc; SetTimer(IDT_PASTE_TIMER, 300, NULL); m_bPasteTimerInUse = true; } else if (id == DISPID_DOCMOUSEDOWN) { CComQIPtr<IHTMLDocument2> spDoc(pDisp1); if (!spDoc) return; CComPtr<IHTMLWindow2> spWnd; HRESULT hr = spDoc->get_parentWindow(&spWnd); if (FAILED(hr) || !spWnd) return; CComPtr<IHTMLEventObj> spEventObj; hr = spWnd->get_event(&spEventObj); if (FAILED(hr) || !spEventObj) return; VARIANT_BOOL bVal = VARIANT_FALSE; spEventObj->get_ctrlKey(&bVal); if (bVal) Activate((IHTMLDocument2*)spDoc, true, true); } }