37#define open_clipboard(hwnd) open_clipboard_(__LINE__, hwnd)
67#define has_no_open_wnd() has_no_open_wnd_(__LINE__)
75 if (!clipwnd)
return TRUE;
117 HWND hwnd =
CreateWindowA(
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL );
174 ok( !
ret,
"SetClipboardData succeeded\n" );
187 ok(
ret,
"OpenClipboard failed\n" );
189 ok(
ret,
"EmptyClipboard failed\n" );
228 ok(
CreateProcessA(
NULL,
cmd,
NULL,
NULL,
FALSE, 0,
NULL,
NULL, &
startup, &
info ),
229 "CreateProcess %s failed\n",
cmd );
239 static int wm_renderallformats;
247 if (!wm_renderallformats)
264 ok( wm_renderallformats,
"didn't receive WM_RENDERALLFORMATS before WM_DESTROY\n" );
268 ok( msg_flags == ISMEX_NOSEND,
"WM_DRAWCLIPBOARD wrong flags %lx\n", msg_flags );
272 ok( msg_flags == ISMEX_NOSEND,
"WM_RENDERALLFORMATS wrong flags %lx\n", msg_flags );
273 wm_renderallformats++;
286 "could not perform clipboard test: clipboard already owned\n");
289 0, 0, 10, 10, 0, 0, 0,
NULL);
294 0, 0, 10, 10, 0, 0, 0,
NULL);
299 ok(!
CloseClipboard(),
"CloseClipboard should fail if clipboard wasn't open\n");
317 ok(!
CloseClipboard(),
"CloseClipboard should fail if clipboard wasn't open\n");
323 "OpenClipboard should fail without setting last error value, or with ERROR_ACCESS_DENIED, got error %ld\n",
GetLastError());
339 "OpenClipboard should fail without setting last error value, or with ERROR_ACCESS_DENIED, got error %ld\n",
GetLastError());
383 ok( !
ret,
"CloseClipboard succeeded\n" );
412 "SetClipboardData succeeded\n" );
439 ok(format_id2 ==
format_id,
"invalid clipboard format id %04x\n", format_id2);
442 ok(
len ==
lstrlenA(
"my_cool_clipboard_format"),
"wrong format name length %d\n",
len);
443 ok(!
lstrcmpA(
buf,
"my_cool_clipboard_format"),
"wrong format name \"%s\"\n",
buf);
446 ok(
len == 0,
"wrong format name length %d\n",
len);
452 "format_id should not be a valid local atom\n");
460 "format_id should not be a valid global atom\n");
465 atom_id =
FindAtomA(
"my_cool_clipboard_format");
466 ok(atom_id == 0,
"FindAtomA should fail, but it returned %x (format_id=%x)\n", atom_id,
format_id);
474 ok(atom_id == 0,
"GlobalFindAtomA should fail, but it returned %x (format_id=%x)\n", atom_id,
format_id);
483 if (format_id < 0xc000 || format_id > 0xffff)
484 ok(!
len,
"GetClipboardFormatNameA should fail, but it returned %d (%s)\n",
len,
buf);
495 ok( !
handle,
"SetClipboardData succeeded\n" );
531 "Last error should be set to ERROR_CLIPBOARD_NOT_OPEN, not %ld\n",
GetLastError());
535 ok(!
EmptyClipboard(),
"EmptyClipboard should fail if clipboard wasn't open\n");
547 memcpy(
p,
"test\0\0\0\0\0", 10);
554 static const WCHAR testW[] = {
't',
'e',
's',
't',0,0,0,0,0,0};
602 sizeof(BITMAPV5HEADER) + 256 *
sizeof(
RGBQUAD) + 16 * 16 * 4 );
604 hdr->biSize = v5 ?
sizeof(BITMAPV5HEADER) :
sizeof(*
hdr);
608 hdr->biBitCount = 32;
612 BITMAPV5HEADER *hdr5 = (BITMAPV5HEADER *)
hdr;
613 hdr5->bV5RedMask = 0x0000ff;
614 hdr5->bV5GreenMask = 0x00ff00;
615 hdr5->bV5BlueMask = 0xff0000;
616 hdr5->bV5AlphaMask = 0xff000000;
624 static UINT rendered;
630 if (wp < 32) rendered |= (1 << wp);
642 static const struct test
665 hwnd =
CreateWindowA(
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL );
676 ok(
h == htext,
"got %p\n",
h);
728 ok(
cf == 0,
"cf %08x\n",
cf);
759 ok(
cf == 0,
"cf %08x\n",
cf );
763 ok(
cf == 0,
"cf %08x\n",
cf );
838 ok(seq ==
old_seq,
"sequence changed (test %d)\n",
cf);
848 "CF_LOCALE %04x/%04lx\n", *
ptr,
layout );
865 ok(
cf == 0,
"cf %04x\n",
cf);
874 ok( !rendered,
"formats %08x have been rendered\n", rendered );
878 ok( !rendered,
"formats %08x have been rendered\n", rendered );
886 ok( !rendered,
"formats %08x have been rendered\n", rendered );
896 ok( !rendered,
"formats %08x have been rendered\n", rendered );
913 ok( !rendered,
"formats %08x have been rendered\n", rendered );
919 ok( !rendered,
"formats %08x have been rendered\n", rendered );
925 "formats %08x have been rendered\n", rendered );
930 "formats %08x have been rendered\n", rendered );
937 ok(
cf == 0,
"cf %04x\n",
cf);
942 ok( !rendered,
"formats %08x have been rendered\n", rendered );
957 hwnd =
CreateWindowA(
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL );
992 ok(!
data,
"GetClipboardData() should have returned NULL\n");
1024 "WM_DRAWCLIPBOARD wrong flags %lx\n", msg_flags );
1031 "WM_CHANGECBCHAIN wrong flags %lx\n", msg_flags );
1039 "WM_DESTROYCLIPBOARD wrong flags %lx\n", msg_flags );
1057 ok( seq ==
old_seq,
"sequence changed\n" );
1065 ok( seq ==
old_seq,
"sequence changed\n" );
1069 case WM_CLIPBOARDUPDATE:
1070 ok( msg_flags == ISMEX_NOSEND,
"WM_CLIPBOARDUPDATE wrong flags %lx\n", msg_flags );
1132 if (update && !
broken(!pAddClipboardFormatListener))
1136 ok_(__FILE__,
line)(
count == draw,
"WM_DRAWCLIPBOARD %sreceived\n", draw ?
"not " :
"");
1139 "WM_CLIPBOARDUPDATE %sreceived\n", update ?
"not " :
"");
1145#define check_messages(a,b,c,d,e,f) check_messages_(__LINE__,a,b,c,d,e,f)
1168 ok( !
ret,
"SetClipboardViewer succeeded\n" );
1172 ok( !
r,
"ChangeClipboardChain succeeded\n" );
1176 ok( !
r,
"ChangeClipboardChain succeeded\n" );
1179 if (pAddClipboardFormatListener)
1181 r = pAddClipboardFormatListener(
win);
1182 ok(
r,
"AddClipboardFormatListener failed err %ld\n",
GetLastError());
1184 r = pAddClipboardFormatListener(
win );
1185 ok( !
r,
"AddClipboardFormatListener succeeded\n" );
1188 r = pAddClipboardFormatListener( (
HWND)0xdead );
1189 ok( !
r,
"AddClipboardFormatListener succeeded\n" );
1192 ok(
r,
"AddClipboardFormatListener failed err %ld\n",
GetLastError());
1194 ok(
r,
"RemoveClipboardFormatListener failed err %ld\n",
GetLastError());
1201 ok( !
r,
"OpenClipboard succeeded\n" );
1219 ok( !
count,
"wrong format count %u on WM_DESTROYCLIPBOARD\n",
count );
1256 ok( !
handle,
"got data for CF_UNICODETEXT\n" );
1262 ok(
handle !=
NULL,
"didn't get data for CF_OEMTEXT\n" );
1373 if (pRemoveClipboardFormatListener)
1375 r = pRemoveClipboardFormatListener(
win);
1376 ok(
r,
"RemoveClipboardFormatListener failed err %ld\n",
GetLastError());
1378 r = pRemoveClipboardFormatListener(
win);
1379 ok( !
r,
"RemoveClipboardFormatListener succeeded\n" );
1382 r = pRemoveClipboardFormatListener( (
HWND)0xdead );
1383 ok( !
r,
"RemoveClipboardFormatListener succeeded\n" );
1400 memset(&cls, 0,
sizeof(cls));
1406 win =
CreateWindowA(
"clipboard_test",
NULL, 0, 0, 0, 0, 0,
NULL, 0,
NULL, 0);
1426 win =
CreateWindowA(
"clipboard_test",
NULL, 0, 0, 0, 0, 0,
NULL, 0,
NULL, 0 );
1462 HGLOBAL h, htext, htext2, htext3, htext4, htext5;
1463 HGLOBAL hfixed, hfixed2, hmoveable, empty_fixed, empty_moveable;
1484 ok(
is_fixed( hfixed ),
"expected fixed mem %p\n", hfixed );
1488 ok(
is_moveable( hmoveable ),
"expected moveable mem %p\n", hmoveable );
1492 ok(
is_fixed( empty_fixed ),
"expected fixed mem %p\n", empty_fixed );
1496 ok(
is_freed( empty_moveable ),
"expected free mem %p\n", empty_moveable );
1504 ok(
h == htext,
"got %p\n",
h );
1507 ok(
h == htext2,
"got %p\n",
h );
1511 ok(
h == bitmap_temp,
"got %p\n",
h );
1523 ok(
h == htext3,
"got %p\n",
h );
1526 ok(
h == htext5,
"got %p\n",
h );
1529 ok( !
h,
"got %p\n",
h );
1536 ok( !
h,
"got %p\n",
h );
1541 ok(
h == empty_fixed,
"got %p\n",
h );
1544 ok(
h == hfixed2,
"got %p\n",
h );
1547 ok(
h == hmoveable,
"got %p\n",
h );
1552 ok(
h ==
ptr || !
h,
"got %p\n",
h );
1560 ok(
data == htext,
"wrong data %p\n",
data );
1568 ok(
data == htext3,
"wrong data %p\n",
data );
1572 ok(
data == htext5,
"wrong data %p\n",
data );
1576 ok(
data == empty_fixed,
"wrong data %p\n",
data );
1580 ok(
data == hfixed2,
"wrong data %p\n",
data );
1584 ok(
data == hmoveable,
"wrong data %p\n",
data );
1598 ok(
h == htext4,
"got %p\n",
h );
1600 ok(
is_freed( htext5 ),
"expected freed mem %p\n", htext5 );
1603 ok(
h == hfixed,
"got %p\n",
h );
1606 ok(
is_freed( hfixed2 ),
"expected freed mem %p\n", hfixed2 );
1612 ok(
is_moveable( htext ),
"expected moveable mem %p\n", htext );
1613 ok(
is_moveable( htext2 ),
"expected moveable mem %p\n", htext2 );
1614 ok(
is_moveable( htext3 ),
"expected moveable mem %p\n", htext3 );
1615 ok(
is_moveable( htext4 ),
"expected moveable mem %p\n", htext4 );
1619 ok(
is_fixed( hfixed ),
"expected fixed mem %p\n", hfixed );
1620 ok(
is_moveable( hmoveable ),
"expected moveable mem %p\n", hmoveable );
1621 ok(
is_fixed( empty_fixed ),
"expected fixed mem %p\n", empty_fixed );
1629 ok(
is_freed( htext ),
"expected freed mem %p\n", htext );
1630 ok(
is_freed( htext2 ),
"expected freed mem %p\n", htext2 );
1631 ok(
is_freed( htext3 ),
"expected freed mem %p\n", htext3 );
1632 ok(
is_freed( htext4 ),
"expected freed mem %p\n", htext4 );
1633 ok(
is_freed( hmoveable ),
"expected freed mem %p\n", hmoveable );
1665 ok(
is_moveable( htext ),
"expected moveable mem %p\n", htext );
1666 ok(
is_moveable( htext2 ),
"expected moveable mem %p\n", htext2 );
1667 ok(
is_moveable( htext3 ),
"expected moveable mem %p\n", htext3 );
1668 ok(
is_moveable( htext4 ),
"expected moveable mem %p\n", htext4 );
1669 ok(
is_moveable( hmoveable ),
"expected moveable mem %p\n", hmoveable );
1672 ok(
data == htext,
"wrong data %p\n",
data );
1678 ok(
data == htext3,
"wrong data %p\n",
data );
1681 ok(
data == htext4,
"wrong data %p\n",
data );
1684 ok(
data == empty_fixed,
"wrong data %p\n",
data );
1687 ok(
data == hfixed,
"wrong data %p\n",
data );
1690 ok(
data == hmoveable,
"wrong data %p\n",
data );
1716 ok(
is_fixed( hfixed ),
"expected fixed mem %p\n", hfixed );
1717 ok(
is_fixed( empty_fixed ),
"expected fixed mem %p\n", empty_fixed );
1728 ok(
is_fixed( empty_fixed ),
"expected fixed mem %p\n", empty_fixed );
1729 ok(
is_fixed( hfixed ),
"expected fixed mem %p\n", hfixed );
1737 trace(
"running from different thread\n" );
1765 trace(
"gdiobj %p\n",
h );
1771 trace(
"private %p\n",
h );
1775 trace(
"bitmap %p\n",
h );
1779 trace(
"bitmap2 %p\n",
h );
1783 trace(
"palette %p\n",
h );
1820 trace(
"gdiobj %p\n",
h );
1826 trace(
"private %p\n",
h );
1829 ok(
GetObjectW(
h,
sizeof(bm), &bm ) ==
sizeof(bm),
"GetObject %p failed\n",
h );
1831 trace(
"bitmap %p\n",
h );
1834 trace(
"bitmap2 %p\n",
h );
1839 "wrong color %02x,%02x,%02x\n",
entry.peRed,
entry.peGreen,
entry.peBlue );
1840 trace(
"palette %p\n",
h );
1845 trace(
"metafile %p\n",
h );
1850 trace(
"metafile2 %p\n",
h );
1854 "GetEnhMetaFileBits failed on %p\n",
h );
1857 trace(
"enhmetafile %p\n",
h );
1861 "GetEnhMetaFileBits failed on %p\n",
h );
1864 trace(
"enhmetafile2 %p\n",
h );
1896 trace(
"dibsection %p\n",
h );
1906 HWND hwnd =
CreateWindowA(
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL );
1915 ok(
hwnd != 0,
"window creation failed\n" );
1942 trace(
"metafile %p\n",
h );
1945 trace(
"metafile2 %p\n",
h );
1948 trace(
"enhmetafile %p\n",
h );
1951 trace(
"enhmetafile2 %p\n",
h );
1993 "expected free mem %p\n",
text );
1998 memset( &bmi, 0,
sizeof(bmi) );
2012 trace(
"dibsection %p\n",
h );
2037 memset( &bmi, 0,
sizeof(bmi) );
2048 memset( &bmi, 0,
sizeof(bmi) );
2050 ok( !
GetDIBits(
hdc,
h, 0, 0, 0, &bmi, 0 ),
"GetDIBits returned unexpected value.\n" );
2060 "Got wrong color (%02x, %02x, %02x).\n",
entry.peRed,
entry.peGreen,
entry.peBlue );
2064 ok(
h ==
emf,
"Expected enhmetafile %p, got %p.\n",
palette,
h );
2067 ok(
h ==
emf,
"Expected enhmetafile %p, got %p.\n",
palette,
h );
2072 ok(
h ==
emf,
"Expected enhmetafile %p, got %p.\n",
emf,
h );
2075 ok(
h ==
emf,
"Expected enhmetafile %p, got %p.\n",
emf,
h );
2081 ok( !pGlobalFree(
metafile ),
"GlobalFree failed.\n" );
2089 ok( !pGlobalFree(
metafile ),
"GlobalFree failed.\n" );
2108 if (!pGetUpdatedClipboardFormats)
2110 win_skip(
"GetUpdatedClipboardFormats not supported\n" );
2115 r = pGetUpdatedClipboardFormats(
NULL, 0, &
count );
2120 r = pGetUpdatedClipboardFormats(
NULL, 256, &
count );
2126 ok( !
r,
"succeeded\n" );
2167 ok( !
r,
"succeeded\n" );
2174 ok( !
r,
"succeeded\n" );
2201 r = pGetUpdatedClipboardFormats(
NULL, 256, &
count );
2207 r = pGetUpdatedClipboardFormats(
NULL, 256, &
count );
2220#if defined(__REACTOS__) && defined(_MSC_VER) && _MSVC_VER < 1930
2223 {
"foo\0bar", {0}, 7 },
2224 {
"foo\0bar", {0}, 8 },
2229 {
"foo\0bar", {}, 7 },
2230 {
"foo\0bar", {}, 8 },
2235 {
"", {0x3b1,0x3b2,0x3b3}, 5 },
2236 {
"", {0x3b1,0x3b2,0x3b3}, 6 },
2237 {
"", {0x3b1,0x3b2,0x3b3,0}, 7 },
2238 {
"", {0x3b1,0x3b2,0x3b3,0}, 8 },
2239 {
"", {0x3b1,0x3b2,0x3b3,0,0x3b4}, 9 },
2240 {
"", {
'f',
'o',
'o',0,
'b',
'a',
'r'}, 7 *
sizeof(
WCHAR) },
2241 {
"", {
'f',
'o',
'o',0,
'b',
'a',
'r',0}, 8 *
sizeof(
WCHAR) },
2283 ok( clip ==
data,
"SetClipboardData() returned %p != %p\n", clip,
data );
2290 ok( !clip ||
broken(clip !=
NULL),
"expected SetClipboardData() to fail\n" );
2314 ok(
data != 0,
"could not get data\n" );
2321 ok(
data != 0,
"could not get data\n" );
2324 ok(
len == len2 *
sizeof(
WCHAR),
"wrong size %u / %u\n",
len, len2 );
2354 ok(
data != 0,
"could not get data\n" );
2358 bufferA[len2 - 1] = 0;
2359 ok(
len == len2,
"wrong size %u / %u\n",
len, len2 );
2368 ok( !
data,
"got data for empty string\n" );
2383 pAddClipboardFormatListener = (
void *)
GetProcAddress(
mod,
"AddClipboardFormatListener" );
2384 pRemoveClipboardFormatListener = (
void *)
GetProcAddress(
mod,
"RemoveClipboardFormatListener" );
2385 pGetUpdatedClipboardFormats = (
void *)
GetProcAddress(
mod,
"GetUpdatedClipboardFormats" );
std::map< E_MODULE, HMODULE > mod
static POBJECT_TYPE GetObjectType(IN PCWSTR TypeName)
void destroy(_Tp *__pointer)
static void startup(void)
ATOM WINAPI GlobalFindAtomA(LPCSTR lpString)
#define CF_DSPENHMETAFILE
#define CF_DSPMETAFILEPICT
#define ERROR_INSUFFICIENT_BUFFER
static const struct pixel_format_desc formats[]
static WCHAR available[MAX_STRING_RESOURCE_LEN]
const char * wine_dbgstr_an(const char *str, int n)
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
#define HeapFree(x, y, z)
#define ERROR_INVALID_HANDLE
#define WideCharToMultiByte
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
ATOM WINAPI FindAtomA(LPCSTR lpString)
UINT WINAPI GetAtomNameA(ATOM nAtom, LPSTR lpBuffer, int nSize)
UINT WINAPI GlobalGetAtomNameA(ATOM nAtom, LPSTR lpBuffer, int nSize)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(const char *app_name, char *cmd_line, SECURITY_ATTRIBUTES *process_attr, SECURITY_ATTRIBUTES *thread_attr, BOOL inherit, DWORD flags, void *env, const char *cur_dir, STARTUPINFOA *startup_info, PROCESS_INFORMATION *info)
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl atoi(const char *)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
static ERESOURCE GlobalLock
static const WCHAR testW[]
#define trace_(file, line,...)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
const char * winetest_platform
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl void winetest_pop_context(void)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl winetest_push_context(const char *fmt,...) __WINE_PRINTF_ATTR(1
PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static struct test_info tests[]
static UINT wm_drawclipboard
static HENHMETAFILE create_emf(void)
static LRESULT CALLBACK clipboard_wnd_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static const unsigned char metafile[]
static void test_string_data_process(int i)
static DWORD WINAPI open_and_empty_clipboard_thread(LPVOID arg)
static UINT wm_renderformat
static DWORD WINAPI set_clipboard_data_thread(LPVOID arg)
static BOOL is_fixed(HANDLE handle)
static BOOL is_freed(HANDLE handle)
static UINT wm_destroyclipboard
static DWORD WINAPI test_handles_thread2(void *arg)
static DWORD WINAPI clipboard_render_data_thread(void *param)
static void test_messages(void)
static HGLOBAL create_textW(void)
static BOOL do_render_format
static HANDLE update_event
static void test_ClipboardOwner(void)
#define check_messages(a, b, c, d, e, f)
static DWORD WINAPI test_handles_thread(void *arg)
static void test_data_handles(void)
static DWORD WINAPI open_clipboard_thread(LPVOID arg)
static HBITMAP create_bitmap(void)
static CRITICAL_SECTION clipboard_cs
static LRESULT CALLBACK renderer_winproc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static DWORD WINAPI open_and_empty_clipboard_win_thread(LPVOID arg)
#define has_no_open_wnd()
static LRESULT CALLBACK winproc_wrapper(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static void check_messages_(int line, HWND win, UINT seq_diff, UINT draw, UINT update, UINT destroy, UINT render)
static void test_handles_process(const char *str)
static const LOGPALETTE logpalette
static void test_GetUpdatedClipboardFormats(void)
static void test_handles_process_open(const char *str)
static BOOL open_clipboard_(int line, HWND hwnd)
static HGLOBAL create_textA(void)
static HBITMAP create_dib(BOOL v5)
static void run_process(const char *args)
static void test_string_data(void)
static DWORD WINAPI clipboard_thread(void *param)
static BOOL has_no_open_wnd_(int line)
static void test_RegisterClipboardFormatA(void)
static void get_clipboard_data_process(void)
static void set_clipboard_data_process(int arg)
static void grab_clipboard_process(int arg)
#define open_clipboard(hwnd)
static void test_synthesized(void)
static UINT wm_clipboardupdate
static UINT UINT * out_count
static void test_handles_process_dib(const char *str)
static DWORD WINAPI empty_clipboard_thread(LPVOID arg)
static int thread_from_line
static void run_thread(LPTHREAD_START_ROUTINE func, void *arg, int line)
static HANDLE create_metafile(void)
static BOOL is_moveable(HANDLE handle)
static void test_handles(void)
EXTINLINE DWORD WINAPI GetClipboardSequenceNumber(VOID)
const char int int int static __inline const char * wine_dbgstr_a(const char *s)
int winetest_get_mainargs(char ***pargv)
#define wait_child_process
BITMAPINFOHEADER bmiHeader
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
UINT WINAPI GetPaletteEntries(HPALETTE hpal, UINT iStartIndex, UINT cEntries, LPPALETTEENTRY ppe)
DWORD WINAPI InSendMessageEx(LPVOID lpReserved)
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentThreadId(void)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
DWORD WINAPI GetCurrentProcessId(void)
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define ERROR_CLIPBOARD_NOT_OPEN
#define ERROR_INVALID_WINDOW_HANDLE
UINT WINAPI GetEnhMetaFileBits(_In_ HENHMETAFILE hEMF, _In_ UINT nSize, _Out_writes_bytes_opt_(nSize) LPBYTE lpData)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
BOOL WINAPI DeleteEnhMetaFile(_In_opt_ HENHMETAFILE)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
int WINAPI GetDIBits(_In_ HDC hdc, _In_ HBITMAP hbm, _In_ UINT start, _In_ UINT cLines, _Out_opt_ LPVOID lpvBits, _At_((LPBITMAPINFOHEADER) lpbmi, _Inout_) LPBITMAPINFO lpbmi, _In_ UINT usage)
HDC WINAPI CreateMetaFileA(_In_opt_ LPCSTR)
HPALETTE WINAPI CreatePalette(_In_reads_(_Inexpressible_(2 *sizeof(WORD)+plpal->palNumEntries *sizeof(PALETTEENTRY))) const LOGPALETTE *)
HMETAFILE WINAPI CloseMetaFile(_In_ HDC hdc)
BOOL WINAPI ExtTextOutA(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
HDC WINAPI CreateEnhMetaFileA(_In_opt_ HDC, _In_opt_ LPCSTR, _In_opt_ LPCRECT, _In_opt_ LPCSTR)
HENHMETAFILE WINAPI CloseEnhMetaFile(_In_ HDC hdc)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
#define SetWindowLongPtrA
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI UnregisterClassA(_In_ LPCSTR, HINSTANCE)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_DESTROYCLIPBOARD
int WINAPI GetClipboardFormatNameA(_In_ UINT format, _Out_writes_(cchMaxCount) LPSTR lpszFormatName, _In_ int cchMaxCount)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HANDLE WINAPI SetClipboardData(_In_ UINT, _In_opt_ HANDLE)
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
HWND WINAPI GetOpenClipboardWindow(void)
BOOL WINAPI CloseClipboard(void)
HWND WINAPI GetClipboardOwner(void)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
UINT WINAPI EnumClipboardFormats(_In_ UINT)
HANDLE WINAPI GetClipboardData(_In_ UINT)
HWND WINAPI SetClipboardViewer(_In_ HWND)
HWND WINAPI GetDesktopWindow(void)
DWORD WINAPI MsgWaitForMultipleObjectsEx(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask, _In_ DWORD dwFlags)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI ChangeClipboardChain(_In_ HWND, _In_ HWND)
BOOL WINAPI EmptyClipboard(void)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI CountClipboardFormats(void)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
UINT WINAPI RegisterClipboardFormatA(_In_ LPCSTR)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_RENDERALLFORMATS
BOOL WINAPI IsClipboardFormatAvailable(_In_ UINT)
HWND WINAPI GetClipboardViewer(void)