本文整理汇总了C++中zimbra::util::ScopedInterface::CopyTo方法的典型用法代码示例。如果您正苦于以下问题:C++ ScopedInterface::CopyTo方法的具体用法?C++ ScopedInterface::CopyTo怎么用?C++ ScopedInterface::CopyTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类zimbra::util::ScopedInterface
的用法示例。
在下文中一共展示了ScopedInterface::CopyTo方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetContactImage
HRESULT MAPIContact::GetContactImage(wstring &wstrImagePath)
{
HRESULT hr = S_OK;
Zimbra::Util::ScopedInterface<IStream> pSrcStream;
{
Zimbra::Util::ScopedRowSet pAttachRows;
Zimbra::Util::ScopedInterface<IMAPITable> pAttachTable;
SizedSPropTagArray(3, attachProps) = {
3, { PR_ATTACH_NUM, PR_ATTACH_SIZE, PR_ATTACH_LONG_FILENAME }
};
hr = m_pMessage->GetAttachmentTable(MAPI_UNICODE, pAttachTable.getptr());
if (SUCCEEDED(hr))
{
if (FAILED(hr = pAttachTable->SetColumns((LPSPropTagArray) & attachProps, 0)))
return hr;
ULONG ulRowCount = 0;
if (FAILED(hr = pAttachTable->GetRowCount(0, &ulRowCount)))
return hr;
if (FAILED(hr = pAttachTable->QueryRows(ulRowCount, 0, pAttachRows.getptr())))
return hr;
if (SUCCEEDED(hr))
{
hr = MAPI_E_NOT_FOUND;
for (unsigned int i = 0; i < pAttachRows->cRows; i++)
{
// if property couldn't be found or returns error, skip it
if ((pAttachRows->aRow[i].lpProps[2].ulPropTag == PT_ERROR) ||
(pAttachRows->aRow[i].lpProps[2].Value.err == MAPI_E_NOT_FOUND))
continue;
// Discard the attachmetnt if its not contact picture
if (_tcscmp(pAttachRows->aRow[i].lpProps[2].Value.LPSZ, _T(
"ContactPicture.jpg")))
continue;
Zimbra::Util::ScopedInterface<IAttach> pAttach;
if (FAILED(hr = m_pMessage->OpenAttach(
pAttachRows->aRow[i].lpProps[0].Value.l, NULL, 0,
pAttach.getptr())))
continue;
if (FAILED(hr = pAttach->OpenProperty(PR_ATTACH_DATA_BIN, &IID_IStream,
STGM_READ, 0, (LPUNKNOWN FAR *)pSrcStream.getptr())))
return hr;
break;
}
}
}
}
if (hr != S_OK)
return hr;
// copy image to file
wstring wstrTempAppDirPath;
char *lpszDirName = NULL;
char *lpszUniqueName = NULL;
Zimbra::Util::ScopedInterface<IStream> pDestStream;
if (!Zimbra::MAPI::Util::GetAppTemporaryDirectory(wstrTempAppDirPath))
return MAPI_E_ACCESS_DENIED;
WtoA((LPWSTR)wstrTempAppDirPath.c_str(), lpszDirName);
string strFQFileName = lpszDirName;
WtoA((LPWSTR)Zimbra::MAPI::Util::GetUniqueName().c_str(), lpszUniqueName);
strFQFileName += "\\ZmContact_";
strFQFileName += lpszUniqueName;
strFQFileName += ".jpg";
SafeDelete(lpszDirName);
SafeDelete(lpszUniqueName);
// Open stream on file
if (FAILED(hr = OpenStreamOnFile(MAPIAllocateBuffer, MAPIFreeBuffer, STGM_CREATE |
STGM_READWRITE, (LPTSTR)strFQFileName.c_str(), NULL, pDestStream.getptr())))
return hr;
ULARGE_INTEGER liAll = { 0 };
liAll.QuadPart = (ULONGLONG)-1;
if (FAILED(hr = pSrcStream->CopyTo(pDestStream.get(), liAll, NULL, NULL)))
return hr;
if (FAILED(hr = pDestStream->Commit(0)))
{
return hr;
;
}
// mime file path
LPWSTR lpwstrFQFileName = NULL;
AtoW((LPSTR)strFQFileName.c_str(), lpwstrFQFileName);
wstrImagePath = lpwstrFQFileName;
SafeDelete(lpwstrFQFileName);
return hr;
}
示例2: GetContactImage
//.........这里部分代码省略.........
// LPSPropValue pProps = NULL;
// ULONG cProps = 0;
// hr = pAttach->GetProps((LPSPropTagArray) & attachProps, 0, &cProps, &pProps);
if(pAttachRows->aRow[i].lpProps[3].ulPropTag == PR_ATTACH_EXTENSION_A)
//if (pProps[PR_ATTACH_EXTENSION].ulPropTag == PR_ATTACH_EXTENSION_A)
{
// add a custom header for content location to support rfc2557
LPSTR pContentType = NULL;
strExtension = pAttachRows->aRow[i].lpProps[3].Value.lpszA;
Zimbra::MAPI::Util::GetContentTypeFromExtension(pAttachRows->aRow[i].lpProps[3].Value.lpszA, pContentType);
LPWSTR lpwstrContentType = NULL;
AtoW((LPSTR)pContentType, lpwstrContentType);
wstrContentType = lpwstrContentType;
}
break;
}
}
}
}
if (hr != S_OK)
return hr;
// copy image to file
wstring wstrTempAppDirPath;
char *lpszDirName = NULL;
char *lpszUniqueName = NULL;
Zimbra::Util::ScopedInterface<IStream> pDestStream;
if (!Zimbra::MAPI::Util::GetAppTemporaryDirectory(wstrTempAppDirPath))
return MAPI_E_ACCESS_DENIED;
WtoA((LPWSTR)wstrTempAppDirPath.c_str(), lpszDirName);
string strFQFileName = lpszDirName;
WtoA((LPWSTR)Zimbra::MAPI::Util::GetUniqueName().c_str(), lpszUniqueName);
strFQFileName += "\\ZmContact_";
strFQFileName += lpszUniqueName;
//strFQFileName += ".jpg";
strFQFileName += strExtension;
SafeDelete(lpszDirName);
SafeDelete(lpszUniqueName);
// Open stream on file
if (FAILED(hr = OpenStreamOnFile(MAPIAllocateBuffer, MAPIFreeBuffer, STGM_CREATE |
STGM_READWRITE, (LPTSTR)strFQFileName.c_str(), NULL, pDestStream.getptr())))
return hr;
ULARGE_INTEGER liAll = { 0 };
liAll.QuadPart = (ULONGLONG)-1;
if (FAILED(hr = pSrcStream->CopyTo(pDestStream.get(), liAll, NULL, NULL)))
return hr;
if (FAILED(hr = pDestStream->Commit(0)))
{
return hr;
;
}
// mime file path
LPWSTR lpwstrFQFileName = NULL;
AtoW((LPSTR)strFQFileName.c_str(), lpwstrFQFileName);
wstrImagePath = lpwstrFQFileName;
LPSTR ppszCD;
mimepp::String theCD;
theCD.append("Content-Disposition: form-data; name=\"");
theCD.append(strFQFileName.c_str());
theCD.append("\"; filename=\"");
theCD.append(strFQFileName.c_str());
theCD.append("\"");
const char *pFinal = theCD.c_str();
Zimbra::Util::CopyString(ppszCD, (LPSTR)pFinal);
LPWSTR lpwstrContentDisp = NULL;
AtoW((LPSTR)theCD.c_str(), lpwstrContentDisp);
wstrContentDisposition = lpwstrContentDisp;
/* LPSTR pContentType = NULL;
Zimbra::MAPI::Util::GetContentTypeFromExtension(".jpg", pContentType);
LPWSTR lpwstrContentType = NULL;
AtoW((LPSTR)pContentType, lpwstrContentType);
wstrContentType = lpwstrContentType;*/
SafeDelete(lpwstrFQFileName);
return hr;
}