37#define PARENT_SEQ_INDEX 0
38#define NUM_MSG_SEQUENCES 1
97#define DEFINE_EXPECT(func) \
98 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
100#define CHECK_EXPECT2(func) \
102 ok(expect_ ##func, "unexpected call " #func "\n"); \
103 called_ ## func = TRUE; \
106#define CHECK_CALLED(func) \
108 ok(called_ ## func, "expected " #func "\n"); \
109 expect_ ## func = called_ ## func = FALSE; \
112#define SET_EXPECT(func) \
113 expect_ ## func = TRUE
115#define expect(EXPECTED,GOT) ok((GOT)==(EXPECTED), "Expected %d, got %d\n", (EXPECTED), (GOT))
117#define check_rect(name, val, exp, ...) ok(EqualRect(&val, &exp), \
118 "invalid rect %s - expected %s - (" name ")\n", \
119 wine_dbgstr_rect(&val), wine_dbgstr_rect(&exp), __VA_ARGS__);
121#define compare(val, exp, format) ok((val) == (exp), #val " value " format " expected " format "\n", (val), (exp));
123#define check_button_size(handle, width, height, ...) {\
124 LRESULT bsize = SendMessageA(handle, TB_GETBUTTONSIZE, 0, 0);\
125 ok(bsize == MAKELONG(width, height), "Unexpected button size - got size (%d, %d), expected (%d, %d)\n", LOWORD(bsize), HIWORD(bsize), width, height);\
130 p->idCommand = idCommand;
132 p->fsStyle = fsStyle;
133 p->iString = nString;
158 ok(
FALSE,
"TBN_GETDISPINFOA received\n");
182 if (save->
iItem == -1)
186 save->
pData[0] = 0xcafe;
217 if (restore->
iItem == -1)
230 if (restore->
iItem < 7 || restore->
iItem == 10)
233 if (restore->
iItem < 7)
244 if (restore->
iItem == 7)
259 if (restore->
iItem == 0)
264 else if (restore->
iItem == 1)
276 if (restore->
iItem == -1)
return 0;
282 tb->tbButton.iBitmap = 0;
283 tb->tbButton.fsState = 0;
284 tb->tbButton.fsStyle = 0;
285 tb->tbButton.dwData = 0;
286 ok(
tb->cchText == 128,
"got %d\n",
tb->cchText );
290 tb->tbButton.idCommand = 7;
296 tb->tbButton.idCommand = 9;
297 tb->tbButton.iString = 0;
302 tb->tbButton.idCommand = 11;
303 tb->tbButton.iString = 3;
314 static LONG defwndproc_counter = 0;
343 msg.stage =
tb->iItem;
368 defwndproc_counter++;
370 defwndproc_counter--;
386 hToolbar = pCreateToolbarEx(
hMainWnd,
393 ok(hToolbar !=
NULL,
"Toolbar creation\n");
443 ok(*hToolbar !=
NULL,
"Toolbar creation problem\n");
487#define CHECK_IMAGELIST(count, dx, dy) { \
489 HIMAGELIST himl = (HIMAGELIST)SendMessageA(hToolbar, TB_GETIMAGELIST, 0, 0); \
490 ok(himl != NULL, "No image list\n"); \
492 ok(pImageList_GetImageCount(himl) == count, "Images count mismatch - %d vs %d\n", count, pImageList_GetImageCount(himl)); \
493 pImageList_GetIconSize(himl, &cx, &cy); \
494 ok(cx == dx && cy == dy, "Icon size mismatch - %dx%d vs %dx%d\n", dx, dy, cx, cy); \
551 ok(0,
"id %d, count %d\n",
id,
count);
562 ok(
cx == 16,
"got size %d\n",
cx);
569 ok(
cx == 24,
"got size %d\n",
cx);
572 ok(0,
"id %d, size %d\n",
id,
cx);
597 ok(
ret == 0,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
600 ok(
ret == 8,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
604 ok(
ret == 8,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
612 ok(
ret == 3,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
619 ok(
ret == 0,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
622 ok(
ret == -143,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
628 ok(
ret == 0,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
636 ok(
ret == 100,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
654 ok(
ret == 1,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
700 ok(
himl !=
NULL,
"failed to create imagelist\n");
719 pImageList_Destroy(
himl);
752#define CHECK_STRING_TABLE(count, tab) { \
755 for (_i = 0; _i < (count); _i++) {\
756 ret = SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(260, _i), (LPARAM)_buf); \
757 ok(ret >= 0, "TB_GETSTRINGA - unexpected return %d while checking string %d\n", ret, _i); \
759 ok(strcmp(_buf, (tab)[_i]) == 0, "Invalid string #%d - '%s' vs '%s'\n", _i, (tab)[_i], _buf); \
761 ok(SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(260, (count)), (LPARAM)_buf) == -1, \
762 "Too many strings in table\n"); \
769 LPCSTR ret1[] = {
"a",
"b"};
770 LPCSTR ret2[] = {
"a",
"b",
"|a|b||"};
771 LPCSTR ret3[] = {
"a",
"b",
"|a|b||",
"p",
"q"};
772 LPCSTR ret4[] = {
"a",
"b",
"|a|b||",
"p",
"q",
"p"};
773 LPCSTR ret5[] = {
"a",
"b",
"|a|b||",
"p",
"q",
"p",
"p",
"q"};
774 LPCSTR ret6[] = {
"a",
"b",
"|a|b||",
"p",
"q",
"p",
"p",
"q",
"p",
"",
"q"};
775 LPCSTR ret7[] = {
"a",
"b",
"|a|b||",
"p",
"q",
"p",
"p",
"q",
"p",
"",
"q",
"br",
"c",
"d"};
783 ok(
ret == 0,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
787 win_skip(
"TB_GETSTRINGA needs 5.80\n");
792 ok(
ret == 2,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
797 ok(
ret == -1,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
801 ok(
ret == -1,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
804 ok(
ret == 3,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
807 ok(
ret == 3,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
810 ok(
ret == 5,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
813 ok(
ret == 6,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
816 ok(
ret == 8,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
819 ok(
ret == 11,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
839#define check_hot_notify() \
840 ok(g_fReceivedHotItemChange, "TBN_HOTITEMCHANGE not received\n"); \
841 g_fExpectedHotItemOld = g_fExpectedHotItemNew = 0;
856 ok(
ret == -1,
"Hot item: %ld, expected -1\n",
ret);
858 ok(
ret == -1,
"TB_SETHOTITEM returned %ld, expected -1\n",
ret);
860 ok(
ret == 1,
"Hot item: %ld, expected 1\n",
ret);
862 ok(
ret == 1,
"TB_SETHOTITEM returned %ld, expected 1\n",
ret);
865 ok(
ret == 2,
"TB_SETHOTITEM returned %ld, expected 2\n",
ret);
867 ok(
ret == 2,
"Hot item: %lx, expected 2\n",
ret);
869 ok(
ret == 2,
"TB_SETHOTITEM returned %ld, expected 2\n",
ret);
871 ok(
ret == -1,
"Hot item: %lx, expected -1\n",
ret);
875 ok(
ret == -1,
"TB_SETHOTITEM returned %ld, expected -1\n",
ret);
878 ok(
ret == 3,
"Hot item: %lx, expected 3\n",
ret);
881 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
883 ok(
ret == 3,
"Hot item: %lx, expected 3\n",
ret);
888 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
893 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
898 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
905 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
908 ok(
ret == -1,
"Hot item: %lx, expected -1\n",
ret);
912 ok(
ret == -1,
"TB_GETHOTITEM returned %ld, expected -1\n",
ret);
916 ok(
ret == -1,
"TB_SETHOTITEM returned %ld, expected -1\n",
ret);
920 ok(
ret == 3,
"TB_GETHOTITEM returned %ld, expected 3\n",
ret);
930 ok(
ret == 1,
"TB_GETHOTITEM returned %ld, expected 1\n",
ret);
935 ok(
ret == 1,
"TB_SETHOTITEM returned %ld, expected 1\n",
ret);
938 ok(
ret ==
TRUE,
"TB_DELETEBUTTON returned %ld, expected TRUE\n",
ret);
940 ok(
ret == -1,
"TB_GETHOTITEM returned %ld, expected -1\n",
ret);
948static void dump_sizes(
HWND hToolbar)
957 printf(
" { {%d, %d, %d, %d}, {%d, %d}, %d, {",
r.left,
r.top,
r.right,
r.bottom,
962 printf(
"%s{%3d, %3d, %3d, %3d}, ", (
i%3==0 ?
"\n " :
""),
r.left,
r.top,
r.right,
r.bottom);
967#define check_sizes() dump_sizes(hToolbar);
968#define check_sizes_todo(todomask) dump_sizes(hToolbar);
1005 SetRect(&
ret.rcClient, cleft, ctop, cright, cbottom);
1006 ret.szMin.cx = minx;
1007 ret.szMin.cy = miny;
1009 ret.prcButtons = heap_alloc_zero(nButtonsAlloc *
sizeof(*
ret.prcButtons));
1020#define STRING1 "MMMMMMMMMMMMM"
1021#define STRING2 "Tst"
1025#define tbsize_results_num 28
1302 { 5, 2, { 0, 24, 8, 29 } },
1303 { 20, 1, { 100, 2, 107, 102 } },
1304 { 20, 2, { 107, 2, 207, 102 } }
1309#define check_sizes_todo(todomask) { \
1311 int buttonCount, i, mask=(todomask); \
1312 tbsize_result_t *res = &tbsize_results[tbsize_numtests]; \
1313 GetClientRect(hToolbar, &rc); \
1315 buttonCount = SendMessageA(hToolbar, TB_BUTTONCOUNT, 0, 0); \
1316 compare(buttonCount, res->nButtons, "%d"); \
1317 for (i=0; i<min(buttonCount, res->nButtons); i++) { \
1318 ok(SendMessageA(hToolbar, TB_GETITEMRECT, i, (LPARAM)&rc) == 1, "TB_GETITEMRECT\n"); \
1319 if (broken(tbsize_alt_numtests < ARRAY_SIZE(tbsize_alt_results) && \
1320 EqualRect(&rc, &tbsize_alt_results[tbsize_alt_numtests].rcButton))) { \
1321 win_skip("Alternate rect found\n"); \
1322 tbsize_alt_numtests++; \
1323 } else todo_wine_if(mask&1) \
1324 check_rect("button = %d, tbsize_numtests = %d", rc, res->prcButtons[i], i, tbsize_numtests); \
1327 tbsize_numtests++; \
1330#define check_sizes() check_sizes_todo(0)
1336 {0, 11, 0, 0, {0, }, 0, -1},
1387 for (
i=0;
i<15;
i++)
1548 pImageList_Destroy(
himl);
1549 pImageList_Destroy(himl2);
1651 ok(
rect.top == 2,
"Test will make no sense because initial top is %d instead of 2\n",
1659 ok(
rect.top == 2 ||
rect.top == 0,
"Unexpected top margin %d in recalc test\n",
1661 return (
rect.top == 0);
1678 ok(
rect.top == 2,
"Test will make no sense because initial top is %d instead of 2\n",
1687 const int EX_STYLES_COUNT = 5;
1697 ok(!recalc,
"Unexpected recalc - adding button without text\n");
1702 ok(recalc,
"Expected a recalc - adding button with text\n");
1711 ok(!recalc,
"Unexpected recalc - setting a button text\n");
1715 for (
i = 0;
i < EX_STYLES_COUNT;
i++)
1717 if (
i == 1 ||
i == 3)
1723 ok(!recalc,
"Unexpected recalc - setting bit %d\n",
i);
1726 ok(!recalc,
"Unexpected recalc - clearing bit %d\n",
i);
1736 ok(recalc,
"Expected a recalc - setting TBSTYLE_EX_MIXEDBUTTONS\n");
1740 ok(!recalc,
"Unexpected recalc - setting TBSTYLE_EX_MIXEDBUTTONS again\n");
1744 ok(recalc,
"Expected a recalc - clearing TBSTYLE_EX_MIXEDBUTTONS\n");
1746 else win_skip(
"No recalc on TBSTYLE_EX_MIXEDBUTTONS\n" );
1756 ok(!recalc,
"recalc %d\n", recalc);
1760 ok(!recalc,
"recalc %d\n", recalc);
1764 ok(recalc,
"recalc %d\n", recalc);
1769 ok(!recalc,
"recalc %d\n", recalc);
1773 ok(recalc,
"recalc %d\n", recalc);
1779 ok(!recalc,
"recalc %d\n", recalc);
1784 ok(!recalc,
"recalc %d\n", recalc);
1790 ok(recalc,
"recalc %d\n", recalc);
1803 for (
i = 0;
i < 128;
i++)
1818 memset(&tbiW, 0,
sizeof(tbiW));
1819 tbiW.
cbSize =
sizeof(tbiW);
1822 ok(
i == 1,
"Got index %d\n",
i);
1834 3, 20, 20, 16, 16,
sizeof(
TBBUTTON));
1840 3, 4, 4, 16, 16,
sizeof(
TBBUTTON));
1846 3, 0, 8, 12, 12,
sizeof(
TBBUTTON));
1852 3, -1, 8, 12, 12,
sizeof(
TBBUTTON));
1858 3, -1, 8, -1, 12,
sizeof(
TBBUTTON));
1864 3, 0, 0, 12, -1,
sizeof(
TBBUTTON));
1938 hToolbar = pCreateToolbarEx(
hMainWnd,
1945 ok(hToolbar !=
NULL,
"Toolbar creation\n");
1953 memset(&rc, 0xCC,
sizeof(rc));
1960 "[%d] Unexpected number of rows %d (expected %d)\n",
i, rows,
1972 static const char answer[] =
"STR";
1973 static const WCHAR answerW[] = {
'S',
'T',
'R',0 };
1976 hToolbar =
CreateWindowExA(0,
TOOLBARCLASSNAMEA,
NULL,
WS_CHILD |
WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (
HMENU)5,
GetModuleHandleA(
NULL),
NULL);
1977 ok(hToolbar !=
NULL,
"Toolbar creation problem\n");
1982 win_skip(
"TB_GETSTRINGA and TB_GETSTRINGW need 5.80\n");
2020 memset(&nmtti, 0,
sizeof(nmtti));
2029 "dispinfo from tooltip",
FALSE);
2044 ok(tooltip ==
NULL,
"got %p\n", tooltip);
2060 hToolbar = pCreateToolbarEx(
hMainWnd,
2067 ok(hToolbar !=
NULL,
"Toolbar creation\n");
2073 ok(
style == style2,
"got 0x%08x, expected 0x%08x\n",
style, style2);
2082 "got 0x%08x, expected 0x%08x\n",
style, style2);
2091 ok(
style == style2,
"got 0x%08x, expected 0x%08x\n",
style, style2);
2208 ok(tooltip !=
NULL,
"got %p\n", tooltip);
2278 win_skip(
"Some extended style bits are not supported\n");
2290 ok(oldstyle == oldstyle2,
"%d: got old style 0x%08x, expected 0x%08x\n",
i, oldstyle, oldstyle2);
2292 ok(
style ==
ptr->style_set,
"%d: got style 0x%08x, expected 0x%08x\n",
i,
style,
ptr->style_set);
2298 ok(oldstyle == oldstyle2,
"got old style 0x%08x, expected 0x%08x\n", oldstyle, oldstyle2);
2318 for (
i=0;
i<30;
i++)
2328 for (
i=0;
i<30;
i++)
2339 for (
i=0;
i<30;
i++)
2350 for (
i=0;
i<30;
i++)
2367 static const WCHAR subkey[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'W',
'i',
'n',
'e',
'\\',
2368 'W',
'i',
'n',
'e',
'T',
'e',
's',
't',0};
2369 static const WCHAR value[] = {
't',
'o',
'o',
'l',
'b',
'a',
'r',
't',
'e',
's',
't',0};
2375 static const TBBUTTON more_btns[2] =
2380 static const DWORD expect[] = {0xcafe, 1, 0xcafe0000, 3, 0xcafe0001, 5, 0xcafe0002, 7, 0xcafe0003,
2381 9, 0xcafe0004, 11, 0xcafe0005, 13, 0xcafe0006, 0xffffffff, 0xcafe0007,
2382 0xfffffffe, 0xcafe0008, 0x80000000, 0xcafe0009, 0x7fffffff, 0xcafe000a,
2384 static const TBBUTTON expect_btns[] =
2400 params.pszSubKey = subkey;
2408 ok(
res,
"saving failed\n" );
2427 ok(
res,
"restoring failed\n" );
2437 ok(
tb.iBitmap == expect_btns[
i].
iBitmap,
"%d: got %d\n",
i,
tb.iBitmap );
2438 ok(
tb.idCommand == expect_btns[
i].
idCommand,
"%d: got %d\n",
i,
tb.idCommand );
2439 ok(
tb.fsState == expect_btns[
i].
fsState,
"%d: got %02x\n",
i,
tb.fsState );
2440 ok(
tb.fsStyle == expect_btns[
i].
fsStyle,
"%d: got %02x\n",
i,
tb.fsStyle );
2441 ok(
tb.dwData == expect_btns[
i].
dwData,
"%d: got %lx\n",
i,
tb.dwData );
2443 ok(
tb.iString == expect_btns[
i].
iString,
"%d: got %lx\n",
i,
tb.iString );
2446 "%d: got %s\n",
i, (
char *)
tb.iString );
2449 if (
tb.idCommand == 7)
2468 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2473 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2478 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2484 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2494 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2509 ok(imagelist ==
NULL,
"got %p\n", imagelist);
2515 ok(imagelist ==
NULL,
"got %p\n", imagelist);
2524#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
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 * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
#define RegCloseKey(hKey)
static void init_msg_sequences(struct msg_sequence **seq, int n)
static void flush_sequences(struct msg_sequence **seq, int n)
HWND WINAPI CreateToolbarEx(HWND hwnd, DWORD style, UINT wID, INT nBitmaps, HINSTANCE hBMInst, UINT_PTR wBMID, LPCTBBUTTON lpButtons, INT iNumButtons, INT dxButton, INT dyButton, INT dxBitmap, INT dyBitmap, UINT uStructSize)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE hi, LPCSTR lpbmp, INT cx, INT cGrow, COLORREF clrMask, UINT uType, UINT uFlags)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
INT WINAPI ImageList_GetImageCount(HIMAGELIST himl)
BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, INT *cx, INT *cy)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLdouble GLdouble GLdouble GLdouble top
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
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
int WINAPI lstrlenA(LPCSTR lpString)
#define IDB_BITMAP_128x15
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define WS_OVERLAPPEDWINDOW
_Out_opt_ int _Out_opt_ int * cy
#define TB_GETBUTTONINFOA
#define TB_SETEXTENDEDSTYLE
#define IDB_VIEW_LARGE_COLOR
#define TB_ISBUTTONPRESSED
#define IDB_HIST_LARGE_COLOR
#define TBSTYLE_EX_DRAWDDARROWS
#define TBN_HOTITEMCHANGE
#define TB_GETBUTTONINFOW
#define IDB_HIST_SMALL_COLOR
#define TBSTYLE_EX_MIXEDBUTTONS
struct _IMAGELIST * HIMAGELIST
#define IDB_VIEW_SMALL_COLOR
#define CCM_SETUNICODEFORMAT
#define TB_BUTTONSTRUCTSIZE
#define CCM_GETUNICODEFORMAT
#define TB_SETUNICODEFORMAT
#define IDB_STD_LARGE_COLOR
#define TB_ISBUTTONINDETERMINATE
#define TBSTYLE_EX_HIDECLIPPEDBUTTONS
#define TBSTYLE_CHECKGROUP
#define TBSTYLE_EX_DOUBLEBUFFER
#define TBSTYLE_TRANSPARENT
#define TB_GETEXTENDEDSTYLE
#define TBN_GETBUTTONINFOA
#define TB_SETDRAWTEXTFLAGS
#define TB_ISBUTTONHIGHLIGHTED
#define CCS_NOPARENTALIGN
#define TBSTYLE_EX_VERTICAL
#define TB_ISBUTTONCHECKED
#define TB_ISBUTTONHIDDEN
#define TB_ISBUTTONENABLED
#define TOOLBARCLASSNAMEA
#define TB_SETBUTTONINFOA
#define IDB_STD_SMALL_COLOR
TW_UINT32 TW_UINT16 TW_UINT16 MSG
HGDIOBJ WINAPI GetStockObject(_In_ int)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
BOOL WINAPI DeleteDC(_In_ HDC)
BOOL WINAPI GetTextExtentPoint32A(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
#define HKEY_CURRENT_USER
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)