Browse Source

test

test
ScottBrogden 9 years ago
parent
commit
8344a6d2e5
1 changed files with 92 additions and 1 deletions
  1. 92 1
      OleClipSource.cpp

+ 92 - 1
OleClipSource.cpp

@@ -12,6 +12,7 @@
 #include "Client.h"
 #include "sqlite\unicode\unistr.h"
 #include "sqlite\unicode\uchar.h"
+#include "BitmapHelper.h"
 
 /*------------------------------------------------------------------*\
 COleClipSource
@@ -21,6 +22,8 @@ COleClipSource::COleClipSource()
 {
 	m_bLoadedFormats = false;
 	m_convertToHDROPOnDelayRender = false;
+	m_pBitmapConversionData = NULL;
+	m_pBitmapConversion = NULL;
 }
 
 COleClipSource::~COleClipSource()
@@ -28,6 +31,50 @@ COleClipSource::~COleClipSource()
 	
 }
 
+void COleClipSource::PostSetClipboard()
+{
+	/*if (m_pBitmapConversionData != NULL)
+	{
+		delete m_pBitmapConversionData;
+		m_pBitmapConversionData = NULL;
+	}*/
+
+	/*if (m_pBitmapConversion != NULL)
+	{
+		delete m_pBitmapConversion;
+		m_pBitmapConversion = NULL;
+	}*/
+
+	//if (OpenClipboard(theApp.m_pMainWnd->m_hWnd))
+	//{
+	//	CBitmap * junk = new CBitmap();
+
+	//	HANDLE hGlobal = ::GetClipboardData(CF_DIB);
+	//	LPVOID pvData = GlobalLock(hGlobal);
+	//	if (pvData)
+	//	{
+	//		
+	//		CClipFormat clipFormat;
+	//		clipFormat.m_hgData = pvData;
+	//		clipFormat.m_cfType = CF_DIB;
+	//		clipFormat.m_autoDeleteData = false;
+
+	//		CDC *pDC = theApp.m_pMainWnd->GetDC();
+
+	//		CBitmapHelper::GetCBitmap(&clipFormat, pDC, junk, MAXINT);
+
+	//		SetClipboardData(CF_BITMAP, junk->m_hObject);
+
+	//		GlobalUnlock(hGlobal);
+	//	}
+
+	//	CloseClipboard();
+
+	//	//copy has been made on clipboard so we can delete
+	//	delete junk;
+	//}
+}
+
 BOOL COleClipSource::DoDelayRender()
 {
 	CClipTypes types;
@@ -697,6 +744,9 @@ void COleClipSource::Typoglycemia(CClip &clip)
 
 INT_PTR COleClipSource::PutFormatOnClipboard(CClipFormats *pFormats)
 {
+	::OpenClipboard(NULL);
+	::EmptyClipboard();
+
 	Log(_T("Start of put format on clipboard"));
 
 	CClipFormat* pCF;
@@ -731,6 +781,44 @@ INT_PTR COleClipSource::PutFormatOnClipboard(CClipFormats *pFormats)
 			continue;
 		}
 
+		if (pCF->m_cfType == CF_DIB)
+		{
+			
+			//m_pBitmapConversion = new CBitmap();
+			//CDC *pDC = theApp.m_pMainWnd->GetDC();
+			/*byte *d = (byte *)GlobalLock(pCF->m_hgData);
+			
+			
+
+			HBITMAP h = CBitmapHelper::dib_to_bitmap(d);
+
+			GlobalUnlock(pCF->m_hgData);
+
+			this->CacheGlobalData(CF_BITMAP, h);*/
+
+			//
+
+			//m_pBitmapConversion = new CBitmap();
+			//CClientDC cdc(theApp.m_pMainWnd);
+			//CDC dc;
+			//dc.CreateCompatibleDC(&cdc);
+			//CRect client(0, 0, 200, 200);
+			//m_pBitmapConversion->CreateCompatibleBitmap(&cdc, client.Width(), client.Height());
+			//dc.SelectObject(m_pBitmapConversion);
+
+			//cdc.DrawText("test", client, DT_CENTER | DT_SINGLELINE | DT_VCENTER);
+			//
+			//m_pBitmapConversionData = new tagSTGMEDIUM;
+			//m_pBitmapConversionData->tymed = TYMED_GDI;
+			//m_pBitmapConversionData->hBitmap = HBITMAP(*m_pBitmapConversion);
+
+			//////put the data on the clipboard
+			//this->CacheData(CF_BITMAP, m_pBitmapConversionData);	
+
+			//m_pBitmapConversion->Detach();
+			
+		}
+
 		wchar_t * stringData = (wchar_t *) GlobalLock(pCF->m_hgData);
 		int size = (int) GlobalSize(pCF->m_hgData);
 		CString cs(stringData);
@@ -738,7 +826,8 @@ INT_PTR COleClipSource::PutFormatOnClipboard(CClipFormats *pFormats)
 		
 		Log(StrF(_T("Setting clipboard type: %s to the clipboard"), GetFormatName(pCF->m_cfType)));
 
-		CacheGlobalData(pCF->m_cfType, pCF->m_hgData);
+		//CacheGlobalData(pCF->m_cfType, pCF->m_hgData);
+		::SetClipboardData(pCF->m_cfType, pCF->m_hgData);
 		pCF->m_hgData = 0; // OLE owns it now
 	}
 
@@ -746,6 +835,8 @@ INT_PTR COleClipSource::PutFormatOnClipboard(CClipFormats *pFormats)
 
 	m_bLoadedFormats = true;
 
+	::CloseClipboard();
+
 	Log(_T("End of put format on clipboard"));
 
 	return count;