add last backwards-compatible version

This commit is contained in:
2021-12-14 00:33:46 -07:00
parent 68b10d413b
commit b0dd3f07f3
335 changed files with 4746 additions and 19627 deletions

View File

@@ -0,0 +1,42 @@
#include "stdafx.h"
#ifdef FOOBAR2000_DESKTOP_WINDOWS
#include "clipboard.h"
#ifdef UNICODE
#define CF_TCHAR CF_UNICODETEXT
#else
#define CF_TCHAR CF_TEXT
#endif
namespace ClipboardHelper {
void SetRaw(UINT format,const void * data, t_size size) {
HANDLE buffer = GlobalAlloc(GMEM_DDESHARE,size);
if (buffer == NULL) throw std::bad_alloc();
try {
CGlobalLockScope lock(buffer);
PFC_ASSERT(lock.GetSize() == size);
memcpy(lock.GetPtr(),data,size);
} catch(...) {
GlobalFree(buffer); throw;
}
WIN32_OP(SetClipboardData(format,buffer) != NULL);
}
void SetString(const char * in) {
pfc::stringcvt::string_os_from_utf8 temp(in);
SetRaw(CF_TCHAR,temp.get_ptr(),(temp.length() + 1) * sizeof(TCHAR));
}
bool GetString(pfc::string_base & out) {
pfc::array_t<t_uint8> temp;
if (!GetRaw(CF_TCHAR,temp)) return false;
out = pfc::stringcvt::string_utf8_from_os(reinterpret_cast<const TCHAR*>(temp.get_ptr()),temp.get_size() / sizeof(TCHAR));
return true;
}
bool IsTextAvailable() {
return IsClipboardFormatAvailable(CF_TCHAR) == TRUE;
}
}
#endif // FOOBAR2000_DESKTOP_WINDOWS