X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6c9a19aabab3a878b565e6c2a5f2a3824277c4dc..8531cc2589161b92c1d8b607b0c13e4d1c8b6844:/src/msw/clipbrd.cpp diff --git a/src/msw/clipbrd.cpp b/src/msw/clipbrd.cpp index c33ba4313d..fd07c1ffa6 100644 --- a/src/msw/clipbrd.cpp +++ b/src/msw/clipbrd.cpp @@ -56,7 +56,7 @@ #include "wx/msw/private.h" -#ifndef __WXMICROWIN__ +#if wxUSE_WXDIB #include "wx/msw/dib.h" #endif @@ -68,7 +68,7 @@ #include "wx/dataobj.h" #endif -#if wxUSE_OLE +#if wxUSE_OLE && !defined(__WXWINCE__) // use OLE clipboard #define wxUSE_OLE_CLIPBOARD 1 #else // !wxUSE_DATAOBJ @@ -80,10 +80,6 @@ #include #endif // wxUSE_OLE_CLIPBOARD -#ifdef __WIN16__ - #define memcpy hmemcpy -#endif - // =========================================================================== // implementation // =========================================================================== @@ -164,7 +160,7 @@ bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat) case CF_BITMAP: return ::IsClipboardFormatAvailable(CF_DIB) != 0; -#if wxUSE_ENH_METAFILE && !defined(__WIN16__) +#if wxUSE_ENH_METAFILE && !defined(__WIN16__) && !defined(__WXWINCE__) case CF_METAFILEPICT: return ::IsClipboardFormatAvailable(CF_ENHMETAFILE) != 0; #endif // wxUSE_ENH_METAFILE @@ -174,6 +170,7 @@ bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat) } } + bool wxSetClipboardData(wxDataFormat dataFormat, const void *data, int width, int height) @@ -218,22 +215,24 @@ bool wxSetClipboardData(wxDataFormat dataFormat, break; } +#if wxUSE_WXDIB case wxDF_DIB: { -#if wxUSE_IMAGE_LOADING_IN_MSW wxBitmap *bitmap = (wxBitmap *)data; - HBITMAP hBitmap = (HBITMAP)bitmap->GetHBITMAP(); - // NULL palette means to use the system one - HANDLE hDIB = wxBitmapToDIB(hBitmap, (HPALETTE)NULL); - handle = SetClipboardData(CF_DIB, hDIB); -#endif // wxUSE_IMAGE_LOADING_IN_MSW + + HGLOBAL hDIB = wxDIB::ConvertFromBitmap(GetHbitmapOf(*bitmap)); + if ( hDIB ) + { + handle = ::SetClipboardData(CF_DIB, hDIB); + } break; } +#endif // VZ: I'm told that this code works, but it doesn't seem to work for me - // and, anyhow, I'd be highly surprized if it did. So I leave it here + // and, anyhow, I'd be highly surprised if it did. So I leave it here // but IMNSHO it is completely broken. -#if wxUSE_METAFILE && !defined(wxMETAFILE_IS_ENH) +#if wxUSE_METAFILE && !defined(wxMETAFILE_IS_ENH) && !defined(__WXWINCE__) case wxDF_METAFILE: { wxMetafile *wxMF = (wxMetafile *)data; @@ -252,7 +251,7 @@ bool wxSetClipboardData(wxDataFormat dataFormat, } #endif // wxUSE_METAFILE -#if wxUSE_ENH_METAFILE && !defined(__WIN16__) +#if wxUSE_ENH_METAFILE && !defined(__WIN16__) && !defined(__WXWINCE__) case wxDF_ENHMETAFILE: { wxEnhMetaFile *emf = (wxEnhMetaFile *)data; @@ -390,6 +389,7 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) switch ( dataFormat ) { +#ifndef __WXWINCE__ case wxDF_BITMAP: { BITMAP bm; @@ -437,7 +437,7 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) retval = wxBM; break; } - +#endif case wxDF_METAFILE: case CF_SYLK: case CF_DIF: @@ -465,11 +465,11 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) if (!s) break; - LPSTR lpGlobalMemory = (LPSTR)::GlobalLock(hGlobalMemory); + LPSTR lpGlobalMemory = (LPSTR) GlobalLock(hGlobalMemory); memcpy(s, lpGlobalMemory, hsize); - ::GlobalUnlock(hGlobalMemory); + GlobalUnlock(hGlobalMemory); retval = s; break; @@ -489,11 +489,11 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) if ( !buf ) break; - LPSTR lpGlobalMemory = (LPSTR)::GlobalLock(hGlobalMemory); + LPSTR lpGlobalMemory = (LPSTR) GlobalLock(hGlobalMemory); memcpy(buf, lpGlobalMemory, size); - ::GlobalUnlock(hGlobalMemory); + GlobalUnlock(hGlobalMemory); retval = buf; break; @@ -534,6 +534,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject) wxClipboard::wxClipboard() { m_clearOnExit = FALSE; + m_isOpened = FALSE; } wxClipboard::~wxClipboard() @@ -577,6 +578,7 @@ bool wxClipboard::Flush() bool wxClipboard::Open() { // OLE opens clipboard for us + m_isOpened = TRUE; #if wxUSE_OLE_CLIPBOARD return TRUE; #else @@ -587,7 +589,7 @@ bool wxClipboard::Open() bool wxClipboard::IsOpened() const { #if wxUSE_OLE_CLIPBOARD - return TRUE; + return m_isOpened; #else return wxIsClipboardOpened(); #endif @@ -680,7 +682,7 @@ bool wxClipboard::AddData( wxDataObject *data ) // This didn't compile, of course // return wxSetClipboardData(data); // TODO - wxLogError("Not implemented."); + wxLogError(wxT("Not implemented.")); return FALSE; } } @@ -691,6 +693,7 @@ bool wxClipboard::AddData( wxDataObject *data ) void wxClipboard::Close() { + m_isOpened = FALSE; // OLE closes clipboard for us #if !wxUSE_OLE_CLIPBOARD wxCloseClipboard(); @@ -806,7 +809,7 @@ bool wxClipboard::GetData( wxDataObject& data ) case CF_BITMAP: formatEtc.tymed = TYMED_GDI; break; - +#ifndef __WXWINCE__ case CF_METAFILEPICT: formatEtc.tymed = TYMED_MFPICT; break; @@ -814,7 +817,7 @@ bool wxClipboard::GetData( wxDataObject& data ) case CF_ENHMETAFILE: formatEtc.tymed = TYMED_ENHMF; break; - +#endif default: formatEtc.tymed = TYMED_HGLOBAL; } @@ -871,7 +874,7 @@ bool wxClipboard::GetData( wxDataObject& data ) if ( !s ) return FALSE; - textDataObject.SetText(s); + textDataObject.SetText(wxString::FromAscii(s)); delete [] s; return TRUE;