23 #include "precompiled.h"
33 const size_t numChars = wcslen(text);
34 hMem = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT, (numChars + 1) *
sizeof(
wchar_t));
38 wchar_t* lockedText = (
wchar_t*)GlobalLock(hMem);
41 wcscpy_s(lockedText, numChars+1, text);
44 HANDLE hData = SetClipboardData(CF_UNICODETEXT, hMem);
58 if(!IsClipboardFormatAvailable(CF_UNICODETEXT))
61 HGLOBAL hMem = GetClipboardData(CF_UNICODETEXT);
65 const wchar_t* lockedText = (
const wchar_t*)GlobalLock(hMem);
69 const size_t size = GlobalSize(hMem);
70 text = (
wchar_t*)malloc(size);
73 wcscpy_s(text, size/
sizeof(
wchar_t), lockedText);
75 (void)GlobalUnlock(hMem);
99 ENSURE(GlobalFree(hMem) == 0);
Status sys_clipboard_set(const wchar_t *text)
Status sys_clipboard_free(wchar_t *copy)
const Status CANNOT_HANDLE
static const HWND hWndNewOwner
static Status SetClipboardText(const wchar_t *text, HGLOBAL &hMem)
int wcscpy_s(wchar_t *dst, size_t max_dst_chars, const wchar_t *src)
#define ENSURE(expr)
ensure the expression <expr> evaluates to non-zero.
i64 Status
Error handling system.
wchar_t * sys_clipboard_get()
#define WARN_IF_FALSE(expression)
static Status GetClipboardText(wchar_t *&text)
#define WARN_RETURN(status)