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");
181 if (save->
iItem == -1)
185 save->
pData[0] = 0xcafe;
216 if (restore->
iItem == -1)
229 if (restore->
iItem < 7 || restore->
iItem == 10)
232 if (restore->
iItem < 7)
243 if (restore->
iItem == 7)
258 if (restore->
iItem == 0)
263 else if (restore->
iItem == 1)
275 if (restore->
iItem == -1)
return 0;
281 tb->tbButton.iBitmap = 0;
282 tb->tbButton.fsState = 0;
283 tb->tbButton.fsStyle = 0;
284 tb->tbButton.dwData = 0;
285 ok(
tb->cchText == 128,
"got %d\n",
tb->cchText );
289 tb->tbButton.idCommand = 7;
295 tb->tbButton.idCommand = 9;
296 tb->tbButton.iString = 0;
301 tb->tbButton.idCommand = 11;
302 tb->tbButton.iString = 3;
313 static LONG defwndproc_counter = 0;
342 msg.stage =
tb->iItem;
367 defwndproc_counter++;
369 defwndproc_counter--;
385 hToolbar = pCreateToolbarEx(
hMainWnd,
392 ok(hToolbar !=
NULL,
"Toolbar creation\n");
442 ok(*hToolbar !=
NULL,
"Toolbar creation problem\n");
486#define CHECK_IMAGELIST(count, dx, dy) { \
488 HIMAGELIST himl = (HIMAGELIST)SendMessageA(hToolbar, TB_GETIMAGELIST, 0, 0); \
489 ok(himl != NULL, "No image list\n"); \
491 ok(pImageList_GetImageCount(himl) == count, "Images count mismatch - %d vs %d\n", count, pImageList_GetImageCount(himl)); \
492 pImageList_GetIconSize(himl, &cx, &cy); \
493 ok(cx == dx && cy == dy, "Icon size mismatch - %dx%d vs %dx%d\n", dx, dy, cx, cy); \
550 ok(0,
"id %d, count %d\n",
id,
count);
561 ok(
cx == 16,
"got size %d\n",
cx);
568 ok(
cx == 24,
"got size %d\n",
cx);
571 ok(0,
"id %d, size %d\n",
id,
cx);
596 ok(
ret == 0,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
599 ok(
ret == 8,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
603 ok(
ret == 8,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
611 ok(
ret == 3,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
618 ok(
ret == 0,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
621 ok(
ret == -143,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
627 ok(
ret == 0,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
635 ok(
ret == 100,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
653 ok(
ret == 1,
"TB_ADDBITMAP - unexpected return %d\n",
ret);
699 ok(
himl !=
NULL,
"failed to create imagelist\n");
718 pImageList_Destroy(
himl);
751#define CHECK_STRING_TABLE(count, tab) { \
754 for (_i = 0; _i < (count); _i++) {\
755 ret = SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(260, _i), (LPARAM)_buf); \
756 ok(ret >= 0, "TB_GETSTRINGA - unexpected return %d while checking string %d\n", ret, _i); \
758 ok(strcmp(_buf, (tab)[_i]) == 0, "Invalid string #%d - '%s' vs '%s'\n", _i, (tab)[_i], _buf); \
760 ok(SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(260, (count)), (LPARAM)_buf) == -1, \
761 "Too many strings in table\n"); \
768 LPCSTR ret1[] = {
"a",
"b"};
769 LPCSTR ret2[] = {
"a",
"b",
"|a|b||"};
770 LPCSTR ret3[] = {
"a",
"b",
"|a|b||",
"p",
"q"};
771 LPCSTR ret4[] = {
"a",
"b",
"|a|b||",
"p",
"q",
"p"};
772 LPCSTR ret5[] = {
"a",
"b",
"|a|b||",
"p",
"q",
"p",
"p",
"q"};
773 LPCSTR ret6[] = {
"a",
"b",
"|a|b||",
"p",
"q",
"p",
"p",
"q",
"p",
"",
"q"};
774 LPCSTR ret7[] = {
"a",
"b",
"|a|b||",
"p",
"q",
"p",
"p",
"q",
"p",
"",
"q",
"br",
"c",
"d"};
782 ok(
ret == 0,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
786 win_skip(
"TB_GETSTRINGA needs 5.80\n");
791 ok(
ret == 2,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
796 ok(
ret == -1,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
800 ok(
ret == -1,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
803 ok(
ret == 3,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
806 ok(
ret == 3,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
809 ok(
ret == 5,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
812 ok(
ret == 6,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
815 ok(
ret == 8,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
818 ok(
ret == 11,
"TB_ADDSTRINGA - unexpected return %d\n",
ret);
838#define check_hot_notify() \
839 ok(g_fReceivedHotItemChange, "TBN_HOTITEMCHANGE not received\n"); \
840 g_fExpectedHotItemOld = g_fExpectedHotItemNew = 0;
855 ok(
ret == -1,
"Hot item: %ld, expected -1\n",
ret);
857 ok(
ret == -1,
"TB_SETHOTITEM returned %ld, expected -1\n",
ret);
859 ok(
ret == 1,
"Hot item: %ld, expected 1\n",
ret);
861 ok(
ret == 1,
"TB_SETHOTITEM returned %ld, expected 1\n",
ret);
864 ok(
ret == 2,
"TB_SETHOTITEM returned %ld, expected 2\n",
ret);
866 ok(
ret == 2,
"Hot item: %lx, expected 2\n",
ret);
868 ok(
ret == 2,
"TB_SETHOTITEM returned %ld, expected 2\n",
ret);
870 ok(
ret == -1,
"Hot item: %lx, expected -1\n",
ret);
874 ok(
ret == -1,
"TB_SETHOTITEM returned %ld, expected -1\n",
ret);
877 ok(
ret == 3,
"Hot item: %lx, expected 3\n",
ret);
880 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
882 ok(
ret == 3,
"Hot item: %lx, expected 3\n",
ret);
887 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
892 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
897 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
904 ok(
ret == 3,
"TB_SETHOTITEM returned %ld, expected 3\n",
ret);
907 ok(
ret == -1,
"Hot item: %lx, expected -1\n",
ret);
911 ok(
ret == -1,
"TB_GETHOTITEM returned %ld, expected -1\n",
ret);
915 ok(
ret == -1,
"TB_SETHOTITEM returned %ld, expected -1\n",
ret);
919 ok(
ret == 3,
"TB_GETHOTITEM returned %ld, expected 3\n",
ret);
929 ok(
ret == 1,
"TB_GETHOTITEM returned %ld, expected 1\n",
ret);
934 ok(
ret == 1,
"TB_SETHOTITEM returned %ld, expected 1\n",
ret);
937 ok(
ret ==
TRUE,
"TB_DELETEBUTTON returned %ld, expected TRUE\n",
ret);
939 ok(
ret == -1,
"TB_GETHOTITEM returned %ld, expected -1\n",
ret);
947static void dump_sizes(
HWND hToolbar)
956 printf(
" { {%d, %d, %d, %d}, {%d, %d}, %d, {",
r.left,
r.top,
r.right,
r.bottom,
961 printf(
"%s{%3d, %3d, %3d, %3d}, ", (
i%3==0 ?
"\n " :
""),
r.left,
r.top,
r.right,
r.bottom);
966#define check_sizes() dump_sizes(hToolbar);
967#define check_sizes_todo(todomask) dump_sizes(hToolbar);
1004 SetRect(&
ret.rcClient, cleft, ctop, cright, cbottom);
1005 ret.szMin.cx = minx;
1006 ret.szMin.cy = miny;
1008 ret.prcButtons = heap_alloc_zero(nButtonsAlloc *
sizeof(*
ret.prcButtons));
1019#define STRING1 "MMMMMMMMMMMMM"
1020#define STRING2 "Tst"
1024#define tbsize_results_num 28
1301 { 5, 2, { 0, 24, 8, 29 } },
1302 { 20, 1, { 100, 2, 107, 102 } },
1303 { 20, 2, { 107, 2, 207, 102 } }
1308#define check_sizes_todo(todomask) { \
1310 int buttonCount, i, mask=(todomask); \
1311 tbsize_result_t *res = &tbsize_results[tbsize_numtests]; \
1312 GetClientRect(hToolbar, &rc); \
1314 buttonCount = SendMessageA(hToolbar, TB_BUTTONCOUNT, 0, 0); \
1315 compare(buttonCount, res->nButtons, "%d"); \
1316 for (i=0; i<min(buttonCount, res->nButtons); i++) { \
1317 ok(SendMessageA(hToolbar, TB_GETITEMRECT, i, (LPARAM)&rc) == 1, "TB_GETITEMRECT\n"); \
1318 if (broken(tbsize_alt_numtests < ARRAY_SIZE(tbsize_alt_results) && \
1319 EqualRect(&rc, &tbsize_alt_results[tbsize_alt_numtests].rcButton))) { \
1320 win_skip("Alternate rect found\n"); \
1321 tbsize_alt_numtests++; \
1322 } else todo_wine_if(mask&1) \
1323 check_rect("button = %d, tbsize_numtests = %d", rc, res->prcButtons[i], i, tbsize_numtests); \
1326 tbsize_numtests++; \
1329#define check_sizes() check_sizes_todo(0)
1335 {0, 11, 0, 0, {0, }, 0, -1},
1386 for (
i=0;
i<15;
i++)
1547 pImageList_Destroy(
himl);
1548 pImageList_Destroy(himl2);
1650 ok(
rect.top == 2,
"Test will make no sense because initial top is %d instead of 2\n",
1658 ok(
rect.top == 2 ||
rect.top == 0,
"Unexpected top margin %d in recalc test\n",
1660 return (
rect.top == 0);
1677 ok(
rect.top == 2,
"Test will make no sense because initial top is %d instead of 2\n",
1686 const int EX_STYLES_COUNT = 5;
1696 ok(!recalc,
"Unexpected recalc - adding button without text\n");
1701 ok(recalc,
"Expected a recalc - adding button with text\n");
1710 ok(!recalc,
"Unexpected recalc - setting a button text\n");
1714 for (
i = 0;
i < EX_STYLES_COUNT;
i++)
1716 if (
i == 1 ||
i == 3)
1722 ok(!recalc,
"Unexpected recalc - setting bit %d\n",
i);
1725 ok(!recalc,
"Unexpected recalc - clearing bit %d\n",
i);
1735 ok(recalc,
"Expected a recalc - setting TBSTYLE_EX_MIXEDBUTTONS\n");
1739 ok(!recalc,
"Unexpected recalc - setting TBSTYLE_EX_MIXEDBUTTONS again\n");
1743 ok(recalc,
"Expected a recalc - clearing TBSTYLE_EX_MIXEDBUTTONS\n");
1745 else win_skip(
"No recalc on TBSTYLE_EX_MIXEDBUTTONS\n" );
1755 ok(!recalc,
"recalc %d\n", recalc);
1759 ok(!recalc,
"recalc %d\n", recalc);
1763 ok(recalc,
"recalc %d\n", recalc);
1768 ok(!recalc,
"recalc %d\n", recalc);
1772 ok(recalc,
"recalc %d\n", recalc);
1778 ok(!recalc,
"recalc %d\n", recalc);
1783 ok(!recalc,
"recalc %d\n", recalc);
1789 ok(recalc,
"recalc %d\n", recalc);
1802 for (
i = 0;
i < 128;
i++)
1817 memset(&tbiW, 0,
sizeof(tbiW));
1818 tbiW.
cbSize =
sizeof(tbiW);
1821 ok(
i == 1,
"Got index %d\n",
i);
1833 3, 20, 20, 16, 16,
sizeof(
TBBUTTON));
1839 3, 4, 4, 16, 16,
sizeof(
TBBUTTON));
1845 3, 0, 8, 12, 12,
sizeof(
TBBUTTON));
1851 3, -1, 8, 12, 12,
sizeof(
TBBUTTON));
1857 3, -1, 8, -1, 12,
sizeof(
TBBUTTON));
1863 3, 0, 0, 12, -1,
sizeof(
TBBUTTON));
1937 hToolbar = pCreateToolbarEx(
hMainWnd,
1944 ok(hToolbar !=
NULL,
"Toolbar creation\n");
1952 memset(&rc, 0xCC,
sizeof(rc));
1959 "[%d] Unexpected number of rows %d (expected %d)\n",
i, rows,
1971 static const char answer[] =
"STR";
1972 static const WCHAR answerW[] = {
'S',
'T',
'R',0 };
1975 hToolbar =
CreateWindowExA(0,
TOOLBARCLASSNAMEA,
NULL,
WS_CHILD |
WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (
HMENU)5,
GetModuleHandleA(
NULL),
NULL);
1976 ok(hToolbar !=
NULL,
"Toolbar creation problem\n");
1981 win_skip(
"TB_GETSTRINGA and TB_GETSTRINGW need 5.80\n");
2019 memset(&nmtti, 0,
sizeof(nmtti));
2028 "dispinfo from tooltip",
FALSE);
2040 ok(tooltip ==
NULL,
"got %p\n", tooltip);
2056 hToolbar = pCreateToolbarEx(
hMainWnd,
2063 ok(hToolbar !=
NULL,
"Toolbar creation\n");
2069 ok(
style == style2,
"got 0x%08x, expected 0x%08x\n",
style, style2);
2078 "got 0x%08x, expected 0x%08x\n",
style, style2);
2087 ok(
style == style2,
"got 0x%08x, expected 0x%08x\n",
style, style2);
2204 ok(tooltip !=
NULL,
"got %p\n", tooltip);
2274 win_skip(
"Some extended style bits are not supported\n");
2286 ok(oldstyle == oldstyle2,
"%d: got old style 0x%08x, expected 0x%08x\n",
i, oldstyle, oldstyle2);
2288 ok(
style ==
ptr->style_set,
"%d: got style 0x%08x, expected 0x%08x\n",
i,
style,
ptr->style_set);
2294 ok(oldstyle == oldstyle2,
"got old style 0x%08x, expected 0x%08x\n", oldstyle, oldstyle2);
2314 for (
i=0;
i<30;
i++)
2324 for (
i=0;
i<30;
i++)
2335 for (
i=0;
i<30;
i++)
2346 for (
i=0;
i<30;
i++)
2363 static const WCHAR subkey[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'W',
'i',
'n',
'e',
'\\',
2364 'W',
'i',
'n',
'e',
'T',
'e',
's',
't',0};
2365 static const WCHAR value[] = {
't',
'o',
'o',
'l',
'b',
'a',
'r',
't',
'e',
's',
't',0};
2371 static const TBBUTTON more_btns[2] =
2376 static const DWORD expect[] = {0xcafe, 1, 0xcafe0000, 3, 0xcafe0001, 5, 0xcafe0002, 7, 0xcafe0003,
2377 9, 0xcafe0004, 11, 0xcafe0005, 13, 0xcafe0006, 0xffffffff, 0xcafe0007,
2378 0xfffffffe, 0xcafe0008, 0x80000000, 0xcafe0009, 0x7fffffff, 0xcafe000a,
2380 static const TBBUTTON expect_btns[] =
2396 params.pszSubKey = subkey;
2404 ok(
res,
"saving failed\n" );
2423 ok(
res,
"restoring failed\n" );
2433 ok(
tb.iBitmap == expect_btns[
i].
iBitmap,
"%d: got %d\n",
i,
tb.iBitmap );
2434 ok(
tb.idCommand == expect_btns[
i].
idCommand,
"%d: got %d\n",
i,
tb.idCommand );
2435 ok(
tb.fsState == expect_btns[
i].
fsState,
"%d: got %02x\n",
i,
tb.fsState );
2436 ok(
tb.fsStyle == expect_btns[
i].
fsStyle,
"%d: got %02x\n",
i,
tb.fsStyle );
2437 ok(
tb.dwData == expect_btns[
i].
dwData,
"%d: got %lx\n",
i,
tb.dwData );
2439 ok(
tb.iString == expect_btns[
i].
iString,
"%d: got %lx\n",
i,
tb.iString );
2442 "%d: got %s\n",
i, (
char *)
tb.iString );
2445 if (
tb.idCommand == 7)
2464 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2469 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2474 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2480 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2490 ok(
flags == 0,
"Unexpected draw text flags %#x\n",
flags);
2505 ok(imagelist ==
NULL,
"got %p\n", imagelist);
2511 ok(imagelist ==
NULL,
"got %p\n", imagelist);
2520#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)
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 lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrcmpA(LPCSTR lpString1, LPCSTR lpString2)
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 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 *)
#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)