CComSafeArray::CComSafeArray(LPCVARIANT pSrc) { _SafeArrayInit(this); *this = pSrc; m_dwDims = GetDim(); m_dwElementSize = GetElemSize(); }
void CComSafeArray::Create(VARTYPE vtSrc, DWORD dwDims, SAFEARRAYBOUND *rgsabound) { ATLASSERT(dwDims > 0); ATLASSERT(rgsabound != NULL); // Validate the VARTYPE for SafeArrayCreate call ATLASSERT( !(vtSrc & VT_ARRAY) ); ATLASSERT( !(vtSrc & VT_BYREF) ); ATLASSERT( !(vtSrc & VT_VECTOR) ); ATLASSERT(vtSrc != VT_EMPTY); ATLASSERT(vtSrc != VT_NULL); // Free up old safe array if necessary Clear(); ATLTRY( parray = ::SafeArrayCreate(vtSrc, dwDims, rgsabound) ); if (parray == NULL) { ATLTRACE2(atlTraceDBProvider, 0, "CComSafeArray::Create Error : OOM\n"); return; } vt = unsigned short (vtSrc | VT_ARRAY); m_dwDims = dwDims; m_dwElementSize = GetElemSize(); }
CComSafeArray::CComSafeArray(const VARIANT &varSrc) { _SafeArrayInit(this); *this = varSrc; m_dwDims = GetDim(); m_dwElementSize = GetElemSize(); }
CComSafeArray::CComSafeArray(const CComSafeArray &saSrc) { _SafeArrayInit(this); *this = saSrc; m_dwDims = GetDim(); m_dwElementSize = GetElemSize(); }
CComSafeArray::CComSafeArray(LPCSAFEARRAY pSrc, VARTYPE vtSrc) { _SafeArrayInit(this); vt = (VARTYPE) (vtSrc | VT_ARRAY); MtlCheckError( ::SafeArrayCopy( (LPSAFEARRAY) pSrc, &parray ) ); m_dwDims = GetDim(); m_dwElementSize = GetElemSize(); }
void CComSafeArray::CreateOneDim(VARTYPE vtSrc, DWORD dwElements, const void *pvSrcData, long nLBound) { ATLASSERT(dwElements > 0); // Setup the bounds and create the array SAFEARRAYBOUND rgsabound; rgsabound.cElements = dwElements; rgsabound.lLbound = nLBound; Create(vtSrc, 1, &rgsabound); // Copy over the data if neccessary if (pvSrcData != NULL) { void *pvDestData; AccessData(&pvDestData); memcpy(pvDestData, pvSrcData, GetElemSize() * dwElements); UnaccessData(); } }
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; } }