| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- #include "stdafx.h"
 
- #include "CP_Main.h"
 
- #include ".\clipboardsaverestore.h"
 
- CClipboardSaveRestore::CClipboardSaveRestore(void)
 
- {
 
- }
 
- CClipboardSaveRestore::~CClipboardSaveRestore(void)
 
- {
 
- }
 
- bool CClipboardSaveRestore::Save()
 
- {
 
- 	bool bRet = false;
 
- 	COleDataObjectEx oleData;
 
- 	CClipFormat cf;
 
- 	FORMATETC fm;
 
- 	
 
- 	//Attach to the clipboard
 
- 	if(!oleData.AttachClipboard())
 
- 	{
 
- 		ASSERT(0);
 
- 		return bRet;
 
- 	}
 
- 	oleData.EnsureClipboardObject();
 
- 	oleData.BeginEnumFormats();
 
- 	while(oleData.GetNextFormat(&fm))
 
- 	{
 
- 		cf.m_hgData = oleData.GetGlobalData(fm.cfFormat);
 
- 		cf.m_cfType = fm.cfFormat;
 
- 		if(cf.m_hgData)
 
- 		{
 
- 			int nSize = GlobalSize(cf.m_hgData);
 
- 			if(nSize > 0)
 
- 			{
 
- 				m_Clipboard.Add(cf);
 
- 				bRet = true;
 
- 			}
 
- 			else
 
- 			{
 
- 				ASSERT(FALSE); // a valid GlobalMem with 0 size is strange
 
- 				cf.Free();
 
- 			}
 
- 			cf.m_hgData = 0; // m_Formats owns it now
 
- 		}
 
- 	}
 
- 	oleData.Release();
 
- 	return bRet;
 
- }
 
- bool CClipboardSaveRestore::Restore()
 
- {
 
- 	bool bRet = false;
 
- 	if(::OpenClipboard(NULL))
 
- 	{
 
- 		::EmptyClipboard();
 
- 		int nSize = m_Clipboard.GetSize();
 
- 		for(int nPos = 0; nPos < nSize; nPos++)
 
- 		{
 
- 			CClipFormat cf = m_Clipboard[nPos];
 
- 			if(cf.m_hgData)
 
- 			{
 
- 				::SetClipboardData(cf.m_cfType, cf.m_hgData);
 
- 				cf.m_hgData = NULL;//clipboard now owns the data
 
- 				bRet = TRUE;
 
- 			}
 
- 		}
 
- 		SetClipboardData(theApp.m_cfIgnoreClipboard, NewGlobalP("Ignore", sizeof("Ignore")));
 
- 		::CloseClipboard();
 
- 	}
 
- 	m_Clipboard.RemoveAll();
 
- 	return bRet;
 
- }
 
 
  |