📄 attachment.cpp
字号:
// Attachment.cpp: implementation of the CAttachment class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "oltools.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CAttachment::CAttachment()
{
try
{
m_bNoAttachment = TRUE;
m_ulAttachMethod = 0;
m_csAttachPathName = "";
m_csAttachLongPathName = "";
}
catch(...)
{
}
}
CAttachment::CAttachment(CComPtr<IAttach> &pAttachPtr,
ULONG ulMethod,
BOOL bIgnoreAttachPtr,
CString csAttachPathName,
CString csAttachLongPathName)
{
try
{
if (bIgnoreAttachPtr==FALSE)
{
m_pAttachPtr = pAttachPtr;
m_bNoAttachment = FALSE;
}
else
m_bNoAttachment = TRUE;
m_ulAttachMethod = ulMethod;
m_csAttachPathName = csAttachPathName;
m_csAttachLongPathName = csAttachLongPathName;
}
catch(...)
{
}
}
CAttachment::~CAttachment()
{
}
HRESULT CAttachment::SaveToFile(CString &csPath)
{
try
{
HRESULT hRes = S_OK;
CString csTmpPath;
csTmpPath.Format("%s\\%s",csPath, m_csAttachLongPathName.IsEmpty()?m_csAttachPathName:m_csAttachLongPathName);
csTmpPath.Replace("\\\\","\\");
csPath = csTmpPath;
CComPtr <IStream> pStrmSrc;
CComPtr <IStream> pStrmDest;
STATSTG StatInfo;
// Open the property of the attachment
// containing the file data
if (FAILED(hRes = m_pAttachPtr->OpenProperty(PR_ATTACH_DATA_BIN,
(LPIID)&IID_IStream,
0,
MAPI_MODIFY,
(LPUNKNOWN *)&pStrmSrc)))
return S_FALSE;
// Open an IStream interface and create the file at the
// same time. This code will create the file in the
// current directory.
if (FAILED(hRes = OpenStreamOnFile(
MAPIAllocateBuffer,
MAPIFreeBuffer,
STGM_CREATE | STGM_READWRITE,
csTmpPath.GetBuffer(0),
NULL,
&pStrmDest)))
return S_FALSE;
pStrmSrc -> Stat(&StatInfo, STATFLAG_NONAME);
hRes = pStrmSrc -> CopyTo(pStrmDest,
StatInfo.cbSize,
NULL,
NULL);
// Commit changes to new stream
pStrmDest -> Commit(0);
return S_OK;
}
catch(...)
{
}
return S_FALSE;
}
HRESULT CAttachment::CreateAttachment(CComPtr<IMessage> &pMessagePtr)
{
return S_FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -