void gui::clipboard::set_text(const char *text) { lowlevel_set_clipboard_text(text); #ifdef WIN32 if (IsClipboardFormatAvailable(CF_TEXT)) { if (OpenClipboard(win_get_window())) { EmptyClipboard(); if (!clipboard_text.empty()) { int len = clipboard_text.size(); HGLOBAL hglobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(char)*(len+1)); LPSTR lpstr = static_cast<LPSTR>(GlobalLock(hglobal)); std::copy(clipboard_text.begin(), clipboard_text.end(), lpstr); GlobalUnlock(hglobal); SetClipboardData(CF_TEXT, hglobal); } CloseClipboard(); } } #endif }
void ui::clipboard::set_text(const char *text) { lowlevel_set_clipboard_text(text); #ifdef WIN32 if (IsClipboardFormatAvailable(CF_UNICODETEXT)) { if (OpenClipboard(win_get_window())) { EmptyClipboard(); if (!clipboard_text.empty()) { std::wstring wstr = base::from_utf8(clipboard_text); int len = wstr.size(); HGLOBAL hglobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(WCHAR)*(len+1)); LPWSTR lpstr = static_cast<LPWSTR>(GlobalLock(hglobal)); std::copy(wstr.begin(), wstr.end(), lpstr); GlobalUnlock(hglobal); SetClipboardData(CF_UNICODETEXT, hglobal); } CloseClipboard(); } } #endif }
const char* gui::clipboard::get_text() { #ifdef WIN32 if (IsClipboardFormatAvailable(CF_TEXT)) { if (OpenClipboard(win_get_window())) { HGLOBAL hglobal = GetClipboardData(CF_TEXT); if (hglobal != NULL) { LPSTR lpstr = static_cast<LPSTR>(GlobalLock(hglobal)); if (lpstr != NULL) { lowlevel_set_clipboard_text(lpstr); GlobalUnlock(hglobal); } } CloseClipboard(); } } #endif return clipboard_text.c_str(); }