Ejemplo n.º 1
0
CComSafeArray::CComSafeArray(LPCVARIANT pSrc)
{
	_SafeArrayInit(this);
	*this			= pSrc;
	m_dwDims		= GetDim();
	m_dwElementSize = GetElemSize();
}
Ejemplo n.º 2
0
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();
}
Ejemplo n.º 3
0
CComSafeArray::CComSafeArray(const VARIANT &varSrc)
{
	_SafeArrayInit(this);
	*this			= varSrc;
	m_dwDims		= GetDim();
	m_dwElementSize = GetElemSize();
}
Ejemplo n.º 4
0
CComSafeArray::CComSafeArray(const CComSafeArray &saSrc)
{
	_SafeArrayInit(this);
	*this			= saSrc;
	m_dwDims		= GetDim();
	m_dwElementSize = GetElemSize();
}
Ejemplo n.º 5
0
CComSafeArray::CComSafeArray(LPCSAFEARRAY pSrc, VARTYPE vtSrc)
{
	_SafeArrayInit(this);
	vt				= (VARTYPE) (vtSrc | VT_ARRAY);
	MtlCheckError( ::SafeArrayCopy( (LPSAFEARRAY) pSrc, &parray ) );
	m_dwDims		= GetDim();
	m_dwElementSize = GetElemSize();
}
Ejemplo n.º 6
0
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();
	}
}
Ejemplo n.º 7
0
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;
	}
}