|
|
@@ -0,0 +1,47 @@
|
|
|
+#include "stdafx.h"
|
|
|
+#include "ClipFormatQListCtrl.h"
|
|
|
+#include "BitmapHelper.h"
|
|
|
+
|
|
|
+CClipFormatQListCtrl::CClipFormatQListCtrl(void)
|
|
|
+{
|
|
|
+ m_clipRow = -1;
|
|
|
+ m_convertedToSmallImage = false;
|
|
|
+}
|
|
|
+
|
|
|
+CClipFormatQListCtrl::~CClipFormatQListCtrl(void)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+HGLOBAL CClipFormatQListCtrl::GetDib(CDC *pDc, int height)
|
|
|
+{
|
|
|
+ if(m_cfType != CF_DIB)
|
|
|
+ {
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(m_convertedToSmallImage)
|
|
|
+ {
|
|
|
+ return m_hgData;
|
|
|
+ }
|
|
|
+
|
|
|
+ m_convertedToSmallImage = true;
|
|
|
+
|
|
|
+ CBitmap Bitmap;
|
|
|
+ if( !CBitmapHelper::GetCBitmap(this, pDc, &Bitmap, height) )
|
|
|
+ {
|
|
|
+ Bitmap.DeleteObject();
|
|
|
+ // the data is useless, so free it.
|
|
|
+ this->Free();
|
|
|
+ return FALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ // delete the large image data loaded from the db
|
|
|
+ this->Free();
|
|
|
+
|
|
|
+ //Convert the smaller bitmap back to a dib
|
|
|
+ HPALETTE hPal = NULL;
|
|
|
+ this->m_hgData = CBitmapHelper::hBitmapToDIB((HBITMAP)Bitmap, BI_RGB, hPal);
|
|
|
+
|
|
|
+ return this->m_hgData;
|
|
|
+}
|