30#define WM_CLIPBOARDUPDATE 0x031D
66 HWND hwnd =
CreateWindowA(
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL );
122 ok( !
ret,
"process %u: SetClipboardData succeeded\n",
arg );
134 ok(
ret,
"OpenClipboard failed\n" );
136 ok(
ret,
"EmptyClipboard failed\n" );
175 ok(
CreateProcessA(
NULL,
cmd,
NULL,
NULL,
FALSE, 0,
NULL,
NULL, &
startup, &
info ),
176 "CreateProcess %s failed\n",
cmd );
186 static int wm_renderallformats;
194 if (!wm_renderallformats)
211 ok( wm_renderallformats,
"didn't receive WM_RENDERALLFORMATS before WM_DESTROY\n" );
215 ok( msg_flags == ISMEX_NOSEND,
"WM_DRAWCLIPBOARD wrong flags %x\n", msg_flags );
219 ok( msg_flags == ISMEX_NOSEND,
"WM_RENDERALLFORMATS wrong flags %x\n", msg_flags );
220 wm_renderallformats++;
233 "could not perform clipboard test: clipboard already owned\n");
236 0, 0, 10, 10, 0, 0, 0,
NULL);
241 0, 0, 10, 10, 0, 0, 0,
NULL);
246 ok(!
CloseClipboard(),
"CloseClipboard should fail if clipboard wasn't open\n");
264 ok(!
CloseClipboard(),
"CloseClipboard should fail if clipboard wasn't open\n");
270 "OpenClipboard should fail without setting last error value, or with ERROR_ACCESS_DENIED, got error %d\n",
GetLastError());
286 "OpenClipboard should fail without setting last error value, or with ERROR_ACCESS_DENIED, got error %d\n",
GetLastError());
330 ok( !
ret,
"CloseClipboard succeeded\n" );
359 "SetClipboardData succeeded\n" );
386 ok(format_id2 ==
format_id,
"invalid clipboard format id %04x\n", format_id2);
389 ok(
len ==
lstrlenA(
"my_cool_clipboard_format"),
"wrong format name length %d\n",
len);
390 ok(!
lstrcmpA(
buf,
"my_cool_clipboard_format"),
"wrong format name \"%s\"\n",
buf);
393 ok(
len == 0,
"wrong format name length %d\n",
len);
398 ok(
len == 0,
"GetAtomNameA should fail\n");
406 ok(
len == 0,
"GlobalGetAtomNameA should fail\n");
411 atom_id =
FindAtomA(
"my_cool_clipboard_format");
412 ok(atom_id == 0,
"FindAtomA should fail\n");
420 ok(atom_id == 0,
"GlobalFindAtomA should fail\n");
429 if (format_id < 0xc000 || format_id > 0xffff)
430 ok(!
len,
"GetClipboardFormatNameA should fail, but it returned %d (%s)\n",
len,
buf);
441 ok( !
handle,
"SetClipboardData succeeded\n" );
477 "Last error should be set to ERROR_CLIPBOARD_NOT_OPEN, not %d\n",
GetLastError());
481 ok(!
EmptyClipboard(),
"EmptyClipboard should fail if clipboard wasn't open\n");
493 memcpy(
p,
"test\0\0\0\0\0", 10);
500 static const WCHAR testW[] = {
't',
'e',
's',
't',0,0,0,0,0,0};
548 sizeof(BITMAPV5HEADER) + 256 *
sizeof(
RGBQUAD) + 16 * 16 * 4 );
550 hdr->biSize = v5 ?
sizeof(BITMAPV5HEADER) :
sizeof(*
hdr);
554 hdr->biBitCount = 32;
558 BITMAPV5HEADER *hdr5 = (BITMAPV5HEADER *)
hdr;
559 hdr5->bV5RedMask = 0x0000ff;
560 hdr5->bV5GreenMask = 0x00ff00;
561 hdr5->bV5BlueMask = 0xff0000;
562 hdr5->bV5AlphaMask = 0xff000000;
570 static UINT rendered;
576 if (wp < 32) rendered |= (1 << wp);
588 static const struct test
611 hwnd =
CreateWindowA(
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL );
622 ok(
h == htext,
"got %p\n",
h);
674 ok(
cf == 0,
"cf %08x\n",
cf);
705 ok(
cf == 0,
"cf %08x\n",
cf );
709 ok(
cf == 0,
"cf %08x\n",
cf );
778 ok(seq ==
old_seq,
"sequence changed (test %d %d)\n",
i,
cf);
803 ok(
cf == 0,
"%u: cf %04x\n",
i,
cf);
812 ok( !rendered,
"%u: formats %08x have been rendered\n",
i, rendered );
816 ok( !rendered,
"%u: formats %08x have been rendered\n",
i, rendered );
824 ok( !rendered,
"%u: formats %08x have been rendered\n",
i, rendered );
834 ok( !rendered,
"%u: formats %08x have been rendered\n",
i, rendered );
846 ok( !rendered,
"%u.%u: formats %08x have been rendered\n",
i,
j, rendered );
852 ok( !rendered,
"%u.%u: formats %08x have been rendered\n",
i,
j, rendered );
858 "%u.%u: formats %08x have been rendered\n",
i,
j, rendered );
863 "%u.%u: formats %08x have been rendered\n",
i,
j, rendered );
869 ok(
cf == 0,
"%u: cf %04x\n",
i,
cf);
874 ok( !rendered,
"%u: formats %08x have been rendered\n",
i, rendered );
912 "WM_DRAWCLIPBOARD wrong flags %x\n", msg_flags );
919 "WM_CHANGECBCHAIN wrong flags %x\n", msg_flags );
927 "WM_DESTROYCLIPBOARD wrong flags %x\n", msg_flags );
945 ok( seq ==
old_seq,
"sequence changed\n" );
953 ok( seq ==
old_seq,
"sequence changed\n" );
957 case WM_CLIPBOARDUPDATE:
958 ok( msg_flags == ISMEX_NOSEND,
"WM_CLIPBOARDUPDATE wrong flags %x\n", msg_flags );
1020 if (update && !
broken(!pAddClipboardFormatListener))
1024 ok_(__FILE__,
line)(
count == draw,
"WM_DRAWCLIPBOARD %sreceived\n", draw ?
"not " :
"");
1027 "WM_CLIPBOARDUPDATE %sreceived\n", update ?
"not " :
"");
1033#define check_messages(a,b,c,d,e,f) check_messages_(__LINE__,a,b,c,d,e,f)
1056 ok( !
ret,
"SetClipboardViewer succeeded\n" );
1060 ok( !
r,
"ChangeClipboardChain succeeded\n" );
1064 ok( !
r,
"ChangeClipboardChain succeeded\n" );
1067 if (pAddClipboardFormatListener)
1069 r = pAddClipboardFormatListener(
win);
1072 r = pAddClipboardFormatListener(
win );
1073 ok( !
r,
"AddClipboardFormatListener succeeded\n" );
1076 r = pAddClipboardFormatListener( (
HWND)0xdead );
1077 ok( !
r,
"AddClipboardFormatListener succeeded\n" );
1082 ok(
r,
"RemoveClipboardFormatListener failed err %d\n",
GetLastError());
1089 ok( !
r,
"OpenClipboard succeeded\n" );
1107 ok( !
count,
"wrong format count %u on WM_DESTROYCLIPBOARD\n",
count );
1144 ok( !
handle,
"got data for CF_UNICODETEXT\n" );
1150 ok(
handle !=
NULL,
"didn't get data for CF_OEMTEXT\n" );
1261 if (pRemoveClipboardFormatListener)
1263 r = pRemoveClipboardFormatListener(
win);
1264 ok(
r,
"RemoveClipboardFormatListener failed err %d\n",
GetLastError());
1266 r = pRemoveClipboardFormatListener(
win);
1267 ok( !
r,
"RemoveClipboardFormatListener succeeded\n" );
1270 r = pRemoveClipboardFormatListener( (
HWND)0xdead );
1271 ok( !
r,
"RemoveClipboardFormatListener succeeded\n" );
1288 memset(&cls, 0,
sizeof(cls));
1294 win =
CreateWindowA(
"clipboard_test",
NULL, 0, 0, 0, 0, 0,
NULL, 0,
NULL, 0);
1314 win =
CreateWindowA(
"clipboard_test",
NULL, 0, 0, 0, 0, 0,
NULL, 0,
NULL, 0 );
1350 HGLOBAL h, htext, htext2, htext3, htext4, htext5;
1351 HGLOBAL hfixed, hfixed2, hmoveable, empty_fixed, empty_moveable;
1372 ok(
is_fixed( hfixed ),
"expected fixed mem %p\n", hfixed );
1376 ok(
is_moveable( hmoveable ),
"expected moveable mem %p\n", hmoveable );
1380 ok(
is_fixed( empty_fixed ),
"expected fixed mem %p\n", empty_fixed );
1384 ok(
is_freed( empty_moveable ),
"expected free mem %p\n", empty_moveable );
1392 ok(
h == htext,
"got %p\n",
h );
1395 ok(
h == htext2,
"got %p\n",
h );
1399 ok(
h == bitmap_temp,
"got %p\n",
h );
1404 ok( !
GetObjectType( bitmap_temp ),
"expected free object %p\n", bitmap_temp );
1412 ok(
h == htext3,
"got %p\n",
h );
1415 ok(
h == htext5,
"got %p\n",
h );
1418 ok( !
h,
"got %p\n",
h );
1425 ok( !
h,
"got %p\n",
h );
1430 ok(
h == empty_fixed,
"got %p\n",
h );
1433 ok(
h == hfixed2,
"got %p\n",
h );
1436 ok(
h == hmoveable,
"got %p\n",
h );
1441 ok(
h ==
ptr || !
h,
"got %p\n",
h );
1449 ok(
data == htext,
"wrong data %p\n",
data );
1457 ok(
data == htext3,
"wrong data %p\n",
data );
1461 ok(
data == htext5,
"wrong data %p\n",
data );
1465 ok(
data == empty_fixed,
"wrong data %p\n",
data );
1469 ok(
data == hfixed2,
"wrong data %p\n",
data );
1473 ok(
data == hmoveable,
"wrong data %p\n",
data );
1480 ok(
h == htext4,
"got %p\n",
h );
1482 ok(
is_freed( htext5 ),
"expected freed mem %p\n", htext5 );
1485 ok(
h == hfixed,
"got %p\n",
h );
1488 ok(
is_freed( hfixed2 ),
"expected freed mem %p\n", hfixed2 );
1494 ok(
is_moveable( htext ),
"expected moveable mem %p\n", htext );
1495 ok(
is_moveable( htext2 ),
"expected moveable mem %p\n", htext2 );
1496 ok(
is_moveable( htext3 ),
"expected moveable mem %p\n", htext3 );
1497 ok(
is_moveable( htext4 ),
"expected moveable mem %p\n", htext4 );
1501 ok(
is_fixed( hfixed ),
"expected fixed mem %p\n", hfixed );
1502 ok(
is_moveable( hmoveable ),
"expected moveable mem %p\n", hmoveable );
1503 ok(
is_fixed( empty_fixed ),
"expected fixed mem %p\n", empty_fixed );
1511 ok(
is_freed( htext ),
"expected freed mem %p\n", htext );
1512 ok(
is_freed( htext2 ),
"expected freed mem %p\n", htext2 );
1513 ok(
is_freed( htext3 ),
"expected freed mem %p\n", htext3 );
1514 ok(
is_freed( htext4 ),
"expected freed mem %p\n", htext4 );
1515 ok(
is_freed( hmoveable ),
"expected freed mem %p\n", hmoveable );
1547 ok(
is_moveable( htext ),
"expected moveable mem %p\n", htext );
1548 ok(
is_moveable( htext2 ),
"expected moveable mem %p\n", htext2 );
1549 ok(
is_moveable( htext3 ),
"expected moveable mem %p\n", htext3 );
1550 ok(
is_moveable( htext4 ),
"expected moveable mem %p\n", htext4 );
1551 ok(
is_moveable( hmoveable ),
"expected moveable mem %p\n", hmoveable );
1554 ok(
data == htext,
"wrong data %p\n",
data );
1560 ok(
data == htext3,
"wrong data %p\n",
data );
1563 ok(
data == htext4,
"wrong data %p\n",
data );
1566 ok(
data == empty_fixed,
"wrong data %p\n",
data );
1569 ok(
data == hfixed,
"wrong data %p\n",
data );
1572 ok(
data == hmoveable,
"wrong data %p\n",
data );
1598 ok(
is_fixed( hfixed ),
"expected fixed mem %p\n", hfixed );
1599 ok(
is_fixed( empty_fixed ),
"expected fixed mem %p\n", empty_fixed );
1610 ok(
is_fixed( empty_fixed ),
"expected fixed mem %p\n", empty_fixed );
1611 ok(
is_fixed( hfixed ),
"expected fixed mem %p\n", hfixed );
1622 trace(
"running from different thread\n" );
1650 trace(
"gdiobj %p\n",
h );
1656 trace(
"private %p\n",
h );
1660 trace(
"bitmap %p\n",
h );
1664 trace(
"bitmap2 %p\n",
h );
1668 trace(
"palette %p\n",
h );
1705 trace(
"gdiobj %p\n",
h );
1711 trace(
"private %p\n",
h );
1714 ok(
GetObjectW(
h,
sizeof(bm), &bm ) ==
sizeof(bm),
"GetObject %p failed\n",
h );
1715 ok( bm.bmWidth == 13 && bm.bmHeight == 17,
"wrong bitmap %ux%u\n", bm.bmWidth, bm.bmHeight );
1716 trace(
"bitmap %p\n",
h );
1719 trace(
"bitmap2 %p\n",
h );
1724 "wrong color %02x,%02x,%02x\n",
entry.peRed,
entry.peGreen,
entry.peBlue );
1725 trace(
"palette %p\n",
h );
1733 trace(
"metafile %p\n",
h );
1741 trace(
"metafile2 %p\n",
h );
1745 "GetEnhMetaFileBits failed on %p\n",
h );
1748 trace(
"enhmetafile %p\n",
h );
1752 "GetEnhMetaFileBits failed on %p\n",
h );
1755 trace(
"enhmetafile2 %p\n",
h );
1787 trace(
"dibsection %p\n",
h );
1797 HWND hwnd =
CreateWindowA(
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL );
1801 ok(
hwnd != 0,
"window creation failed\n" );
1828 trace(
"metafile %p\n",
h );
1831 trace(
"metafile2 %p\n",
h );
1834 trace(
"enhmetafile %p\n",
h );
1837 trace(
"enhmetafile2 %p\n",
h );
1879 "expected free mem %p\n",
text );
1884 memset( &bmi, 0,
sizeof(bmi) );
1898 trace(
"dibsection %p\n",
h );
1921 if (!pGetUpdatedClipboardFormats)
1923 win_skip(
"GetUpdatedClipboardFormats not supported\n" );
1928 r = pGetUpdatedClipboardFormats(
NULL, 0, &
count );
1933 r = pGetUpdatedClipboardFormats(
NULL, 256, &
count );
1939 ok( !
r,
"succeeded\n" );
1980 ok( !
r,
"succeeded\n" );
1987 ok( !
r,
"succeeded\n" );
2014 r = pGetUpdatedClipboardFormats(
NULL, 256, &
count );
2020 r = pGetUpdatedClipboardFormats(
NULL, 256, &
count );
2035 {
"foo\0bar", {0}, 7 },
2036 {
"foo\0bar", {0}, 8 },
2037 {
"", {
'f',
'o',
'o'}, 3 *
sizeof(
WCHAR) },
2038 {
"", {
'f',
'o',
'o',0}, 4 *
sizeof(
WCHAR) },
2039 {
"", {
'f',
'o',
'o',0,
'b',
'a',
'r'}, 7 *
sizeof(
WCHAR) },
2040 {
"", {
'f',
'o',
'o',0,
'b',
'a',
'r',0}, 8 *
sizeof(
WCHAR) },
2041 {
"", {
'f',
'o',
'o'}, 1 },
2042 {
"", {
'f',
'o',
'o'}, 2 },
2043 {
"", {
'f',
'o',
'o'}, 5 },
2044 {
"", {
'f',
'o',
'o',0}, 7 },
2045 {
"", {
'f',
'o',
'o',0}, 9 },
2106 ok(
data != 0,
"%u: could not get data\n",
i );
2113 ok(
data != 0,
"%u: could not get data\n",
i );
2116 ok(
len == len2 *
sizeof(
WCHAR),
"%u: wrong size %u / %u\n",
i,
len, len2 );
2122 ok(
data != 0,
"%u: could not get data\n",
i );
2132 ok(
data != 0,
"%u: could not get data\n",
i );
2136 bufferA[len2 - 1] = 0;
2137 ok(
len == len2,
"%u: wrong size %u / %u\n",
i,
len, len2 );
2142 ok( !
data,
"%u: got data for empty string\n",
i );
2157 pAddClipboardFormatListener = (
void *)
GetProcAddress(
mod,
"AddClipboardFormatListener" );
2158 pRemoveClipboardFormatListener = (
void *)
GetProcAddress(
mod,
"RemoveClipboardFormatListener" );
2159 pGetUpdatedClipboardFormats = (
void *)
GetProcAddress(
mod,
"GetUpdatedClipboardFormats" );
std::map< E_MODULE, HMODULE > mod
static POBJECT_TYPE GetObjectType(IN PCWSTR TypeName)
void destroy(_Tp *__pointer)
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
char * strcpy(char *DstString, const char *SrcString)
static void startup(void)
#define CF_DSPENHMETAFILE
#define CF_DSPMETAFILEPICT
#define ERROR_INSUFFICIENT_BUFFER
static const struct pixel_format_desc formats[]
#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)
ATOM WINAPI GlobalFindAtomA(LPCSTR lpString)
UINT WINAPI GlobalGetAtomNameA(ATOM nAtom, LPSTR lpBuffer, int nSize)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
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)
LCID WINAPI GetUserDefaultLCID(void)
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
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
static const WCHAR testW[]
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static struct test_info tests[]
#define sprintf(buf, format,...)
static UINT wm_drawclipboard
static HENHMETAFILE create_emf(void)
static LRESULT CALLBACK clipboard_wnd_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
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)
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 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 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)
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)
EXTINLINE DWORD WINAPI GetClipboardSequenceNumber(VOID)
int winetest_get_mainargs(char ***pargv)
void winetest_wait_child_process(HANDLE process)
BITMAPINFOHEADER bmiHeader
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, 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)
DWORD(WINAPI * LPTHREAD_START_ROUTINE)(LPVOID)
#define ERROR_CLIPBOARD_NOT_OPEN
#define ERROR_INVALID_WINDOW_HANDLE
static void test_handles(void)
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)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
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
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)
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)