Commit 3845cc10 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

comctl32/tests: Link to comctl32.dll dynamically.

parent d5be8f57
TESTDLL = comctl32.dll
IMPORTS = comctl32 ole32 user32 gdi32 advapi32
IMPORTS = ole32 user32 gdi32 advapi32
C_SRCS = \
animate.c \
......
......@@ -108,26 +108,6 @@ static void create_animate(DWORD parent_style, DWORD animate_style)
update_window(hAnimateParentWnd);
}
static void init(void)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (pInitCommonControlsEx)
{
INITCOMMONCONTROLSEX iccex;
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_ANIMATE_CLASS;
pInitCommonControlsEx(&iccex);
}
else
InitCommonControls();
shell32 = LoadLibraryA("Shell32.dll");
}
static void destroy_animate(void)
{
MSG msg;
......@@ -175,7 +155,7 @@ static void test_play(void)
START_TEST(animate)
{
init();
shell32 = LoadLibraryA("Shell32.dll");
test_play();
......
......@@ -480,25 +480,20 @@ static LRESULT CALLBACK ComboExTestWndProc(HWND hWnd, UINT msg, WPARAM wParam, L
return 0L;
}
static BOOL init(void)
static void init_functions(void)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
WNDCLASSA wc;
INITCOMMONCONTROLSEX iccex;
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (!pInitCommonControlsEx)
{
win_skip("InitCommonControlsEx() is missing. Skipping the tests\n");
return FALSE;
}
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_USEREX_CLASSES;
pInitCommonControlsEx(&iccex);
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
#define X2(f, ord) p##f = (void*)GetProcAddress(hComCtl32, (const char *)ord);
X2(SetWindowSubclass, 410);
#undef X
#undef X2
}
pSetWindowSubclass = (void*)GetProcAddress(hComctl32, (LPSTR)410);
static BOOL init(void)
{
WNDCLASSA wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
......@@ -1161,6 +1156,8 @@ START_TEST(combo)
ULONG_PTR ctx_cookie;
HANDLE hCtx;
init_functions();
if (!init())
return;
......
......@@ -30,6 +30,8 @@
#define NUM_MSG_SEQUENCES 1
#define DATETIME_SEQ_INDEX 0
static BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
static struct msg_sequence *sequences[NUM_MSG_SEQUENCES];
static const struct message test_dtm_set_format_seq[] = {
......@@ -777,19 +779,21 @@ static void test_dts_shownone(void)
DestroyWindow(hwnd);
}
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(InitCommonControlsEx);
#undef X
}
START_TEST(datetime)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
INITCOMMONCONTROLSEX iccex;
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (!pInitCommonControlsEx)
{
win_skip("InitCommonControlsEx() is missing. Skipping the tests\n");
return;
}
init_functions();
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_DATE_CLASSES;
pInitCommonControlsEx(&iccex);
......
......@@ -59,38 +59,33 @@ static INT (WINAPI *pDPA_Search)(HDPA,PVOID,INT,PFNDPACOMPARE,LPARAM,UINT);
static BOOL (WINAPI *pDPA_SetPtr)(HDPA,INT,PVOID);
static BOOL (WINAPI *pDPA_Sort)(HDPA,PFNDPACOMPARE,LPARAM);
#define COMCTL32_GET_PROC(func, ord) \
((p ## func = (PVOID)GetProcAddress(hcomctl32,(LPCSTR)ord)) ? 1 \
: (trace( #func " not exported\n"), 0))
static BOOL InitFunctionPtrs(HMODULE hcomctl32)
static void init_functions(void)
{
/* 4.00+ */
if(COMCTL32_GET_PROC(DPA_Clone, 331) &&
COMCTL32_GET_PROC(DPA_Create, 328) &&
COMCTL32_GET_PROC(DPA_CreateEx, 340) &&
COMCTL32_GET_PROC(DPA_DeleteAllPtrs, 337) &&
COMCTL32_GET_PROC(DPA_DeletePtr, 336) &&
COMCTL32_GET_PROC(DPA_Destroy, 329) &&
COMCTL32_GET_PROC(DPA_GetPtr, 332) &&
COMCTL32_GET_PROC(DPA_GetPtrIndex, 333) &&
COMCTL32_GET_PROC(DPA_Grow, 330) &&
COMCTL32_GET_PROC(DPA_InsertPtr, 334) &&
COMCTL32_GET_PROC(DPA_Search, 339) &&
COMCTL32_GET_PROC(DPA_SetPtr, 335) &&
COMCTL32_GET_PROC(DPA_Sort, 338))
{
/* 4.71+ */
COMCTL32_GET_PROC(DPA_DestroyCallback, 386) &&
COMCTL32_GET_PROC(DPA_EnumCallback, 385) &&
COMCTL32_GET_PROC(DPA_LoadStream, 9) &&
COMCTL32_GET_PROC(DPA_Merge, 11) &&
COMCTL32_GET_PROC(DPA_SaveStream, 10);
return TRUE;
}
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
return FALSE;
#define X2(f, ord) p##f = (void*)GetProcAddress(hComCtl32, (const char *)ord);
/* 4.00+ */
X2(DPA_Clone, 331);
X2(DPA_Create, 328);
X2(DPA_CreateEx, 340);
X2(DPA_DeleteAllPtrs, 337);
X2(DPA_DeletePtr, 336);
X2(DPA_Destroy, 329);
X2(DPA_GetPtr, 332);
X2(DPA_GetPtrIndex, 333);
X2(DPA_Grow, 330);
X2(DPA_InsertPtr, 334);
X2(DPA_Search, 339);
X2(DPA_SetPtr, 335);
X2(DPA_Sort, 338);
/* 4.71+ */
X2(DPA_DestroyCallback, 386);
X2(DPA_EnumCallback, 385);
X2(DPA_LoadStream, 9);
X2(DPA_Merge, 11);
X2(DPA_SaveStream, 10);
#undef X2
}
/* Callbacks */
......@@ -628,7 +623,7 @@ static void test_DPA_LoadStream(void)
dpa = NULL;
hRes = pDPA_LoadStream(&dpa, CB_Load, pStm, NULL);
expect(S_OK, hRes);
DPA_Destroy(dpa);
pDPA_Destroy(dpa);
/* try with altered dwData2 field */
header.dwSize = sizeof(header);
......@@ -742,15 +737,7 @@ if (0) {
START_TEST(dpa)
{
HMODULE hcomctl32;
hcomctl32 = GetModuleHandleA("comctl32.dll");
if(!InitFunctionPtrs(hcomctl32))
{
win_skip("Needed functions are not available\n");
return;
}
init_functions();
test_dpa();
test_DPA_Merge();
......
......@@ -26,6 +26,9 @@
#include "v6util.h"
#include "msg.h"
static HIMAGELIST (WINAPI *pImageList_Create)(int, int, UINT, int, int);
static BOOL (WINAPI *pImageList_Destroy)(HIMAGELIST);
typedef struct tagEXPECTEDNOTIFY
{
INT iCode;
......@@ -953,7 +956,7 @@ static void test_hdm_sethotdivider(HWND hParent)
static void test_hdm_imageMessages(HWND hParent)
{
HIMAGELIST hImageList = ImageList_Create (4, 4, 0, 1, 0);
HIMAGELIST hImageList = pImageList_Create (4, 4, 0, 1, 0);
HIMAGELIST hIml;
BOOL wasValid;
HWND hChild;
......@@ -973,13 +976,13 @@ static void test_hdm_imageMessages(HWND hParent)
hIml = (HIMAGELIST) SendMessageA(hChild, HDM_CREATEDRAGIMAGE, 0, 0);
ok(hIml != NULL, "Expected non-NULL handle, got %p\n", hIml);
ImageList_Destroy(hIml);
pImageList_Destroy(hIml);
ok_sequence(sequences, HEADER_SEQ_INDEX, imageMessages_seq, "imageMessages sequence testing", FALSE);
DestroyWindow(hChild);
wasValid = ImageList_Destroy(hImageList);
wasValid = pImageList_Destroy(hImageList);
ok(wasValid, "Header must not free image list at destruction!\n");
}
......@@ -1644,28 +1647,23 @@ static LRESULT CALLBACK HeaderTestWndProc(HWND hWnd, UINT msg, WPARAM wParam, LP
return 0L;
}
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(ImageList_Create);
X(ImageList_Destroy);
#undef X
}
static BOOL init(void)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
WNDCLASSA wc;
INITCOMMONCONTROLSEX iccex;
TEXTMETRICA tm;
HFONT hOldFont;
HDC hdc;
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (!pInitCommonControlsEx)
{
win_skip("InitCommonControlsEx() is missing. Skipping the tests\n");
return FALSE;
}
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_USEREX_CLASSES;
pInitCommonControlsEx(&iccex);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
......@@ -1821,6 +1819,8 @@ START_TEST(header)
ULONG_PTR ctx_cookie;
HANDLE hCtx;
init_functions();
if (!init())
return;
......@@ -1852,6 +1852,8 @@ START_TEST(header)
return;
}
init_functions();
/* comctl32 version 6 tests start here */
test_hdf_fixedwidth(parent_hwnd);
test_hds_nosizing(parent_hwnd);
......
......@@ -85,6 +85,7 @@ static BOOL (WINAPI *pImageList_Write)(HIMAGELIST, IStream *);
static HIMAGELIST (WINAPI *pImageList_Read)(IStream *);
static BOOL (WINAPI *pImageList_Copy)(HIMAGELIST, int, HIMAGELIST, int, UINT);
static HIMAGELIST (WINAPI *pImageList_LoadImageW)(HINSTANCE, LPCWSTR, int, int, COLORREF, UINT, UINT);
static BOOL (WINAPI *pImageList_Draw)(HIMAGELIST,INT,HDC,INT,INT,UINT);
static HINSTANCE hinst;
......@@ -205,7 +206,7 @@ static HDC show_image(HWND hwnd, HIMAGELIST himl, int idx, int size,
SetWindowTextA(hwnd, loc);
hdc = GetDC(hwnd);
ImageList_Draw(himl, idx, hdc, 0, 0, ILD_TRANSPARENT);
pImageList_Draw(himl, idx, hdc, 0, 0, ILD_TRANSPARENT);
force_redraw(hwnd);
......@@ -504,8 +505,8 @@ static void test_DrawIndirect(void)
ok(hbm3 != 0, "no bitmap 3\n");
/* add three */
ok(0 == ImageList_Add(himl, hbm1, 0),"failed to add bitmap 1\n");
ok(1 == ImageList_Add(himl, hbm2, 0),"failed to add bitmap 2\n");
ok(0 == pImageList_Add(himl, hbm1, 0),"failed to add bitmap 1\n");
ok(1 == pImageList_Add(himl, hbm2, 0),"failed to add bitmap 2\n");
if (pImageList_SetImageCount)
{
......@@ -1576,7 +1577,7 @@ cleanup:
if(himl)
{
ret = ImageList_Destroy(himl);
ret = pImageList_Destroy(himl);
ok(ret, "ImageList_Destroy failed\n");
}
}
......@@ -1599,21 +1600,21 @@ static void test_iimagelist(void)
imgl = (IImageList*)createImageList(32, 32);
ret = IImageList_AddRef(imgl);
ok(ret == 2, "Expected 2, got %d\n", ret);
ret = ImageList_Destroy((HIMAGELIST)imgl);
ret = pImageList_Destroy((HIMAGELIST)imgl);
ok(ret == TRUE, "Expected TRUE, got %d\n", ret);
ret = ImageList_Destroy((HIMAGELIST)imgl);
ret = pImageList_Destroy((HIMAGELIST)imgl);
ok(ret == TRUE, "Expected TRUE, got %d\n", ret);
ret = ImageList_Destroy((HIMAGELIST)imgl);
ret = pImageList_Destroy((HIMAGELIST)imgl);
ok(ret == FALSE, "Expected FALSE, got %d\n", ret);
imgl = (IImageList*)createImageList(32, 32);
ret = IImageList_AddRef(imgl);
ok(ret == 2, "Expected 2, got %d\n", ret);
ret = ImageList_Destroy((HIMAGELIST)imgl);
ret = pImageList_Destroy((HIMAGELIST)imgl);
ok(ret == TRUE, "Expected TRUE, got %d\n", ret);
ret = IImageList_Release(imgl);
ok(ret == 0, "Expected 0, got %d\n", ret);
ret = ImageList_Destroy((HIMAGELIST)imgl);
ret = pImageList_Destroy((HIMAGELIST)imgl);
ok(ret == FALSE, "Expected FALSE, got %d\n", ret);
/* ref counting, HIMAGELIST_QueryInterface adds a reference */
......@@ -1674,7 +1675,7 @@ static void test_IImageList_Add_Remove(void)
int ret;
/* create an imagelist to play with */
himl = ImageList_Create(84, 84, ILC_COLOR16, 0, 3);
himl = pImageList_Create(84, 84, ILC_COLOR16, 0, 3);
ok(himl != 0,"failed to create imagelist\n");
imgl = (IImageList *) himl;
......@@ -1728,7 +1729,7 @@ static void test_IImageList_Get_SetImageCount(void)
INT ret;
/* create an imagelist to play with */
himl = ImageList_Create(84, 84, ILC_COLOR16, 0, 3);
himl = pImageList_Create(84, 84, ILC_COLOR16, 0, 3);
ok(himl != 0,"failed to create imagelist\n");
imgl = (IImageList *) himl;
......@@ -1773,7 +1774,7 @@ static void test_IImageList_Draw(void)
ok(hdc!=NULL, "couldn't get DC\n");
/* create an imagelist to play with */
himl = ImageList_Create(48, 48, ILC_COLOR16, 0, 3);
himl = pImageList_Create(48, 48, ILC_COLOR16, 0, 3);
ok(himl!=0,"failed to create imagelist\n");
imgl = (IImageList *) himl;
......@@ -1850,10 +1851,10 @@ static void test_IImageList_Merge(void)
HRESULT hr;
int ret;
himl1 = ImageList_Create(32,32,0,0,3);
himl1 = pImageList_Create(32,32,0,0,3);
ok(himl1 != NULL,"failed to create himl1\n");
himl2 = ImageList_Create(32,32,0,0,3);
himl2 = pImageList_Create(32,32,0,0,3);
ok(himl2 != NULL,"failed to create himl2\n");
hicon1 = CreateIcon(hinst, 32, 32, 1, 1, icon_bits, icon_bits);
......@@ -1887,7 +1888,7 @@ if (0)
/* Same happens if himl2 is empty */
IImageList_Release(imgl2);
himl2 = ImageList_Create(32,32,0,0,3);
himl2 = pImageList_Create(32,32,0,0,3);
ok(himl2 != NULL,"failed to recreate himl2\n");
imgl2 = (IImageList *) himl2;
......@@ -2385,7 +2386,7 @@ static void test_IImageList_GetIconSize(void)
static void init_functions(void)
{
HMODULE hComCtl32 = GetModuleHandleA("comctl32.dll");
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
#define X2(f, ord) p##f = (void*)GetProcAddress(hComCtl32, (const char *)ord);
......@@ -2414,6 +2415,7 @@ static void init_functions(void)
X(ImageList_LoadImageW);
X(ImageList_CoCreateInstance);
X(HIMAGELIST_QueryInterface);
X(ImageList_Draw);
#undef X
#undef X2
}
......@@ -2427,8 +2429,6 @@ START_TEST(imagelist)
hinst = GetModuleHandleA(NULL);
InitCommonControls();
test_create_destroy();
test_begindrag();
test_hotspot();
......
......@@ -61,32 +61,7 @@ static void test_get_set_text(void)
DestroyWindow(hwnd);
}
static BOOL init(void)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
INITCOMMONCONTROLSEX iccex;
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (!pInitCommonControlsEx)
{
win_skip("InitCommonControlsEx() is missing.\n");
return FALSE;
}
iccex.dwSize = sizeof(iccex);
/* W2K and below need ICC_INTERNET_CLASSES for the IP Address Control */
iccex.dwICC = ICC_INTERNET_CLASSES;
pInitCommonControlsEx(&iccex);
return TRUE;
}
START_TEST(ipaddress)
{
if (!init())
return;
test_get_set_text();
}
......@@ -28,6 +28,11 @@
#include "v6util.h"
#include "msg.h"
static HIMAGELIST (WINAPI *pImageList_Create)(int, int, UINT, int, int);
static BOOL (WINAPI *pImageList_Destroy)(HIMAGELIST);
static int (WINAPI *pImageList_Add)(HIMAGELIST, HBITMAP, HBITMAP);
static BOOL (WINAPI *p_TrackMouseEvent)(TRACKMOUSEEVENT *);
enum seq_index {
PARENT_SEQ_INDEX,
PARENT_FULL_SEQ_INDEX,
......@@ -73,6 +78,18 @@ static BOOL g_focus_test_LVN_DELETEITEM;
static HWND subclass_editbox(HWND hwndListview);
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(ImageList_Create);
X(ImageList_Destroy);
X(ImageList_Add);
X(_TrackMouseEvent);
#undef X
}
static struct msg_sequence *sequences[NUM_MSG_SEQUENCES];
static const struct message create_ownerdrawfixed_parent_seq[] = {
......@@ -848,13 +865,13 @@ static void test_images(void)
RECT r1, r2;
static CHAR hello[] = "hello";
himl = ImageList_Create(40, 40, 0, 4, 4);
himl = pImageList_Create(40, 40, 0, 4, 4);
ok(himl != NULL, "failed to create imagelist\n");
hbmp = CreateBitmap(40, 40, 1, 1, NULL);
ok(hbmp != NULL, "failed to create bitmap\n");
r = ImageList_Add(himl, hbmp, 0);
r = pImageList_Add(himl, hbmp, 0);
ok(r == 0, "should be zero\n");
hwnd = CreateWindowExA(0, "SysListView32", "foo", LVS_OWNERDRAWFIXED,
......@@ -1539,7 +1556,7 @@ static void test_create(void)
cls.lpszClassName = "MyListView32";
ok(RegisterClassExA(&cls), "RegisterClassEx failed\n");
test_create_imagelist = ImageList_Create(16, 16, 0, 5, 10);
test_create_imagelist = pImageList_Create(16, 16, 0, 5, 10);
hList = CreateWindowA("MyListView32", "Test", WS_VISIBLE, 0, 0, 100, 100, NULL, NULL, GetModuleHandleA(NULL), 0);
ok((HIMAGELIST)SendMessageA(hList, LVM_GETIMAGELIST, 0, 0) == test_create_imagelist, "Image list not obtained\n");
hHeader = (HWND)SendMessageA(hList, LVM_GETHEADER, 0, 0);
......@@ -3732,15 +3749,15 @@ static void test_hittest(void)
test_lvm_hittest(hwnd, x, y, -1, LVHT_TORIGHT, 0, FALSE, TRUE);
test_lvm_subitemhittest(hwnd, x, y, -1, -1, LVHT_NOWHERE, FALSE, FALSE, FALSE);
/* try with icons, state icons index is 1 based so at least 2 bitmaps needed */
himl = ImageList_Create(16, 16, 0, 4, 4);
himl = pImageList_Create(16, 16, 0, 4, 4);
ok(himl != NULL, "failed to create imagelist\n");
hbmp = CreateBitmap(16, 16, 1, 1, NULL);
ok(hbmp != NULL, "failed to create bitmap\n");
r = ImageList_Add(himl, hbmp, 0);
r = pImageList_Add(himl, hbmp, 0);
ok(r == 0, "should be zero\n");
hbmp = CreateBitmap(16, 16, 1, 1, NULL);
ok(hbmp != NULL, "failed to create bitmap\n");
r = ImageList_Add(himl, hbmp, 0);
r = pImageList_Add(himl, hbmp, 0);
ok(r == 1, "should be one\n");
r = SendMessageA(hwnd, LVM_SETIMAGELIST, LVSIL_STATE, (LPARAM)himl);
......@@ -4022,15 +4039,15 @@ todo_wine
expect(TRUE, r);
/* state icons */
himl = ImageList_Create(16, 16, 0, 2, 2);
himl = pImageList_Create(16, 16, 0, 2, 2);
ok(himl != NULL, "failed to create imagelist\n");
hbm = CreateBitmap(16, 16, 1, 1, NULL);
ok(hbm != NULL, "failed to create bitmap\n");
r = ImageList_Add(himl, hbm, 0);
r = pImageList_Add(himl, hbm, 0);
expect(0, r);
hbm = CreateBitmap(16, 16, 1, 1, NULL);
ok(hbm != NULL, "failed to create bitmap\n");
r = ImageList_Add(himl, hbm, 0);
r = pImageList_Add(himl, hbm, 0);
expect(1, r);
r = SendMessageA(hwnd, LVM_SETIMAGELIST, LVSIL_STATE, (LPARAM)himl);
......@@ -4702,9 +4719,9 @@ static void test_getitemspacing(void)
expect(cy, HIWORD(ret));
/* now try with icons */
himl40 = ImageList_Create(40, 40, 0, 4, 4);
himl40 = pImageList_Create(40, 40, 0, 4, 4);
ok(himl40 != NULL, "failed to create imagelist\n");
himl80 = ImageList_Create(80, 80, 0, 4, 4);
himl80 = pImageList_Create(80, 80, 0, 4, 4);
ok(himl80 != NULL, "failed to create imagelist\n");
ret = SendMessageA(hwnd, LVM_SETIMAGELIST, LVSIL_NORMAL, (LPARAM)himl40);
expect(0, ret);
......@@ -4772,7 +4789,7 @@ static void test_getitemspacing(void)
expect(cy + 40, HIWORD(ret));
SendMessageA(hwnd, LVM_SETIMAGELIST, LVSIL_NORMAL, 0);
ImageList_Destroy(himl80);
pImageList_Destroy(himl80);
DestroyWindow(hwnd);
/* LVS_SMALLICON */
hwnd = create_listview_control(LVS_SMALLICON);
......@@ -4790,7 +4807,7 @@ static void test_getitemspacing(void)
expect(cy + 40, HIWORD(ret));
SendMessageA(hwnd, LVM_SETIMAGELIST, LVSIL_NORMAL, 0);
ImageList_Destroy(himl40);
pImageList_Destroy(himl40);
DestroyWindow(hwnd);
/* LVS_REPORT */
hwnd = create_listview_control(LVS_REPORT);
......@@ -4973,11 +4990,11 @@ static void test_approximate_viewrect(void)
/* LVS_ICON */
hwnd = create_listview_control(LVS_ICON);
himl = ImageList_Create(40, 40, 0, 4, 4);
himl = pImageList_Create(40, 40, 0, 4, 4);
ok(himl != NULL, "failed to create imagelist\n");
hbmp = CreateBitmap(40, 40, 1, 1, NULL);
ok(hbmp != NULL, "failed to create bitmap\n");
ret = ImageList_Add(himl, hbmp, 0);
ret = pImageList_Add(himl, hbmp, 0);
expect(0, ret);
ret = SendMessageA(hwnd, LVM_SETIMAGELIST, 0, (LPARAM)himl);
expect(0, ret);
......@@ -5594,7 +5611,7 @@ static void test_createdragimage(void)
himl = (HIMAGELIST)SendMessageA(list, LVM_CREATEDRAGIMAGE, 0, (LPARAM)&pt);
ok(himl != NULL, "got %p\n", himl);
ImageList_Destroy(himl);
pImageList_Destroy(himl);
DestroyWindow(list);
}
......@@ -5709,9 +5726,9 @@ static void test_imagelists(void)
HIMAGELIST himl1, himl2, himl3;
LRESULT ret;
himl1 = ImageList_Create(40, 40, 0, 4, 4);
himl2 = ImageList_Create(40, 40, 0, 4, 4);
himl3 = ImageList_Create(40, 40, 0, 4, 4);
himl1 = pImageList_Create(40, 40, 0, 4, 4);
himl2 = pImageList_Create(40, 40, 0, 4, 4);
himl3 = pImageList_Create(40, 40, 0, 4, 4);
ok(himl1 != NULL, "Failed to create imagelist\n");
ok(himl2 != NULL, "Failed to create imagelist\n");
ok(himl3 != NULL, "Failed to create imagelist\n");
......@@ -5977,7 +5994,7 @@ static void test_oneclickactivate(void)
track.cbSize = sizeof(track);
track.dwFlags = TME_QUERY;
_TrackMouseEvent(&track);
p_TrackMouseEvent(&track);
ok(track.hwndTrack == hwnd, "hwndTrack != hwnd\n");
ok(track.dwFlags == TME_LEAVE, "dwFlags = %x\n", track.dwFlags);
......@@ -6241,23 +6258,10 @@ static void test_state_image(void)
START_TEST(listview)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
ULONG_PTR ctx_cookie;
HANDLE hCtx;
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (pInitCommonControlsEx)
{
INITCOMMONCONTROLSEX iccex;
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_LISTVIEW_CLASSES;
pInitCommonControlsEx(&iccex);
}
else
InitCommonControls();
init_functions();
init_msg_sequences(sequences, NUM_MSG_SEQUENCES);
......@@ -6319,6 +6323,8 @@ START_TEST(listview)
return;
}
init_functions();
/* comctl32 version 6 tests start here */
test_get_set_view();
test_canceleditlabel();
......
......@@ -42,6 +42,8 @@
#define SEL_NOTIFY_TEST_ID 100
static BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
static struct msg_sequence *sequences[NUM_MSG_SEQUENCES];
static HWND parent_wnd;
......@@ -598,8 +600,6 @@ static HWND create_parent_window(void)
{
HWND hwnd;
InitCommonControls();
/* flush message sequences, so we can check the new sequence by the end of function */
flush_sequences(sequences, NUM_MSG_SEQUENCES);
......@@ -2039,22 +2039,23 @@ static void test_sel_notify(void)
}
}
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(InitCommonControlsEx);
#undef X
}
START_TEST(monthcal)
{
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
INITCOMMONCONTROLSEX iccex;
HMODULE hComctl32;
ULONG_PTR ctx_cookie;
HANDLE hCtx;
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (!pInitCommonControlsEx)
{
win_skip("InitCommonControlsEx() is missing. Skipping the tests\n");
return;
}
init_functions();
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_DATE_CLASSES;
pInitCommonControlsEx(&iccex);
......
......@@ -76,18 +76,22 @@ static INT (WINAPI *pFindMRUData)(HANDLE, LPCVOID, DWORD, LPINT);
static INT (WINAPI *pAddMRUData)(HANDLE, LPCVOID, DWORD);
static HANDLE (WINAPI *pCreateMRUListW)(MRUINFOW*);
static void InitPointers(void)
static void init_functions(void)
{
pCreateMRUListA = (void*)GetProcAddress(hComctl32,(LPCSTR)151);
pFreeMRUList = (void*)GetProcAddress(hComctl32,(LPCSTR)152);
pAddMRUStringA = (void*)GetProcAddress(hComctl32,(LPCSTR)153);
pEnumMRUListA = (void*)GetProcAddress(hComctl32,(LPCSTR)154);
pCreateMRUListLazyA = (void*)GetProcAddress(hComctl32,(LPCSTR)157);
pAddMRUData = (void*)GetProcAddress(hComctl32,(LPCSTR)167);
pFindMRUData = (void*)GetProcAddress(hComctl32,(LPCSTR)169);
pCreateMRUListW = (void*)GetProcAddress(hComctl32,(LPCSTR)400);
pEnumMRUListW = (void*)GetProcAddress(hComctl32,(LPCSTR)403);
pCreateMRUListLazyW = (void*)GetProcAddress(hComctl32,(LPCSTR)404);
hComctl32 = LoadLibraryA("comctl32.dll");
#define X2(f, ord) p##f = (void*)GetProcAddress(hComctl32, (const char *)ord);
X2(CreateMRUListA, 151);
X2(FreeMRUList, 152);
X2(AddMRUStringA, 153);
X2(EnumMRUListA, 154);
X2(CreateMRUListLazyA, 157);
X2(AddMRUData, 167);
X2(FindMRUData, 169);
X2(CreateMRUListW, 400);
X2(EnumMRUListW, 403);
X2(CreateMRUListLazyW, 404);
#undef X2
}
/* Based on RegDeleteTreeW from dlls/advapi32/registry.c */
......@@ -705,13 +709,11 @@ static void test_CreateMRUListLazyW(void)
START_TEST(mru)
{
hComctl32 = GetModuleHandleA("comctl32.dll");
delete_reg_entries();
if (!create_reg_entries())
return;
InitPointers();
init_functions();
test_MRUListA();
test_CreateMRUListLazyA();
......
......@@ -339,7 +339,6 @@ START_TEST(pager)
pSetWindowSubclass = (void*)GetProcAddress(mod, (LPSTR)410);
InitCommonControls();
init_msg_sequences(sequences, NUM_MSG_SEQUENCES);
parent_wnd = create_parent_window();
......
......@@ -30,6 +30,7 @@
static HWND hProgressParentWnd, hProgressWnd;
static const char progressTestClass[] = "ProgressBarTestClass";
static BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
static HWND create_progress(DWORD style)
{
......@@ -94,24 +95,10 @@ static void update_window(HWND hWnd)
static void init(void)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
WNDCLASSA wc;
RECT rect;
BOOL ret;
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (pInitCommonControlsEx)
{
INITCOMMONCONTROLSEX iccex;
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_PROGRESS_CLASS;
pInitCommonControlsEx(&iccex);
}
else
InitCommonControls();
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
......@@ -135,7 +122,7 @@ static void init(void)
GetClientRect(hProgressParentWnd, &rect);
hProgressWnd = CreateWindowExA(0, PROGRESS_CLASSA, "", WS_CHILD | WS_VISIBLE,
0, 0, rect.right, rect.bottom, hProgressParentWnd, NULL, GetModuleHandleA(NULL), 0);
ok(hProgressWnd != NULL, "failed to create parent wnd\n");
ok(hProgressWnd != NULL, "Failed to create progress bar.\n");
progress_wndproc = (WNDPROC)SetWindowLongPtrA(hProgressWnd, GWLP_WNDPROC, (LPARAM)progress_subclass_proc);
ShowWindow(hProgressParentWnd, SW_SHOWNORMAL);
......@@ -250,8 +237,25 @@ static void test_setcolors(void)
DestroyWindow(progress);
}
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(InitCommonControlsEx);
#undef X
}
START_TEST(progress)
{
INITCOMMONCONTROLSEX iccex;
init_functions();
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_PROGRESS_CLASS;
pInitCommonControlsEx(&iccex);
init();
test_redraw();
......
......@@ -30,6 +30,9 @@
#include "wine/test.h"
static BOOL (WINAPI *pImageList_Destroy)(HIMAGELIST);
static HIMAGELIST (WINAPI *pImageList_LoadImageA)(HINSTANCE, LPCSTR, int, int, COLORREF, UINT, UINT);
static RECT height_change_notify_rect;
static HWND hMainWnd;
static int system_font_height;
......@@ -577,7 +580,7 @@ static void test_layout(void)
check_sizes();
/* an image will increase the band height */
himl = ImageList_LoadImageA(GetModuleHandleA("comctl32"), MAKEINTRESOURCEA(121), 24, 2,
himl = pImageList_LoadImageA(GetModuleHandleA("comctl32"), MAKEINTRESOURCEA(121), 24, 2,
CLR_NONE, IMAGE_BITMAP, LR_DEFAULTCOLOR);
ri.cbSize = sizeof(ri);
ri.fMask = RBIM_IMAGELIST;
......@@ -658,7 +661,7 @@ static void test_layout(void)
rbsize_results_free();
DestroyWindow(hRebar);
ImageList_Destroy(himl);
pImageList_Destroy(himl);
}
#if 0 /* use this to generate more tests */
......@@ -1125,26 +1128,22 @@ static void test_notification(void)
DestroyWindow(rebar);
}
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(ImageList_Destroy);
X(ImageList_LoadImageA);
#undef X
}
START_TEST(rebar)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
INITCOMMONCONTROLSEX iccex;
MSG msg;
init_system_font_height();
/* LoadLibrary is needed. This file has no reference to functions in comctl32 */
hComctl32 = LoadLibraryA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (!pInitCommonControlsEx)
{
win_skip("InitCommonControlsEx() is missing. Skipping the tests\n");
return;
}
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_COOL_CLASSES;
pInitCommonControlsEx(&iccex);
init_functions();
hMainWnd = create_parent_window();
......@@ -1169,6 +1168,4 @@ out:
DispatchMessageA(&msg);
}
DestroyWindow(hMainWnd);
FreeLibrary(hComctl32);
}
......@@ -43,6 +43,8 @@ static INT g_dpisize;
static int g_wmdrawitm_ctr;
static WNDPROC g_wndproc_saved;
static BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
static HWND create_status_control(DWORD style, DWORD exstyle)
{
HWND hWndStatus;
......@@ -584,17 +586,32 @@ static void test_notify(void)
ok(g_got_contextmenu, "WM_RBUTTONUP did not activate the context menu!\n");
}
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(InitCommonControlsEx);
#undef X
}
START_TEST(status)
{
INITCOMMONCONTROLSEX iccex;
init_functions();
hinst = GetModuleHandleA(NULL);
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_BAR_CLASSES;
pInitCommonControlsEx(&iccex);
g_hMainWnd = CreateWindowExA(0, "static", "", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 672+2*GetSystemMetrics(SM_CXSIZEFRAME),
226+GetSystemMetrics(SM_CYCAPTION)+2*GetSystemMetrics(SM_CYSIZEFRAME),
NULL, NULL, GetModuleHandleA(NULL), 0);
InitCommonControls();
register_subclass();
test_status_control();
......
......@@ -286,7 +286,7 @@ static BOOL init_function_pointers(void)
HMODULE hmod;
void *ptr;
hmod = GetModuleHandleA("comctl32.dll");
hmod = LoadLibraryA("comctl32.dll");
ok(hmod != NULL, "got %p\n", hmod);
/* Functions have to be loaded by ordinal. Only XP and W2K3 export
......
......@@ -40,6 +40,11 @@
#define TabWidthPadded(padd_x, num) (DEFAULT_MIN_TAB_WIDTH - (TAB_PADDING_X - (padd_x)) * num)
static HIMAGELIST (WINAPI *pImageList_Create)(INT,INT,UINT,INT,INT);
static BOOL (WINAPI *pImageList_Destroy)(HIMAGELIST);
static INT (WINAPI *pImageList_GetImageCount)(HIMAGELIST);
static INT (WINAPI *pImageList_ReplaceIcon)(HIMAGELIST,INT,HICON);
static void CheckSize(HWND hwnd, INT width, INT height, const char *msg, int line)
{
RECT r;
......@@ -470,7 +475,7 @@ static void test_tab(INT nMinTabWidth)
{
HWND hwTab;
RECT rTab;
HIMAGELIST himl = ImageList_Create(21, 21, ILC_COLOR, 3, 4);
HIMAGELIST himl = pImageList_Create(21, 21, ILC_COLOR, 3, 4);
SIZE size;
HDC hdc;
HFONT hOldFont;
......@@ -608,7 +613,7 @@ static void test_tab(INT nMinTabWidth)
DestroyWindow (hwTab);
ImageList_Destroy(himl);
pImageList_Destroy(himl);
}
static void test_width(void)
......@@ -1165,12 +1170,12 @@ static void test_removeimage(void)
INT i;
TCITEMA item;
HICON hicon;
HIMAGELIST himl = ImageList_Create(16, 16, ILC_COLOR, 3, 4);
HIMAGELIST himl = pImageList_Create(16, 16, ILC_COLOR, 3, 4);
hicon = CreateIcon(NULL, 16, 16, 1, 1, bits, bits);
ImageList_AddIcon(himl, hicon);
ImageList_AddIcon(himl, hicon);
ImageList_AddIcon(himl, hicon);
pImageList_ReplaceIcon(himl, -1, hicon);
pImageList_ReplaceIcon(himl, -1, hicon);
pImageList_ReplaceIcon(himl, -1, hicon);
hwTab = create_tabcontrol(TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE);
SendMessageA(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
......@@ -1185,7 +1190,8 @@ static void test_removeimage(void)
/* remove image middle image */
SendMessageA(hwTab, TCM_REMOVEIMAGE, 1, 0);
expect(2, ImageList_GetImageCount(himl));
i = pImageList_GetImageCount(himl);
ok(i == 2, "Unexpected image count %d.\n", i);
item.iImage = -1;
SendMessageA(hwTab, TCM_GETITEMA, 0, (LPARAM)&item);
expect(0, item.iImage);
......@@ -1197,7 +1203,8 @@ static void test_removeimage(void)
expect(1, item.iImage);
/* remove first image */
SendMessageA(hwTab, TCM_REMOVEIMAGE, 0, 0);
expect(1, ImageList_GetImageCount(himl));
i = pImageList_GetImageCount(himl);
ok(i == 1, "Unexpected image count %d.\n", i);
item.iImage = 0;
SendMessageA(hwTab, TCM_GETITEMA, 0, (LPARAM)&item);
expect(-1, item.iImage);
......@@ -1209,7 +1216,8 @@ static void test_removeimage(void)
expect(0, item.iImage);
/* remove the last one */
SendMessageA(hwTab, TCM_REMOVEIMAGE, 0, 0);
expect(0, ImageList_GetImageCount(himl));
i = pImageList_GetImageCount(himl);
ok(i == 0, "Unexpected image count %d.\n", i);
for(i = 0; i < 3; i++) {
item.iImage = 0;
SendMessageA(hwTab, TCM_GETITEMA, i, (LPARAM)&item);
......@@ -1217,7 +1225,7 @@ static void test_removeimage(void)
}
DestroyWindow(hwTab);
ImageList_Destroy(himl);
pImageList_Destroy(himl);
DestroyIcon(hicon);
}
......@@ -1423,6 +1431,18 @@ static void test_create(void)
}
}
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(ImageList_Create);
X(ImageList_Destroy);
X(ImageList_GetImageCount);
X(ImageList_ReplaceIcon);
#undef X
}
START_TEST(tab)
{
LOGFONTA logfont;
......@@ -1434,7 +1454,7 @@ START_TEST(tab)
logfont.lfCharSet = ANSI_CHARSET;
hFont = CreateFontIndirectA(&logfont);
InitCommonControls();
init_functions();
test_width();
......
......@@ -37,6 +37,13 @@
#define PARENT_SEQ_INDEX 0
#define NUM_MSG_SEQUENCES 1
static HWND (WINAPI *pCreateToolbarEx)(HWND, DWORD, UINT, INT, HINSTANCE, UINT_PTR, const TBBUTTON *,
INT, INT, INT, INT, INT, UINT);
static BOOL (WINAPI *pImageList_Destroy)(HIMAGELIST);
static INT (WINAPI *pImageList_GetImageCount)(HIMAGELIST);
static BOOL (WINAPI *pImageList_GetIconSize)(HIMAGELIST, int *, int *);
static HIMAGELIST (WINAPI *pImageList_LoadImageA)(HINSTANCE, LPCSTR, int, int, COLORREF, UINT, UINT);
static struct msg_sequence *sequences[NUM_MSG_SEQUENCES];
static HWND hMainWnd;
......@@ -376,7 +383,7 @@ static void basic_test(void)
MakeButton(buttons+3, 1003, TBSTYLE_SEP|TBSTYLE_GROUP, 0);
MakeButton(buttons+6, 1006, TBSTYLE_SEP, 0);
hToolbar = CreateToolbarEx(hMainWnd,
hToolbar = pCreateToolbarEx(hMainWnd,
WS_VISIBLE | WS_CLIPCHILDREN | CCS_TOP |
WS_CHILD | TBSTYLE_LIST,
100,
......@@ -482,8 +489,8 @@ static void add_128x15_bitmap(HWND hToolbar, int nCmds)
HIMAGELIST himl = (HIMAGELIST)SendMessageA(hToolbar, TB_GETIMAGELIST, 0, 0); \
ok(himl != NULL, "No image list\n"); \
if (himl != NULL) {\
ok(ImageList_GetImageCount(himl) == count, "Images count mismatch - %d vs %d\n", count, ImageList_GetImageCount(himl)); \
ImageList_GetIconSize(himl, &cx, &cy); \
ok(pImageList_GetImageCount(himl) == count, "Images count mismatch - %d vs %d\n", count, pImageList_GetImageCount(himl)); \
pImageList_GetIconSize(himl, &cx, &cy); \
ok(cx == dx && cy == dy, "Icon size mismatch - %dx%d vs %dx%d\n", dx, dy, cx, cy); \
} \
}
......@@ -515,11 +522,11 @@ static void test_add_bitmap(void)
himl = (HIMAGELIST)SendMessageA(hToolbar, TB_GETIMAGELIST, 0, 0);
ok(himl != NULL, "Got %p\n", himl);
ret = ImageList_GetIconSize(himl, &cx, &cy);
ret = pImageList_GetIconSize(himl, &cx, &cy);
ok(ret, "Got %d\n", ret);
ok(cx == cy, "Got %d x %d\n", cx, cy);
count = ImageList_GetImageCount(himl);
count = pImageList_GetImageCount(himl);
/* Image count */
switch (id)
......@@ -688,7 +695,7 @@ static void test_add_bitmap(void)
/* the control can add bitmaps to an existing image list */
rebuild_toolbar(&hToolbar);
himl = ImageList_LoadImageA(GetModuleHandleA(NULL), (LPCSTR)MAKEINTRESOURCE(IDB_BITMAP_80x15),
himl = pImageList_LoadImageA(GetModuleHandleA(NULL), (LPCSTR)MAKEINTRESOURCE(IDB_BITMAP_80x15),
20, 2, CLR_NONE, IMAGE_BITMAP, LR_DEFAULTCOLOR);
ok(himl != NULL, "failed to create imagelist\n");
ok(SendMessageA(hToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl) == 0, "TB_SETIMAGELIST failed\n");
......@@ -709,7 +716,7 @@ static void test_add_bitmap(void)
addbmp.hInst = HINST_COMMCTRL;
addbmp.nID = IDB_STD_SMALL_COLOR;
rebuild_toolbar(&hToolbar);
ImageList_Destroy(himl);
pImageList_Destroy(himl);
ok(SendMessageA(hToolbar, TB_ADDBITMAP, 1, (LPARAM)&addbmp) == 0, "TB_ADDBITMAP - unexpected return\n");
CHECK_IMAGELIST(15, 16, 16);
......@@ -1506,14 +1513,14 @@ static void test_sizes(void)
/* TB_SETIMAGELIST always changes the height but the width only if necessary */
SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELONG(100, 100));
himl = ImageList_LoadImageA(GetModuleHandleA(NULL), (LPCSTR)MAKEINTRESOURCE(IDB_BITMAP_80x15),
himl = pImageList_LoadImageA(GetModuleHandleA(NULL), (LPCSTR)MAKEINTRESOURCE(IDB_BITMAP_80x15),
20, 2, CLR_NONE, IMAGE_BITMAP, LR_DEFAULTCOLOR);
ok(SendMessageA(hToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl) == 0, "TB_SETIMAGELIST failed\n");
check_button_size(hToolbar, 100, 21);
SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELONG(100, 100));
check_button_size(hToolbar, 100, 100);
/* But there are no update when we change imagelist, and image sizes are the same */
himl2 = ImageList_LoadImageA(GetModuleHandleA(NULL), (LPCSTR)MAKEINTRESOURCE(IDB_BITMAP_128x15),
himl2 = pImageList_LoadImageA(GetModuleHandleA(NULL), (LPCSTR)MAKEINTRESOURCE(IDB_BITMAP_128x15),
20, 2, CLR_NONE, IMAGE_BITMAP, LR_DEFAULTCOLOR);
ok(SendMessageA(hToolbar, TB_SETIMAGELIST, 0, (LRESULT)himl2) == (LRESULT)himl, "TB_SETIMAGELIST failed\n");
check_button_size(hToolbar, 100, 100);
......@@ -1538,8 +1545,8 @@ static void test_sizes(void)
check_sizes_todo(0x30); /* some small problems with BTNS_AUTOSIZE button sizes */
rebuild_toolbar(&hToolbar);
ImageList_Destroy(himl);
ImageList_Destroy(himl2);
pImageList_Destroy(himl);
pImageList_Destroy(himl2);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[3]);
check_button_size(hToolbar, 7 + string_width(STRING2), 23 + fontheight);
......@@ -1823,43 +1830,43 @@ static void test_createtoolbarex(void)
TBBUTTON btns[3];
ZeroMemory(&btns, sizeof(btns));
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
hToolbar = pCreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
3, 20, 20, 16, 16, sizeof(TBBUTTON));
CHECK_IMAGELIST(16, 20, 20);
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x1a001b, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
hToolbar = pCreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
3, 4, 4, 16, 16, sizeof(TBBUTTON));
CHECK_IMAGELIST(32, 4, 4);
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0xa000b, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
hToolbar = pCreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
3, 0, 8, 12, 12, sizeof(TBBUTTON));
CHECK_IMAGELIST(16, 12, 12);
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x120013, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
hToolbar = pCreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
3, -1, 8, 12, 12, sizeof(TBBUTTON));
CHECK_IMAGELIST(16, 12, 8);
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0xe0013, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
hToolbar = pCreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
3, -1, 8, -1, 12, sizeof(TBBUTTON));
CHECK_IMAGELIST(16, 16, 8);
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0xe0017, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
hToolbar = pCreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
3, 0, 0, 12, -1, sizeof(TBBUTTON));
CHECK_IMAGELIST(16, 12, 16);
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x160013, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
hToolbar = pCreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandleA(NULL), IDB_BITMAP_128x15, btns,
3, 0, 0, 0, 12, sizeof(TBBUTTON));
CHECK_IMAGELIST(16, 16, 16);
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x160017, "%x");
......@@ -1928,7 +1935,7 @@ static void test_setrows(void)
MakeButton(buttons+i, 1000+i, TBSTYLE_FLAT | TBSTYLE_CHECKGROUP, 0);
/* Test 1 - 9 buttons */
hToolbar = CreateToolbarEx(hMainWnd,
hToolbar = pCreateToolbarEx(hMainWnd,
WS_VISIBLE | WS_CLIPCHILDREN | WS_CHILD | CCS_NORESIZE | CCS_NOPARENTALIGN
| CCS_NOMOVEY | CCS_TOP,
0,
......@@ -2047,7 +2054,7 @@ static void test_get_set_style(void)
MakeButton(buttons+3, 1003, TBSTYLE_SEP|TBSTYLE_GROUP, 0);
MakeButton(buttons+6, 1006, TBSTYLE_SEP, 0);
hToolbar = CreateToolbarEx(hMainWnd,
hToolbar = pCreateToolbarEx(hMainWnd,
WS_VISIBLE | WS_CLIPCHILDREN | CCS_TOP |
WS_CHILD | TBSTYLE_LIST,
100,
......@@ -2507,6 +2514,19 @@ static void test_imagelist(void)
DestroyWindow(hwnd);
}
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(CreateToolbarEx);
X(ImageList_GetIconSize);
X(ImageList_GetImageCount);
X(ImageList_LoadImageA);
X(ImageList_Destroy);
#undef X
}
START_TEST(toolbar)
{
WNDCLASSA wc;
......@@ -2514,9 +2534,8 @@ START_TEST(toolbar)
RECT rc;
init_msg_sequences(sequences, NUM_MSG_SEQUENCES);
init_functions();
InitCommonControls();
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
......
......@@ -1057,7 +1057,7 @@ static void test_margin(void)
START_TEST(tooltips)
{
InitCommonControls();
LoadLibraryA("comctl32.dll");
test_create_tooltip();
test_customdraw();
......
......@@ -1296,8 +1296,9 @@ static void test_create(void)
START_TEST(trackbar)
{
LoadLibraryA("comctl32.dll");
init_msg_sequences(sequences, NUM_MSG_SEQUENCE);
InitCommonControls();
/* create parent window */
hWndParent = create_parent_window();
......
......@@ -33,6 +33,7 @@
#include "v6util.h"
#include "msg.h"
static BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
static const char *TEST_CALLBACK_TEXT = "callback_text";
static TVITEMA g_item_expanding, g_item_expanded;
......@@ -2666,27 +2667,28 @@ static void test_right_click(void)
DestroyWindow(hTree);
}
static void init_functions(void)
{
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
X(InitCommonControlsEx);
#undef X
}
START_TEST(treeview)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
INITCOMMONCONTROLSEX iccex;
ULONG_PTR ctx_cookie;
HANDLE hCtx;
WNDCLASSA wc;
MSG msg;
ULONG_PTR ctx_cookie;
HANDLE hCtx;
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (pInitCommonControlsEx)
{
INITCOMMONCONTROLSEX iccex;
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_TREEVIEW_CLASSES;
pInitCommonControlsEx(&iccex);
}
else
InitCommonControls();
init_functions();
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_TREEVIEW_CLASSES;
pInitCommonControlsEx(&iccex);
init_msg_sequences(sequences, NUM_MSG_SEQUENCES);
init_msg_sequences(item_sequence, 1);
......
......@@ -63,6 +63,8 @@
static HWND parent_wnd, g_edit;
static HWND (WINAPI *pCreateUpDownControl)(DWORD, INT, INT, INT, INT,
HWND, INT, HINSTANCE, HWND, INT, INT, INT);
static BOOL (WINAPI *pSetWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
static struct msg_sequence *sequences[NUM_MSG_SEQUENCES];
......@@ -882,7 +884,7 @@ static void test_CreateUpDownControl(void)
RECT rect;
GetClientRect(parent_wnd, &rect);
updown = CreateUpDownControl(WS_CHILD | WS_BORDER | WS_VISIBLE,
updown = pCreateUpDownControl(WS_CHILD | WS_BORDER | WS_VISIBLE,
0, 0, rect.right, rect.bottom, parent_wnd, 1, GetModuleHandleA(NULL), g_edit, 100, 10, 50);
ok(updown != NULL, "Failed to create control.\n");
......@@ -898,13 +900,22 @@ static void test_CreateUpDownControl(void)
DestroyWindow(updown);
}
START_TEST(updown)
static void init_functions(void)
{
HMODULE mod = GetModuleHandleA("comctl32.dll");
HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
#define X2(f, ord) p##f = (void*)GetProcAddress(hComCtl32, (const char *)ord);
X(CreateUpDownControl);
X2(SetWindowSubclass, 410);
#undef X
#undef X2
}
pSetWindowSubclass = (void*)GetProcAddress(mod, (LPSTR)410);
START_TEST(updown)
{
init_functions();
InitCommonControls();
init_msg_sequences(sequences, NUM_MSG_SEQUENCES);
parent_wnd = create_parent_window();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment