[COMCTL32_WINETEST]

* Sync with Wine 1.7.17.
CORE-8080

svn path=/trunk/; revision=62880
This commit is contained in:
Amine Khaldi 2014-04-22 14:05:48 +00:00
parent 9bf892c309
commit 03535e5b35
28 changed files with 3359 additions and 2344 deletions

View file

@ -4,6 +4,7 @@ remove_definitions(-D_WIN32_WINNT=0x502 -D_WIN32_IE=0x600)
add_definitions(-DUSE_WINE_TODOS)
list(APPEND SOURCE
button.c
comboex.c
datetime.c
dpa.c

View file

@ -0,0 +1,819 @@
/* Unit test suite for Button control.
*
* Copyright 1999 Ove Kaaven
* Copyright 2003 Dimitrie O. Paun
* Copyright 2004, 2005 Dmitry Timoshkov
* Copyright 2014 Nikolay Sivov for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
//#include <windows.h>
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <wingdi.h>
#include <winuser.h>
#include <commctrl.h>
#include "wine/test.h"
#include "v6util.h"
#include "msg.h"
#define IS_WNDPROC_HANDLE(x) (((ULONG_PTR)(x) >> 16) == (~0u >> 16))
static BOOL (WINAPI *pSetWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
static BOOL (WINAPI *pRemoveWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR);
static LRESULT (WINAPI *pDefSubclassProc)(HWND, UINT, WPARAM, LPARAM);
/****************** button message test *************************/
#define ID_BUTTON 0x000e
#define COMBINED_SEQ_INDEX 0
#define NUM_MSG_SEQUENCES 1
static struct msg_sequence *sequences[NUM_MSG_SEQUENCES];
struct wndclass_redirect_data
{
ULONG size;
DWORD res;
ULONG name_len;
ULONG name_offset;
ULONG module_len;
ULONG module_offset;
};
/* returned pointer is valid as long as activation context is alive */
static WCHAR* get_versioned_classname(const WCHAR *name)
{
BOOL (WINAPI *pFindActCtxSectionStringW)(DWORD,const GUID *,ULONG,LPCWSTR,PACTCTX_SECTION_KEYED_DATA);
struct wndclass_redirect_data *wnddata;
ACTCTX_SECTION_KEYED_DATA data;
BOOL ret;
pFindActCtxSectionStringW = (void*)GetProcAddress(GetModuleHandleA("kernel32"), "FindActCtxSectionStringW");
memset(&data, 0, sizeof(data));
data.cbSize = sizeof(data);
ret = pFindActCtxSectionStringW(0, NULL,
ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION,
name, &data);
ok(ret, "got %d, error %u\n", ret, GetLastError());
wnddata = (struct wndclass_redirect_data*)data.lpData;
return (WCHAR*)((BYTE*)wnddata + wnddata->name_offset);
}
static void init_functions(void)
{
HMODULE hmod = GetModuleHandleA("comctl32.dll");
ok(hmod != NULL, "got %p\n", hmod);
#define MAKEFUNC_ORD(f, ord) (p##f = (void*)GetProcAddress(hmod, (LPSTR)(ord)))
MAKEFUNC_ORD(SetWindowSubclass, 410);
MAKEFUNC_ORD(RemoveWindowSubclass, 412);
MAKEFUNC_ORD(DefSubclassProc, 413);
#undef MAKEFUNC_ORD
}
/* try to make sure pending X events have been processed before continuing */
static void flush_events(void)
{
MSG msg;
int diff = 200;
int min_timeout = 100;
DWORD time = GetTickCount() + diff;
while (diff > 0)
{
if (MsgWaitForMultipleObjects( 0, NULL, FALSE, min_timeout, QS_ALLINPUT ) == WAIT_TIMEOUT) break;
while (PeekMessageA( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
diff = time - GetTickCount();
}
}
static BOOL ignore_message( UINT message )
{
/* these are always ignored */
return (message >= 0xc000 ||
message == WM_GETICON ||
message == WM_GETOBJECT ||
message == WM_TIMECHANGE ||
message == WM_DISPLAYCHANGE ||
message == WM_DEVICECHANGE ||
message == WM_DWMNCRENDERINGCHANGED ||
message == WM_GETTEXTLENGTH ||
message == WM_GETTEXT);
}
static LRESULT CALLBACK button_subclass_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, UINT_PTR id, DWORD_PTR ref_data)
{
static LONG defwndproc_counter = 0;
LRESULT ret;
struct message msg;
if (ignore_message( message )) return pDefSubclassProc(hwnd, message, wParam, lParam);
switch (message)
{
case WM_SYNCPAINT:
break;
case BM_SETSTATE:
if (GetCapture())
ok(GetCapture() == hwnd, "GetCapture() = %p\n", GetCapture());
/* fall through */
default:
msg.message = message;
msg.flags = sent|wparam|lparam;
if (defwndproc_counter) msg.flags |= defwinproc;
msg.wParam = wParam;
msg.lParam = lParam;
add_message(sequences, COMBINED_SEQ_INDEX, &msg);
}
if (message == WM_NCDESTROY)
pRemoveWindowSubclass(hwnd, button_subclass_proc, 0);
defwndproc_counter++;
ret = pDefSubclassProc(hwnd, message, wParam, lParam);
defwndproc_counter--;
return ret;
}
static LRESULT WINAPI test_parent_wndproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static LONG defwndproc_counter = 0;
static LONG beginpaint_counter = 0;
LRESULT ret;
struct message msg;
if (ignore_message( message )) return 0;
if (message == WM_PARENTNOTIFY || message == WM_CANCELMODE ||
message == WM_SETFOCUS || message == WM_KILLFOCUS ||
message == WM_ENABLE || message == WM_ENTERIDLE ||
message == WM_DRAWITEM || message == WM_COMMAND ||
message == WM_IME_SETCONTEXT)
{
switch (message)
{
/* ignore */
case WM_NCHITTEST:
return HTCLIENT;
case WM_SETCURSOR:
case WM_MOUSEMOVE:
case WM_NCMOUSEMOVE:
return 0;
}
msg.message = message;
msg.flags = sent|parent|wparam|lparam;
if (defwndproc_counter) msg.flags |= defwinproc;
if (beginpaint_counter) msg.flags |= beginpaint;
msg.wParam = wParam;
msg.lParam = lParam;
add_message(sequences, COMBINED_SEQ_INDEX, &msg);
}
if (message == WM_PAINT)
{
PAINTSTRUCT ps;
beginpaint_counter++;
BeginPaint( hwnd, &ps );
beginpaint_counter--;
EndPaint( hwnd, &ps );
return 0;
}
defwndproc_counter++;
ret = DefWindowProcA(hwnd, message, wParam, lParam);
defwndproc_counter--;
return ret;
}
static const struct message setfocus_seq[] =
{
{ WM_IME_SETCONTEXT, sent|wparam|optional, 1 },
{ WM_IME_NOTIFY, sent|wparam|defwinproc|optional, 2 },
{ WM_SETFOCUS, sent|wparam },
{ WM_COMMAND, sent|wparam|parent, MAKEWPARAM(ID_BUTTON, BN_SETFOCUS) },
{ WM_APP, sent|wparam|lparam },
{ WM_PAINT, sent },
{ 0 }
};
static const struct message killfocus_seq[] =
{
{ WM_KILLFOCUS, sent|wparam, 0 },
{ WM_COMMAND, sent|wparam|parent, MAKEWPARAM(ID_BUTTON, BN_KILLFOCUS) },
{ WM_IME_SETCONTEXT, sent|wparam|optional, 0 },
{ WM_IME_NOTIFY, sent|wparam|defwinproc|optional, 1 },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ 0 }
};
static const struct message setfocus_static_seq[] =
{
{ WM_IME_SETCONTEXT, sent|wparam|optional, 1 },
{ WM_IME_NOTIFY, sent|wparam|defwinproc|optional, 2 },
{ WM_SETFOCUS, sent|wparam, 0 },
{ WM_COMMAND, sent|wparam|parent, MAKEWPARAM(ID_BUTTON, BN_SETFOCUS) },
{ WM_COMMAND, sent|wparam|parent|optional, MAKEWPARAM(ID_BUTTON, BN_CLICKED) }, /* radio button */
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ 0 }
};
static const struct message setfocus_groupbox_seq[] =
{
{ WM_IME_SETCONTEXT, sent|wparam|optional, 1 },
{ WM_IME_NOTIFY, sent|wparam|defwinproc|optional, 2 },
{ WM_SETFOCUS, sent|wparam, 0 },
{ WM_COMMAND, sent|wparam|parent, MAKEWPARAM(ID_BUTTON, BN_SETFOCUS) },
{ WM_COMMAND, sent|wparam|parent|optional, MAKEWPARAM(ID_BUTTON, BN_CLICKED) }, /* radio button */
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ 0 }
};
static const struct message killfocus_static_seq[] =
{
{ WM_KILLFOCUS, sent|wparam, 0 },
{ WM_COMMAND, sent|wparam|parent, MAKEWPARAM(ID_BUTTON, BN_KILLFOCUS) },
{ WM_IME_SETCONTEXT, sent|wparam|optional, 0 },
{ WM_IME_NOTIFY, sent|wparam|defwinproc|optional, 1 },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ 0 }
};
static const struct message setfocus_ownerdraw_seq[] =
{
{ WM_IME_SETCONTEXT, sent|wparam|optional, 1 },
{ WM_IME_NOTIFY, sent|wparam|defwinproc|optional, 2 },
{ WM_SETFOCUS, sent|wparam, 0 },
{ WM_DRAWITEM, sent|wparam|parent, ID_BUTTON },
{ WM_COMMAND, sent|wparam|parent, MAKEWPARAM(ID_BUTTON, BN_SETFOCUS) },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_IME_SETCONTEXT, sent|wparam|optional, 1 },
{ 0 }
};
static const struct message killfocus_ownerdraw_seq[] =
{
{ WM_KILLFOCUS, sent|wparam, 0 },
{ WM_COMMAND, sent|wparam|parent, MAKEWPARAM(ID_BUTTON, BN_KILLFOCUS) },
{ WM_IME_SETCONTEXT, sent|wparam|optional, 0 },
{ WM_IME_NOTIFY, sent|wparam|defwinproc|optional, 1 },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_DRAWITEM, sent|wparam|parent, ID_BUTTON },
{ 0 }
};
static const struct message lbuttondown_seq[] =
{
{ WM_LBUTTONDOWN, sent|wparam|lparam, 0, 0 },
{ WM_IME_SETCONTEXT, sent|wparam|defwinproc|optional, 1 },
{ WM_IME_NOTIFY, sent|wparam|defwinproc|optional, 2 },
{ WM_SETFOCUS, sent|wparam|defwinproc, 0 },
{ BM_SETSTATE, sent|wparam|defwinproc, TRUE },
{ 0 }
};
static const struct message lbuttonup_seq[] =
{
{ WM_LBUTTONUP, sent|wparam|lparam, 0, 0 },
{ BM_SETSTATE, sent|wparam|defwinproc, FALSE },
{ WM_CAPTURECHANGED, sent|wparam|defwinproc, 0 },
{ WM_COMMAND, sent|wparam|defwinproc, 0 },
{ 0 }
};
static const struct message setfont_seq[] =
{
{ WM_SETFONT, sent },
{ 0 }
};
static const struct message setstyle_seq[] =
{
{ BM_SETSTYLE, sent },
{ WM_STYLECHANGING, sent|wparam|defwinproc, GWL_STYLE },
{ WM_STYLECHANGED, sent|wparam|defwinproc, GWL_STYLE },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|defwinproc|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ 0 }
};
static const struct message setstyle_static_seq[] =
{
{ BM_SETSTYLE, sent },
{ WM_STYLECHANGING, sent|wparam|defwinproc, GWL_STYLE },
{ WM_STYLECHANGED, sent|wparam|defwinproc, GWL_STYLE },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|defwinproc|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ 0 }
};
static const struct message setstyle_user_seq[] =
{
{ BM_SETSTYLE, sent },
{ WM_STYLECHANGING, sent|wparam|defwinproc, GWL_STYLE },
{ WM_STYLECHANGED, sent|wparam|defwinproc, GWL_STYLE },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|defwinproc|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ 0 }
};
static const struct message setstyle_ownerdraw_seq[] =
{
{ BM_SETSTYLE, sent },
{ WM_STYLECHANGING, sent|wparam|defwinproc, GWL_STYLE },
{ WM_STYLECHANGED, sent|wparam|defwinproc, GWL_STYLE },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ WM_DRAWITEM, sent|wparam|parent, ID_BUTTON },
{ 0 }
};
static const struct message setstate_seq[] =
{
{ BM_SETSTATE, sent },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ 0 }
};
static const struct message setstate_static_seq[] =
{
{ BM_SETSTATE, sent },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ 0 }
};
static const struct message setstate_user_seq[] =
{
{ BM_SETSTATE, sent },
{ WM_COMMAND, sent|wparam|parent, MAKEWPARAM(ID_BUTTON, BN_HILITE) },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ 0 }
};
static const struct message setstate_ownerdraw_seq[] =
{
{ BM_SETSTATE, sent },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ WM_DRAWITEM, sent|wparam|parent, ID_BUTTON },
{ 0 }
};
static const struct message clearstate_seq[] =
{
{ BM_SETSTATE, sent },
{ WM_COMMAND, sent|wparam|parent, MAKEWPARAM(ID_BUTTON, BN_UNHILITE) },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ 0 }
};
static const struct message clearstate_ownerdraw_seq[] =
{
{ BM_SETSTATE, sent },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ WM_DRAWITEM, sent|wparam|parent, ID_BUTTON },
{ 0 }
};
static const struct message setcheck_ignored_seq[] =
{
{ BM_SETCHECK, sent },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ 0 }
};
static const struct message setcheck_uncheck_seq[] =
{
{ BM_SETCHECK, sent },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ 0 }
};
static const struct message setcheck_static_seq[] =
{
{ BM_SETCHECK, sent },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ 0 }
};
static const struct message setcheck_radio_seq[] =
{
{ BM_SETCHECK, sent },
{ WM_STYLECHANGING, sent|wparam|defwinproc, GWL_STYLE },
{ WM_STYLECHANGED, sent|wparam|defwinproc, GWL_STYLE },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ 0 }
};
static const struct message setcheck_radio_redraw_seq[] =
{
{ BM_SETCHECK, sent },
{ WM_STYLECHANGING, sent|wparam|defwinproc, GWL_STYLE },
{ WM_STYLECHANGED, sent|wparam|defwinproc, GWL_STYLE },
{ WM_APP, sent|wparam|lparam, 0, 0 },
{ WM_PAINT, sent },
{ WM_NCPAINT, sent|optional }, /* FIXME: Wine sends it */
{ WM_ERASEBKGND, sent|defwinproc|optional },
{ 0 }
};
static HWND create_button(DWORD style, HWND parent)
{
HMENU menuid = 0;
HWND hwnd;
if (parent)
{
style |= WS_CHILD|BS_NOTIFY;
menuid = (HMENU)ID_BUTTON;
}
hwnd = CreateWindowExA(0, "Button", "test", style, 0, 0, 50, 14, parent, menuid, 0, NULL);
ok(hwnd != NULL, "failed to create a button, 0x%08x, %p\n", style, parent);
pSetWindowSubclass(hwnd, button_subclass_proc, 0, 0);
return hwnd;
}
static void test_button_messages(void)
{
static const struct
{
DWORD style;
DWORD dlg_code;
const struct message *setfocus;
const struct message *killfocus;
const struct message *setstyle;
const struct message *setstate;
const struct message *clearstate;
const struct message *setcheck;
} button[] = {
{ BS_PUSHBUTTON, DLGC_BUTTON | DLGC_UNDEFPUSHBUTTON,
setfocus_seq, killfocus_seq, setstyle_seq,
setstate_seq, setstate_seq, setcheck_ignored_seq },
{ BS_DEFPUSHBUTTON, DLGC_BUTTON | DLGC_DEFPUSHBUTTON,
setfocus_seq, killfocus_seq, setstyle_seq,
setstate_seq, setstate_seq, setcheck_ignored_seq },
{ BS_CHECKBOX, DLGC_BUTTON,
setfocus_static_seq, killfocus_static_seq, setstyle_static_seq,
setstate_static_seq, setstate_static_seq, setcheck_static_seq },
{ BS_AUTOCHECKBOX, DLGC_BUTTON,
setfocus_static_seq, killfocus_static_seq, setstyle_static_seq,
setstate_static_seq, setstate_static_seq, setcheck_static_seq },
{ BS_RADIOBUTTON, DLGC_BUTTON | DLGC_RADIOBUTTON,
setfocus_static_seq, killfocus_static_seq, setstyle_static_seq,
setstate_static_seq, setstate_static_seq, setcheck_radio_redraw_seq },
{ BS_3STATE, DLGC_BUTTON,
setfocus_static_seq, killfocus_static_seq, setstyle_static_seq,
setstate_static_seq, setstate_static_seq, setcheck_static_seq },
{ BS_AUTO3STATE, DLGC_BUTTON,
setfocus_static_seq, killfocus_static_seq, setstyle_static_seq,
setstate_static_seq, setstate_static_seq, setcheck_static_seq },
{ BS_GROUPBOX, DLGC_STATIC,
setfocus_groupbox_seq, killfocus_static_seq, setstyle_static_seq,
setstate_static_seq, setstate_static_seq, setcheck_ignored_seq },
{ BS_USERBUTTON, DLGC_BUTTON | DLGC_UNDEFPUSHBUTTON,
setfocus_seq, killfocus_seq, setstyle_user_seq,
setstate_user_seq, clearstate_seq, setcheck_ignored_seq },
{ BS_AUTORADIOBUTTON, DLGC_BUTTON | DLGC_RADIOBUTTON,
setfocus_static_seq, killfocus_static_seq, setstyle_static_seq,
setstate_static_seq, setstate_static_seq, setcheck_radio_redraw_seq },
{ BS_OWNERDRAW, DLGC_BUTTON,
setfocus_ownerdraw_seq, killfocus_ownerdraw_seq, setstyle_ownerdraw_seq,
setstate_ownerdraw_seq, clearstate_ownerdraw_seq, setcheck_ignored_seq },
};
const struct message *seq;
unsigned int i;
HWND hwnd, parent;
DWORD dlg_code;
HFONT zfont;
BOOL todo;
/* selection with VK_SPACE should capture button window */
hwnd = create_button(BS_CHECKBOX | WS_VISIBLE | WS_POPUP, NULL);
ok(hwnd != 0, "Failed to create button window\n");
ReleaseCapture();
SetFocus(hwnd);
SendMessageA(hwnd, WM_KEYDOWN, VK_SPACE, 0);
ok(GetCapture() == hwnd, "Should be captured on VK_SPACE WM_KEYDOWN\n");
SendMessageA(hwnd, WM_KEYUP, VK_SPACE, 0);
DestroyWindow(hwnd);
parent = CreateWindowExA(0, "TestParentClass", "Test parent", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
100, 100, 200, 200, 0, 0, 0, NULL);
ok(parent != 0, "Failed to create parent window\n");
for (i = 0; i < sizeof(button)/sizeof(button[0]); i++)
{
MSG msg;
DWORD style, state;
trace("%d: button test sequence\n", i);
hwnd = create_button(button[i].style, parent);
style = GetWindowLongA(hwnd, GWL_STYLE);
style &= ~(WS_CHILD | BS_NOTIFY);
/* XP turns a BS_USERBUTTON into BS_PUSHBUTTON */
if (button[i].style == BS_USERBUTTON)
ok(style == BS_PUSHBUTTON, "expected style BS_PUSHBUTTON got %x\n", style);
else
ok(style == button[i].style, "expected style %x got %x\n", button[i].style, style);
dlg_code = SendMessageA(hwnd, WM_GETDLGCODE, 0, 0);
ok(dlg_code == button[i].dlg_code, "%u: wrong dlg_code %08x\n", i, dlg_code);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
SetFocus(0);
flush_events();
SetFocus(0);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
todo = button[i].style != BS_OWNERDRAW;
ok(GetFocus() == 0, "expected focus 0, got %p\n", GetFocus());
SetFocus(hwnd);
SendMessageA(hwnd, WM_APP, 0, 0); /* place a separator mark here */
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
ok_sequence(sequences, COMBINED_SEQ_INDEX, button[i].setfocus, "SetFocus(hwnd) on a button", todo);
todo = button[i].style == BS_OWNERDRAW;
SetFocus(0);
SendMessageA(hwnd, WM_APP, 0, 0); /* place a separator mark here */
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
ok_sequence(sequences, COMBINED_SEQ_INDEX, button[i].killfocus, "SetFocus(0) on a button", todo);
ok(GetFocus() == 0, "expected focus 0, got %p\n", GetFocus());
SendMessageA(hwnd, BM_SETSTYLE, button[i].style | BS_BOTTOM, TRUE);
SendMessageA(hwnd, WM_APP, 0, 0); /* place a separator mark here */
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
ok_sequence(sequences, COMBINED_SEQ_INDEX, button[i].setstyle, "BM_SETSTYLE on a button", TRUE);
style = GetWindowLongA(hwnd, GWL_STYLE);
style &= ~(WS_VISIBLE | WS_CHILD | BS_NOTIFY);
/* XP doesn't turn a BS_USERBUTTON into BS_PUSHBUTTON here! */
ok(style == button[i].style, "expected style %04x got %04x\n", button[i].style, style);
state = SendMessageA(hwnd, BM_GETSTATE, 0, 0);
ok(state == 0, "expected state 0, got %04x\n", state);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
SendMessageA(hwnd, BM_SETSTATE, TRUE, 0);
SendMessageA(hwnd, WM_APP, 0, 0); /* place a separator mark here */
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
ok_sequence(sequences, COMBINED_SEQ_INDEX, button[i].setstate, "BM_SETSTATE/TRUE on a button", TRUE);
state = SendMessageA(hwnd, BM_GETSTATE, 0, 0);
ok(state == BST_PUSHED, "expected state 0x0004, got %04x\n", state);
style = GetWindowLongA(hwnd, GWL_STYLE);
style &= ~(WS_CHILD | BS_NOTIFY | WS_VISIBLE);
ok(style == button[i].style, "expected style %04x got %04x\n", button[i].style, style);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
SendMessageA(hwnd, BM_SETSTATE, FALSE, 0);
SendMessageA(hwnd, WM_APP, 0, 0); /* place a separator mark here */
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
ok_sequence(sequences, COMBINED_SEQ_INDEX, button[i].clearstate, "BM_SETSTATE/FALSE on a button", TRUE);
state = SendMessageA(hwnd, BM_GETSTATE, 0, 0);
ok(state == 0, "expected state 0, got %04x\n", state);
style = GetWindowLongA(hwnd, GWL_STYLE);
style &= ~(WS_CHILD | BS_NOTIFY | WS_VISIBLE);
ok(style == button[i].style, "expected style %04x got %04x\n", button[i].style, style);
state = SendMessageA(hwnd, BM_GETCHECK, 0, 0);
ok(state == BST_UNCHECKED, "expected BST_UNCHECKED, got %04x\n", state);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
if (button[i].style == BS_RADIOBUTTON ||
button[i].style == BS_AUTORADIOBUTTON)
{
seq = setcheck_radio_seq;
todo = TRUE;
}
else
{
seq = setcheck_ignored_seq;
todo = FALSE;
}
SendMessageA(hwnd, BM_SETCHECK, BST_UNCHECKED, 0);
SendMessageA(hwnd, WM_APP, 0, 0); /* place a separator mark here */
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
ok_sequence(sequences, COMBINED_SEQ_INDEX, seq, "BM_SETCHECK on a button", todo);
state = SendMessageA(hwnd, BM_GETCHECK, 0, 0);
ok(state == BST_UNCHECKED, "expected BST_UNCHECKED, got %04x\n", state);
style = GetWindowLongA(hwnd, GWL_STYLE);
style &= ~(WS_CHILD | BS_NOTIFY | WS_VISIBLE);
ok(style == button[i].style, "expected style %04x got %04x\n", button[i].style, style);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
SendMessageA(hwnd, BM_SETCHECK, BST_CHECKED, 0);
SendMessageA(hwnd, WM_APP, 0, 0); /* place a separator mark here */
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
if (button[i].style == BS_PUSHBUTTON ||
button[i].style == BS_DEFPUSHBUTTON ||
button[i].style == BS_GROUPBOX ||
button[i].style == BS_USERBUTTON ||
button[i].style == BS_OWNERDRAW)
{
ok_sequence(sequences, COMBINED_SEQ_INDEX, button[i].setcheck, "BM_SETCHECK on a button", FALSE);
state = SendMessageA(hwnd, BM_GETCHECK, 0, 0);
ok(state == BST_UNCHECKED, "expected check BST_UNCHECKED, got %04x\n", state);
}
else
{
ok_sequence(sequences, COMBINED_SEQ_INDEX, button[i].setcheck, "BM_SETCHECK on a button", TRUE);
state = SendMessageA(hwnd, BM_GETCHECK, 0, 0);
ok(state == BST_CHECKED, "expected check BST_CHECKED, got %04x\n", state);
}
style = GetWindowLongA(hwnd, GWL_STYLE);
style &= ~(WS_CHILD | BS_NOTIFY | WS_VISIBLE);
if (button[i].style == BS_RADIOBUTTON ||
button[i].style == BS_AUTORADIOBUTTON)
ok(style == (button[i].style | WS_TABSTOP), "expected style %04x | WS_TABSTOP got %04x\n", button[i].style, style);
else
ok(style == button[i].style, "expected style %04x got %04x\n", button[i].style, style);
DestroyWindow(hwnd);
}
DestroyWindow(parent);
hwnd = create_button(BS_PUSHBUTTON, NULL);
SetForegroundWindow(hwnd);
flush_events();
SetActiveWindow(hwnd);
SetFocus(0);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
SendMessageA(hwnd, WM_LBUTTONDOWN, 0, 0);
ok_sequence(sequences, COMBINED_SEQ_INDEX, lbuttondown_seq, "WM_LBUTTONDOWN on a button", FALSE);
SendMessageA(hwnd, WM_LBUTTONUP, 0, 0);
ok_sequence(sequences, COMBINED_SEQ_INDEX, lbuttonup_seq, "WM_LBUTTONUP on a button", TRUE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
zfont = GetStockObject(SYSTEM_FONT);
SendMessageA(hwnd, WM_SETFONT, (WPARAM)zfont, TRUE);
UpdateWindow(hwnd);
ok_sequence(sequences, COMBINED_SEQ_INDEX, setfont_seq, "WM_SETFONT on a button", FALSE);
DestroyWindow(hwnd);
}
static void test_button_class(void)
{
static const WCHAR testW[] = {'t','e','s','t',0};
WNDCLASSEXW exW, ex2W;
WNDCLASSEXA exA;
char buffA[100];
WCHAR *nameW;
HWND hwnd;
BOOL ret;
int len;
ret = GetClassInfoExA(NULL, WC_BUTTONA, &exA);
ok(ret, "got %d\n", ret);
todo_wine
ok(IS_WNDPROC_HANDLE(exA.lpfnWndProc), "got %p\n", exA.lpfnWndProc);
ret = GetClassInfoExW(NULL, WC_BUTTONW, &exW);
ok(ret, "got %d\n", ret);
ok(!IS_WNDPROC_HANDLE(exW.lpfnWndProc), "got %p\n", exW.lpfnWndProc);
/* check that versioned class is also accessible */
nameW = get_versioned_classname(WC_BUTTONW);
ok(lstrcmpW(nameW, WC_BUTTONW), "got %s\n", wine_dbgstr_w(nameW));
ret = GetClassInfoExW(NULL, nameW, &ex2W);
todo_wine {
ok(ret, "got %d\n", ret);
ok(ex2W.lpfnWndProc == exW.lpfnWndProc, "got %p, %p\n", exW.lpfnWndProc, ex2W.lpfnWndProc);
}
/* Check reported class name */
hwnd = create_button(BS_CHECKBOX, NULL);
len = GetClassNameA(hwnd, buffA, sizeof(buffA));
ok(len == strlen(buffA), "got %d\n", len);
ok(!strcmp(buffA, "Button"), "got %s\n", buffA);
len = RealGetWindowClassA(hwnd, buffA, sizeof(buffA));
ok(len == strlen(buffA), "got %d\n", len);
ok(!strcmp(buffA, "Button"), "got %s\n", buffA);
DestroyWindow(hwnd);
/* explicitely create with versioned class name */
hwnd = CreateWindowExW(0, nameW, testW, BS_CHECKBOX, 0, 0, 50, 14, NULL, 0, 0, NULL);
todo_wine
ok(hwnd != NULL, "failed to create a window %s\n", wine_dbgstr_w(nameW));
if (hwnd)
{
len = GetClassNameA(hwnd, buffA, sizeof(buffA));
ok(len == strlen(buffA), "got %d\n", len);
ok(!strcmp(buffA, "Button"), "got %s\n", buffA);
len = RealGetWindowClassA(hwnd, buffA, sizeof(buffA));
ok(len == strlen(buffA), "got %d\n", len);
ok(!strcmp(buffA, "Button"), "got %s\n", buffA);
DestroyWindow(hwnd);
}
}
static void register_parent_class(void)
{
WNDCLASSA cls;
cls.style = 0;
cls.lpfnWndProc = test_parent_wndproc;
cls.cbClsExtra = 0;
cls.cbWndExtra = 0;
cls.hInstance = GetModuleHandleA(0);
cls.hIcon = 0;
cls.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
cls.hbrBackground = GetStockObject(WHITE_BRUSH);
cls.lpszMenuName = NULL;
cls.lpszClassName = "TestParentClass";
RegisterClassA(&cls);
}
START_TEST(button)
{
ULONG_PTR ctx_cookie;
HANDLE hCtx;
if (!load_v6_module(&ctx_cookie, &hCtx))
return;
register_parent_class();
init_functions();
init_msg_sequences(sequences, NUM_MSG_SEQUENCES);
test_button_class();
test_button_messages();
unload_v6_module(ctx_cookie, hCtx);
}

View file

@ -53,37 +53,37 @@ static HWND createComboEx(DWORD style) {
hComboExParentWnd, NULL, hMainHinst, NULL);
}
static LONG addItem(HWND cbex, int idx, LPTSTR text) {
COMBOBOXEXITEM cbexItem;
static LONG addItem(HWND cbex, int idx, const char *text) {
COMBOBOXEXITEMA cbexItem;
memset(&cbexItem, 0x00, sizeof(cbexItem));
cbexItem.mask = CBEIF_TEXT;
cbexItem.iItem = idx;
cbexItem.pszText = text;
cbexItem.pszText = (char*)text;
cbexItem.cchTextMax = 0;
return SendMessage(cbex, CBEM_INSERTITEM, 0, (LPARAM)&cbexItem);
return SendMessageA(cbex, CBEM_INSERTITEMA, 0, (LPARAM)&cbexItem);
}
static LONG setItem(HWND cbex, int idx, LPTSTR text) {
COMBOBOXEXITEM cbexItem;
static LONG setItem(HWND cbex, int idx, const char *text) {
COMBOBOXEXITEMA cbexItem;
memset(&cbexItem, 0x00, sizeof(cbexItem));
cbexItem.mask = CBEIF_TEXT;
cbexItem.iItem = idx;
cbexItem.pszText = text;
cbexItem.pszText = (char*)text;
cbexItem.cchTextMax = 0;
return SendMessage(cbex, CBEM_SETITEM, 0, (LPARAM)&cbexItem);
return SendMessageA(cbex, CBEM_SETITEMA, 0, (LPARAM)&cbexItem);
}
static LONG delItem(HWND cbex, int idx) {
return SendMessage(cbex, CBEM_DELETEITEM, idx, 0);
return SendMessageA(cbex, CBEM_DELETEITEM, idx, 0);
}
static LONG getItem(HWND cbex, int idx, COMBOBOXEXITEM *cbItem) {
memset(cbItem, 0x00, sizeof(COMBOBOXEXITEM));
static LONG getItem(HWND cbex, int idx, COMBOBOXEXITEMA *cbItem) {
memset(cbItem, 0x00, sizeof(COMBOBOXEXITEMA));
cbItem->mask = CBEIF_TEXT;
cbItem->pszText = textBuffer;
cbItem->iItem = idx;
cbItem->cchTextMax = 100;
return SendMessage(cbex, CBEM_GETITEM, 0, (LPARAM)cbItem);
return SendMessageA(cbex, CBEM_GETITEMA, 0, (LPARAM)cbItem);
}
static LRESULT WINAPI editbox_subclass_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
@ -122,7 +122,7 @@ static HWND subclass_editbox(HWND hwndComboEx)
WNDPROC oldproc;
HWND hwnd;
hwnd = (HWND)SendMessage(hwndComboEx, CBEM_GETEDITCONTROL, 0, 0);
hwnd = (HWND)SendMessageA(hwndComboEx, CBEM_GETEDITCONTROL, 0, 0);
oldproc = (WNDPROC)SetWindowLongPtrA(hwnd, GWLP_WNDPROC,
(LONG_PTR)editbox_subclass_proc);
SetWindowLongPtrA(hwnd, GWLP_USERDATA, (LONG_PTR)oldproc);
@ -133,15 +133,13 @@ static HWND subclass_editbox(HWND hwndComboEx)
static void test_comboboxex(void) {
HWND myHwnd = 0;
LONG res = -1;
COMBOBOXEXITEM cbexItem;
static TCHAR first_item[] = {'F','i','r','s','t',' ','I','t','e','m',0},
second_item[] = {'S','e','c','o','n','d',' ','I','t','e','m',0},
third_item[] = {'T','h','i','r','d',' ','I','t','e','m',0},
middle_item[] = {'B','e','t','w','e','e','n',' ','F','i','r','s','t',' ','a','n','d',' ',
'S','e','c','o','n','d',' ','I','t','e','m','s',0},
replacement_item[] = {'B','e','t','w','e','e','n',' ','F','i','r','s','t',' ','a','n','d',' ',
'S','e','c','o','n','d',' ','I','t','e','m','s',0},
out_of_range_item[] = {'O','u','t',' ','o','f',' ','R','a','n','g','e',' ','I','t','e','m',0};
COMBOBOXEXITEMA cbexItem;
static const char *first_item = "First Item",
*second_item = "Second Item",
*third_item = "Third Item",
*middle_item = "Between First and Second Items",
*replacement_item = "Between First and Second Items",
*out_of_range_item = "Out of Range Item";
/* Allocate space for result */
textBuffer = HeapAlloc(GetProcessHeap(), 0, MAX_CHARS);
@ -271,8 +269,8 @@ static void test_WM_LBUTTONDOWN(void)
"Failed to add item %d\n", i);
}
hCombo = (HWND)SendMessage(hComboEx, CBEM_GETCOMBOCONTROL, 0, 0);
hEdit = (HWND)SendMessage(hComboEx, CBEM_GETEDITCONTROL, 0, 0);
hCombo = (HWND)SendMessageA(hComboEx, CBEM_GETCOMBOCONTROL, 0, 0);
hEdit = (HWND)SendMessageA(hComboEx, CBEM_GETEDITCONTROL, 0, 0);
cbInfo.cbSize = sizeof(COMBOBOXINFO);
result = pGetComboBoxInfo(hCombo, &cbInfo);
@ -286,19 +284,19 @@ static void test_WM_LBUTTONDOWN(void)
/* Click on the button to drop down the list */
x = cbInfo.rcButton.left + (cbInfo.rcButton.right-cbInfo.rcButton.left)/2;
y = cbInfo.rcButton.top + (cbInfo.rcButton.bottom-cbInfo.rcButton.top)/2;
result = SendMessage(hCombo, WM_LBUTTONDOWN, 0, MAKELPARAM(x, y));
result = SendMessageA(hCombo, WM_LBUTTONDOWN, 0, MAKELPARAM(x, y));
ok(result, "WM_LBUTTONDOWN was not processed. LastError=%d\n",
GetLastError());
ok(GetFocus() == hCombo ||
broken(GetFocus() != hCombo), /* win98 */
"Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
GetFocus());
ok(SendMessage(hComboEx, CB_GETDROPPEDSTATE, 0, 0),
ok(SendMessageA(hComboEx, CB_GETDROPPEDSTATE, 0, 0),
"The dropdown list should have appeared after clicking the button.\n");
idx = SendMessage(hCombo, CB_GETTOPINDEX, 0, 0);
idx = SendMessageA(hCombo, CB_GETTOPINDEX, 0, 0);
ok(idx == 0, "For TopIndex expected %d, got %d\n", 0, idx);
result = SendMessage(hCombo, WM_LBUTTONUP, 0, MAKELPARAM(x, y));
result = SendMessageA(hCombo, WM_LBUTTONUP, 0, MAKELPARAM(x, y));
ok(result, "WM_LBUTTONUP was not processed. LastError=%d\n",
GetLastError());
ok(GetFocus() == hCombo ||
@ -307,11 +305,11 @@ static void test_WM_LBUTTONDOWN(void)
GetFocus());
/* Click on the 5th item in the list */
item_height = SendMessage(hCombo, CB_GETITEMHEIGHT, 0, 0);
item_height = SendMessageA(hCombo, CB_GETITEMHEIGHT, 0, 0);
ok(GetClientRect(hList, &rect), "Failed to get list's client rect.\n");
x = rect.left + (rect.right-rect.left)/2;
y = item_height/2 + item_height*4;
result = SendMessage(hList, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
result = SendMessageA(hList, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
ok(!result, "WM_MOUSEMOVE was not processed. LastError=%d\n",
GetLastError());
ok(GetFocus() == hCombo ||
@ -319,17 +317,17 @@ static void test_WM_LBUTTONDOWN(void)
"Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
GetFocus());
result = SendMessage(hList, WM_LBUTTONDOWN, 0, MAKELPARAM(x, y));
result = SendMessageA(hList, WM_LBUTTONDOWN, 0, MAKELPARAM(x, y));
ok(!result, "WM_LBUTTONDOWN was not processed. LastError=%d\n",
GetLastError());
ok(GetFocus() == hCombo ||
broken(GetFocus() != hCombo), /* win98 */
"Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
GetFocus());
ok(SendMessage(hComboEx, CB_GETDROPPEDSTATE, 0, 0),
ok(SendMessageA(hComboEx, CB_GETDROPPEDSTATE, 0, 0),
"The dropdown list should still be visible.\n");
result = SendMessage(hList, WM_LBUTTONUP, 0, MAKELPARAM(x, y));
result = SendMessageA(hList, WM_LBUTTONUP, 0, MAKELPARAM(x, y));
ok(!result, "WM_LBUTTONUP was not processed. LastError=%d\n",
GetLastError());
todo_wine ok(GetFocus() == hEdit ||
@ -337,11 +335,11 @@ static void test_WM_LBUTTONDOWN(void)
"Focus not on ComboBoxEx's Edit Control, instead on %p\n",
GetFocus());
result = SendMessage(hCombo, CB_GETDROPPEDSTATE, 0, 0);
result = SendMessageA(hCombo, CB_GETDROPPEDSTATE, 0, 0);
ok(!result ||
broken(result != 0), /* win98 */
"The dropdown list should have been rolled up.\n");
idx = SendMessage(hComboEx, CB_GETCURSEL, 0, 0);
idx = SendMessageA(hComboEx, CB_GETCURSEL, 0, 0);
ok(idx == 4 ||
broken(idx == -1), /* win98 */
"Current Selection: expected %d, got %d\n", 4, idx);
@ -372,18 +370,18 @@ static void test_CB_GETLBTEXT(void)
item.iItem = 0;
item.pszText = buff;
item.cchTextMax = 1;
ret = SendMessage(hCombo, CBEM_GETITEMA, 0, (LPARAM)&item);
ret = SendMessageA(hCombo, CBEM_GETITEMA, 0, (LPARAM)&item);
ok(ret != 0, "CBEM_GETITEM failed\n");
ok(buff[0] == 0, "\n");
ret = SendMessage(hCombo, CB_GETLBTEXTLEN, 0, 0);
ret = SendMessageA(hCombo, CB_GETLBTEXTLEN, 0, 0);
ok(ret == 0, "Expected zero length\n");
ret = SendMessage(hCombo, CB_GETLBTEXTLEN, 0, 0);
ret = SendMessageA(hCombo, CB_GETLBTEXTLEN, 0, 0);
ok(ret == 0, "Expected zero length\n");
buff[0] = 'a';
ret = SendMessage(hCombo, CB_GETLBTEXT, 0, (LPARAM)buff);
ret = SendMessageA(hCombo, CB_GETLBTEXT, 0, (LPARAM)buff);
ok(ret == 0, "Expected zero length\n");
ok(buff[0] == 0, "Expected null terminator as a string, got %s\n", buff);
@ -477,7 +475,7 @@ static LRESULT CALLBACK ComboExTestWndProc(HWND hWnd, UINT msg, WPARAM wParam, L
return 0L;
}
static int init(void)
static BOOL init(void)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
@ -489,7 +487,7 @@ static int init(void)
if (!pInitCommonControlsEx)
{
win_skip("InitCommonControlsEx() is missing. Skipping the tests\n");
return 0;
return FALSE;
}
iccex.dwSize = sizeof(iccex);
iccex.dwICC = ICC_USEREX_CLASSES;
@ -502,7 +500,7 @@ static int init(void)
wc.cbWndExtra = 0;
wc.hInstance = GetModuleHandleA(NULL);
wc.hIcon = NULL;
wc.hCursor = LoadCursorA(NULL, IDC_ARROW);
wc.hCursor = LoadCursorA(NULL, (LPCSTR)IDC_ARROW);
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = ComboExTestClass;
@ -511,10 +509,11 @@ static int init(void)
hComboExParentWnd = CreateWindowExA(0, ComboExTestClass, "ComboEx test", WS_OVERLAPPEDWINDOW|WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, 680, 260, NULL, NULL, GetModuleHandleA(NULL), 0);
assert(hComboExParentWnd != NULL);
ok(hComboExParentWnd != NULL, "failed to create parent window\n");
hMainHinst = GetModuleHandleA(NULL);
return 1;
return hComboExParentWnd != NULL;
}
static void cleanup(void)
@ -537,9 +536,9 @@ static void test_comboboxex_subclass(void)
hComboEx = createComboEx(WS_BORDER | WS_VISIBLE | WS_CHILD | CBS_DROPDOWN);
hCombo = (HWND)SendMessage(hComboEx, CBEM_GETCOMBOCONTROL, 0, 0);
hCombo = (HWND)SendMessageA(hComboEx, CBEM_GETCOMBOCONTROL, 0, 0);
ok(hCombo != NULL, "Failed to get internal combo\n");
hEdit = (HWND)SendMessage(hComboEx, CBEM_GETEDITCONTROL, 0, 0);
hEdit = (HWND)SendMessageA(hComboEx, CBEM_GETEDITCONTROL, 0, 0);
ok(hEdit != NULL, "Failed to get internal edit\n");
if (pSetWindowSubclass)
@ -575,7 +574,7 @@ static void test_get_set_item(void)
item.mask = CBEIF_TEXT;
item.pszText = textA;
item.iItem = -1;
ret = SendMessage(hComboEx, CBEM_SETITEMA, 0, (LPARAM)&item);
ret = SendMessageA(hComboEx, CBEM_SETITEMA, 0, (LPARAM)&item);
expect(TRUE, ret);
ok_sequence(sequences, EDITBOX_SEQ_INDEX, test_setitem_edit_seq, "set item data for edit", FALSE);
@ -584,16 +583,16 @@ static void test_get_set_item(void)
item.mask = CBEIF_LPARAM;
item.iItem = -1;
item.lParam = 0xdeadbeef;
ret = SendMessage(hComboEx, CBEM_GETITEMA, 0, (LPARAM)&item);
ret = SendMessageA(hComboEx, CBEM_GETITEMA, 0, (LPARAM)&item);
expect(TRUE, ret);
ok(item.lParam == 0, "Expected zero, got %lx\n", item.lParam);
item.lParam = 0x1abe11ed;
ret = SendMessage(hComboEx, CBEM_SETITEMA, 0, (LPARAM)&item);
ret = SendMessageA(hComboEx, CBEM_SETITEMA, 0, (LPARAM)&item);
expect(TRUE, ret);
item.lParam = 0;
ret = SendMessage(hComboEx, CBEM_GETITEMA, 0, (LPARAM)&item);
ret = SendMessageA(hComboEx, CBEM_GETITEMA, 0, (LPARAM)&item);
expect(TRUE, ret);
ok(item.lParam == 0x1abe11ed, "Expected 0x1abe11ed, got %lx\n", item.lParam);

View file

@ -165,8 +165,8 @@ static HWND create_datetime_control(DWORD style)
WNDPROC oldproc;
HWND hWndDateTime = NULL;
hWndDateTime = CreateWindowEx(0,
DATETIMEPICK_CLASS,
hWndDateTime = CreateWindowExA(0,
DATETIMEPICK_CLASSA,
NULL,
style,
0,50,300,120,
@ -195,24 +195,23 @@ static void test_dtm_set_format(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
r = SendMessage(hWnd, DTM_SETFORMAT, 0, 0);
r = SendMessageA(hWnd, DTM_SETFORMATA, 0, 0);
expect(1, r);
r = SendMessage(hWnd, DTM_SETFORMAT, 0,
r = SendMessageA(hWnd, DTM_SETFORMATA, 0,
(LPARAM)"'Today is: 'hh':'m':'s dddd MMM dd', 'yyyy");
expect(1, r);
ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_format_seq, "test_dtm_set_format", FALSE);
r = SendMessage(hWnd, DTM_SETFORMAT, 0,
(LPARAM)"'hh' hh");
r = SendMessageA(hWnd, DTM_SETFORMATA, 0, (LPARAM)"'hh' hh");
expect(1, r);
ZeroMemory(&systime, sizeof(systime));
systime.wYear = 2000;
systime.wMonth = systime.wDay = 1;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, 0, (LPARAM)&systime);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, 0, (LPARAM)&systime);
expect(1, r);
GetWindowText(hWnd, txt, 256);
GetWindowTextA(hWnd, txt, 256);
ok(strcmp(txt, "hh 12") == 0, "String mismatch (\"%s\" vs \"hh 12\")\n", txt);
DestroyWindow(hWnd);
@ -223,17 +222,17 @@ static void test_mccolor_types(HWND hWndDateTime, int mccolor_type, const char*
COLORREF theColor, prevColor, crColor;
theColor=RGB(0,0,0);
crColor = SendMessage(hWndDateTime, DTM_SETMCCOLOR, mccolor_type, theColor);
crColor = SendMessageA(hWndDateTime, DTM_SETMCCOLOR, mccolor_type, theColor);
ok(crColor != ~0u, "%s: Set RGB(0,0,0): Expected COLORREF of previous value, got %d\n", mccolor_name, crColor);
prevColor=theColor;
theColor=RGB(255,255,255);
crColor = SendMessage(hWndDateTime, DTM_SETMCCOLOR, mccolor_type, theColor);
crColor = SendMessageA(hWndDateTime, DTM_SETMCCOLOR, mccolor_type, theColor);
ok(crColor==prevColor, "%s: Set RGB(255,255,255): Expected COLORREF of previous value, got %d\n", mccolor_name, crColor);
prevColor=theColor;
theColor=RGB(100,180,220);
crColor = SendMessage(hWndDateTime, DTM_SETMCCOLOR, mccolor_type, theColor);
crColor = SendMessageA(hWndDateTime, DTM_SETMCCOLOR, mccolor_type, theColor);
ok(crColor==prevColor, "%s: Set RGB(100,180,220): Expected COLORREF of previous value, got %d\n", mccolor_name, crColor);
crColor = SendMessage(hWndDateTime, DTM_GETMCCOLOR, mccolor_type, 0);
crColor = SendMessageA(hWndDateTime, DTM_GETMCCOLOR, mccolor_type, 0);
ok(crColor==theColor, "%s: GETMCCOLOR: Expected %d, got %d\n", mccolor_name, theColor, crColor);
}
@ -267,8 +266,8 @@ static void test_dtm_set_and_get_mcfont(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
hFontOrig = GetStockObject(DEFAULT_GUI_FONT);
SendMessage(hWnd, DTM_SETMCFONT, (WPARAM)hFontOrig, TRUE);
hFontNew = (HFONT)SendMessage(hWnd, DTM_GETMCFONT, 0, 0);
SendMessageA(hWnd, DTM_SETMCFONT, (WPARAM)hFontOrig, TRUE);
hFontNew = (HFONT)SendMessageA(hWnd, DTM_GETMCFONT, 0, 0);
ok(hFontOrig == hFontNew, "Expected hFontOrig==hFontNew, hFontOrig=%p, hFontNew=%p\n", hFontOrig, hFontNew);
ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_and_get_mcfont_seq, "test_dtm_set_and_get_mcfont", FALSE);
@ -285,7 +284,7 @@ static void test_dtm_get_monthcal(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
todo_wine {
r = SendMessage(hWnd, DTM_GETMONTHCAL, 0, 0);
r = SendMessageA(hWnd, DTM_GETMONTHCAL, 0, 0);
ok(r == 0, "Expected NULL(no child month calendar control), got %ld\n", r);
}
@ -349,13 +348,13 @@ static void test_dtm_set_and_get_range(void)
/* initialize st[1] to all invalid numbers */
fill_systime_struct(&st[1], 0, 0, 7, 0, 24, 60, 60, 1000);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN, (LPARAM)st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
ok(r == GDTR_MIN, "Expected %x, not %x(GDTR_MAX) or %x(GDTR_MIN | GDTR_MAX), got %lx\n", GDTR_MIN, GDTR_MAX, GDTR_MIN | GDTR_MAX, r);
expect_systime(&st[0], &getSt[0]);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MAX, (LPARAM)st);
expect_unsuccess(0, r);
/* set st[0] to all invalid numbers */
@ -363,25 +362,25 @@ static void test_dtm_set_and_get_range(void)
/* set st[1] to highest possible value */
fill_systime_struct(&st[1], 30827, 12, 6, 31, 23, 59, 59, 999);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MAX, (LPARAM)st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
todo_wine {
ok(r == GDTR_MAX, "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MIN | GDTR_MAX), got %lx\n", GDTR_MAX, GDTR_MIN, GDTR_MIN | GDTR_MAX, r);
}
expect_systime(&st[1], &getSt[1]);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN, (LPARAM)st);
expect_unsuccess(0, r);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
expect_unsuccess(0, r);
/* set st[0] to highest possible value */
fill_systime_struct(&st[0], 30827, 12, 6, 31, 23, 59, 59, 999);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
expect_systime(&st[0], &getSt[0]);
expect_systime(&st[1], &getSt[1]);
@ -391,9 +390,9 @@ static void test_dtm_set_and_get_range(void)
/* set st[1] to highest possible value */
fill_systime_struct(&st[1], 30827, 12, 6, 31, 23, 59, 59, 999);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
expect_systime(&st[0], &getSt[0]);
expect_systime(&st[1], &getSt[1]);
@ -403,9 +402,9 @@ static void test_dtm_set_and_get_range(void)
/* set st[1] to value lower than maximum */
fill_systime_struct(&st[1], 2007, 3, 2, 31, 23, 59, 59, 999);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
expect_systime(&st[0], &getSt[0]);
expect_systime(&st[1], &getSt[1]);
@ -431,9 +430,9 @@ static void test_dtm_set_range_swap_min_max(void)
fill_systime_struct(&st[0], 2007, 2, 4, 15, 2, 2, 2, 2);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st[0]);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st[0]);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&origSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&origSt);
ok(r == GDT_VALID, "Expected %d, not %d(GDT_NONE) or %d(GDT_ERROR), got %ld\n", GDT_VALID, GDT_NONE, GDT_ERROR, r);
expect_systime(&st[0], &origSt);
@ -443,9 +442,9 @@ static void test_dtm_set_range_swap_min_max(void)
/* since min>max, min and max values should be swapped by DTM_SETRANGE
automatically */
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
todo_wine {
ok(compare_systime(&st[0], &getSt[0]) == 1 ||
@ -459,9 +458,9 @@ static void test_dtm_set_range_swap_min_max(void)
fill_systime_struct(&st[0], 1980, 1, 3, 23, 14, 34, 37, 465);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st[0]);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st[0]);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt[0]);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt[0]);
ok(r == GDT_VALID, "Expected %d, not %d(GDT_NONE) or %d(GDT_ERROR), got %ld\n", GDT_VALID, GDT_NONE, GDT_ERROR, r);
/* the time part seems to not change after swapping the min and max values
and doing DTM_SETSYSTEMTIME */
@ -477,12 +476,12 @@ static void test_dtm_set_range_swap_min_max(void)
/* set st[1] to value lower than maximum */
fill_systime_struct(&st[1], 2007, 3, 2, 31, 23, 59, 59, 999);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
expect(1, r);
/* for some reason after we swapped the min and max values before,
whenever we do a DTM_SETRANGE, the DTM_GETRANGE will return the values
swapped*/
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
todo_wine {
ok(compare_systime(&st[0], &getSt[1]) == 1 ||
@ -500,9 +499,9 @@ static void test_dtm_set_range_swap_min_max(void)
/* set min>max again, so that the return values of DTM_GETRANGE are no
longer swapped the next time we do a DTM SETRANGE and DTM_GETRANGE*/
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
expect_systime(&st[0], &getSt[1]);
expect_systime(&st[1], &getSt[0]);
@ -512,9 +511,9 @@ static void test_dtm_set_range_swap_min_max(void)
/* set st[1] to highest possible value */
fill_systime_struct(&st[1], 30827, 12, 6, 31, 23, 59, 59, 999);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
expect_systime(&st[0], &getSt[0]);
expect_systime(&st[1], &getSt[1]);
@ -534,7 +533,7 @@ static void test_dtm_set_and_get_system_time(void)
ok(hWndDateTime_test_gdt_none!=NULL, "Expected non NULL, got %p\n", hWndDateTime_test_gdt_none);
if(hWndDateTime_test_gdt_none) {
r = SendMessage(hWndDateTime_test_gdt_none, DTM_SETSYSTEMTIME, GDT_NONE, (LPARAM)&st);
r = SendMessageA(hWndDateTime_test_gdt_none, DTM_SETSYSTEMTIME, GDT_NONE, (LPARAM)&st);
expect(0, r);
}
else {
@ -549,128 +548,128 @@ static void test_dtm_set_and_get_system_time(void)
hWnd = create_datetime_control(DTS_SHOWNONE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_NONE, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_NONE, (LPARAM)&st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
ok(r == GDT_NONE, "Expected %d, not %d(GDT_VALID) or %d(GDT_ERROR), got %ld\n", GDT_NONE, GDT_VALID, GDT_ERROR, r);
/* set st to lowest possible value */
fill_systime_struct(&st, 1601, 1, 0, 1, 0, 0, 0, 0);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(1, r);
/* set st to highest possible value */
fill_systime_struct(&st, 30827, 12, 6, 31, 23, 59, 59, 999);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(1, r);
/* set st to value between min and max */
fill_systime_struct(&st, 1980, 1, 3, 23, 14, 34, 37, 465);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
ok(r == GDT_VALID, "Expected %d, not %d(GDT_NONE) or %d(GDT_ERROR), got %ld\n", GDT_VALID, GDT_NONE, GDT_ERROR, r);
expect_systime(&st, &getSt);
/* set st to invalid value */
fill_systime_struct(&st, 0, 0, 7, 0, 24, 60, 60, 1000);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect_unsuccess(0, r);
ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_and_get_system_time_seq, "test_dtm_set_and_get_system_time", FALSE);
/* set to some valid value */
GetSystemTime(&ref);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&ref);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&ref);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* year invalid */
st = ref;
st.wYear = 0;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
todo_wine expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* month invalid */
st = ref;
st.wMonth = 13;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(0, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* day invalid */
st = ref;
st.wDay = 32;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(0, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* day invalid for current month */
st = ref;
st.wDay = 30;
st.wMonth = 2;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(0, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* day of week isn't validated */
st = ref;
st.wDayOfWeek = 10;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* hour invalid */
st = ref;
st.wHour = 25;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(0, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* minute invalid */
st = ref;
st.wMinute = 60;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(0, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* sec invalid */
st = ref;
st.wSecond = 60;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(0, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* msec invalid */
st = ref;
st.wMilliseconds = 1000;
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(0, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
expect_systime(&ref, &getSt);
/* day of week should be calculated automatically,
actual day of week for this date is 4 */
fill_systime_struct(&st, 2009, 10, 1, 1, 0, 0, 10, 200);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
expect(GDT_VALID, r);
/* 01.10.2009 is Thursday */
expect(4, (LRESULT)getSt.wDayOfWeek);
@ -692,35 +691,35 @@ static void test_dtm_set_and_get_systemtime_with_limits(void)
fill_systime_struct(&st[0], 1980, 1, 3, 23, 14, 34, 37, 465);
fill_systime_struct(&st[1], 2007, 3, 2, 31, 23, 59, 59, 999);
r = SendMessage(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
expect(1, r);
r = SendMessage(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
expect_systime(&st[0], &getSt[0]);
expect_systime(&st[1], &getSt[1]);
/* Initially set a valid time */
fill_systime_struct(&refSt, 1999, 9, 4, 9, 19, 9, 9, 999);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&refSt);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&refSt);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt[0]);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt[0]);
ok(r == GDT_VALID, "Expected %d, not %d(GDT_NONE) or %d(GDT_ERROR), got %ld\n", GDT_VALID, GDT_NONE, GDT_ERROR, r);
expect_systime(&refSt, &getSt[0]);
/* Now set an out-of-bounds time */
fill_systime_struct(&st[0], 2010, 1, 0, 1, 0, 0, 0, 0);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st[0]);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st[0]);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt[0]);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt[0]);
ok(r == GDT_VALID, "Expected %d, not %d(GDT_NONE) or %d(GDT_ERROR), got %ld\n", GDT_VALID, GDT_NONE, GDT_ERROR, r);
expect_systime(&refSt, &getSt[0]);
fill_systime_struct(&st[0], 1977, 1, 0, 1, 0, 0, 0, 0);
r = SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st[0]);
r = SendMessageA(hWnd, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st[0]);
expect(1, r);
r = SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt[0]);
r = SendMessageA(hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt[0]);
ok(r == GDT_VALID, "Expected %d, not %d(GDT_NONE) or %d(GDT_ERROR), got %ld\n", GDT_VALID, GDT_NONE, GDT_ERROR, r);
expect_systime(&refSt, &getSt[0]);
@ -738,14 +737,14 @@ static void test_wm_set_get_text(void)
hWnd = create_datetime_control(0);
ret = SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)a_str);
ret = SendMessageA(hWnd, WM_SETTEXT, 0, (LPARAM)a_str);
ok(CB_ERR == ret ||
broken(0 == ret) || /* comctl32 <= 4.72 */
broken(1 == ret), /* comctl32 <= 4.70 */
"Expected CB_ERR, got %ld\n", ret);
buff[0] = 0;
ret = SendMessage(hWnd, WM_GETTEXT, sizeof(buff), (LPARAM)buff);
ret = SendMessageA(hWnd, WM_GETTEXT, sizeof(buff), (LPARAM)buff);
ok(strcmp(buff, a_str) != 0, "Expected text to change, got %s\n", buff);
ok(ret != 0, "Expected non-zero return value\n");
@ -757,7 +756,7 @@ static void test_wm_set_get_text(void)
skip("DateTimePicker Control only supports Gregorian calendar (type: %s)\n", caltype);
else {
SetLastError(0xdeadbeef);
ret = GetDateFormat(LOCALE_USER_DEFAULT, 0, NULL, NULL, time, sizeof(time));
ret = GetDateFormatA(LOCALE_USER_DEFAULT, 0, NULL, NULL, time, sizeof(time));
if (ret == 0)
skip("GetDateFormat failed, returned %ld, error %d\n", ret, GetLastError());
else
@ -774,16 +773,16 @@ static void test_dts_shownone(void)
/* it isn't allowed to change DTS_SHOWNONE after creation */
hwnd = create_datetime_control(0);
style = GetWindowLong(hwnd, GWL_STYLE);
SetWindowLong(hwnd, GWL_STYLE, style | DTS_SHOWNONE);
style = GetWindowLong(hwnd, GWL_STYLE);
style = GetWindowLongA(hwnd, GWL_STYLE);
SetWindowLongA(hwnd, GWL_STYLE, style | DTS_SHOWNONE);
style = GetWindowLongA(hwnd, GWL_STYLE);
ok(!(style & DTS_SHOWNONE), "Expected DTS_SHOWNONE not to be set\n");
DestroyWindow(hwnd);
hwnd = create_datetime_control(DTS_SHOWNONE);
style = GetWindowLong(hwnd, GWL_STYLE);
SetWindowLong(hwnd, GWL_STYLE, style & ~DTS_SHOWNONE);
style = GetWindowLong(hwnd, GWL_STYLE);
style = GetWindowLongA(hwnd, GWL_STYLE);
SetWindowLongA(hwnd, GWL_STYLE, style & ~DTS_SHOWNONE);
style = GetWindowLongA(hwnd, GWL_STYLE);
ok(style & DTS_SHOWNONE, "Expected DTS_SHOWNONE to be set\n");
DestroyWindow(hwnd);
}

View file

@ -45,24 +45,24 @@ typedef struct _STREAMDATA
DWORD dwItems;
} STREAMDATA, *PSTREAMDATA;
static HDPA (WINAPI *pDPA_Clone)(const HDPA,const HDPA);
static HDPA (WINAPI *pDPA_Clone)(const HDPA,HDPA);
static HDPA (WINAPI *pDPA_Create)(INT);
static HDPA (WINAPI *pDPA_CreateEx)(INT,HANDLE);
static PVOID (WINAPI *pDPA_DeleteAllPtrs)(const HDPA);
static PVOID (WINAPI *pDPA_DeletePtr)(const HDPA,INT);
static BOOL (WINAPI *pDPA_Destroy)(const HDPA);
static PVOID (WINAPI *pDPA_DeleteAllPtrs)(HDPA);
static PVOID (WINAPI *pDPA_DeletePtr)(HDPA,INT);
static BOOL (WINAPI *pDPA_Destroy)(HDPA);
static VOID (WINAPI *pDPA_DestroyCallback)(HDPA,PFNDPAENUMCALLBACK,PVOID);
static VOID (WINAPI *pDPA_EnumCallback)(HDPA,PFNDPAENUMCALLBACK,PVOID);
static INT (WINAPI *pDPA_GetPtr)(const HDPA,INT);
static INT (WINAPI *pDPA_GetPtrIndex)(const HDPA,PVOID);
static INT (WINAPI *pDPA_GetPtr)(HDPA,INT);
static INT (WINAPI *pDPA_GetPtrIndex)(HDPA,PVOID);
static BOOL (WINAPI *pDPA_Grow)(HDPA,INT);
static INT (WINAPI *pDPA_InsertPtr)(const HDPA,INT,PVOID);
static INT (WINAPI *pDPA_InsertPtr)(HDPA,INT,PVOID);
static HRESULT (WINAPI *pDPA_LoadStream)(HDPA*,PFNDPASTREAM,IStream*,LPVOID);
static BOOL (WINAPI *pDPA_Merge)(const HDPA,const HDPA,DWORD,PFNDPACOMPARE,PFNDPAMERGE,LPARAM);
static BOOL (WINAPI *pDPA_Merge)(HDPA,HDPA,DWORD,PFNDPACOMPARE,PFNDPAMERGE,LPARAM);
static HRESULT (WINAPI *pDPA_SaveStream)(HDPA,PFNDPASTREAM,IStream*,LPVOID);
static INT (WINAPI *pDPA_Search)(HDPA,PVOID,INT,PFNDPACOMPARE,LPARAM,UINT);
static BOOL (WINAPI *pDPA_SetPtr)(const HDPA,INT,PVOID);
static BOOL (WINAPI *pDPA_Sort)(const HDPA,PFNDPACOMPARE,LPARAM);
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 \

View file

@ -27,6 +27,7 @@
#include <windef.h>
#include <winbase.h>
#include <wingdi.h>
#include <winuser.h>
#include <winnls.h>
#include <objbase.h>
#include <commctrl.h>
@ -106,16 +107,16 @@ static const struct message add_header_to_parent_seq[] = {
};
static const struct message insertItem_seq[] = {
{ HDM_INSERTITEM, sent|wparam, 0 },
{ HDM_INSERTITEM, sent|wparam, 1 },
{ HDM_INSERTITEM, sent|wparam, 2 },
{ HDM_INSERTITEM, sent|wparam, 3 },
{ HDM_INSERTITEMA, sent|wparam, 0 },
{ HDM_INSERTITEMA, sent|wparam, 1 },
{ HDM_INSERTITEMA, sent|wparam, 2 },
{ HDM_INSERTITEMA, sent|wparam, 3 },
{ 0 }
};
static const struct message getItem_seq[] = {
{ HDM_GETITEM, sent|wparam, 3 },
{ HDM_GETITEM, sent|wparam, 0 },
{ HDM_GETITEMA, sent|wparam, 3 },
{ HDM_GETITEMA, sent|wparam, 0 },
{ 0 }
};
@ -137,8 +138,8 @@ static const struct message orderArray_seq[] = {
};
static const struct message setItem_seq[] = {
{ HDM_SETITEM, sent|wparam, 0 },
{ HDM_SETITEM, sent|wparam, 1 },
{ HDM_SETITEMA, sent|wparam, 0 },
{ HDM_SETITEMA, sent|wparam, 1 },
{ 0 }
};
@ -225,17 +226,21 @@ static const struct message bitmapmarginMessages_seq[] = {
static void expect_notify(INT iCode, BOOL fUnicode, HDITEMA *lpItem)
{
assert(nExpectedNotify < 10);
expectedNotify[nExpectedNotify].iCode = iCode;
expectedNotify[nExpectedNotify].fUnicode = fUnicode;
expectedNotify[nExpectedNotify].hdItem = *lpItem;
nExpectedNotify++;
ok(nExpectedNotify < 10, "notification count %d\n", nExpectedNotify);
if (nExpectedNotify < 10)
{
expectedNotify[nExpectedNotify].iCode = iCode;
expectedNotify[nExpectedNotify].fUnicode = fUnicode;
expectedNotify[nExpectedNotify].hdItem = *lpItem;
nExpectedNotify++;
}
}
static void dont_expect_notify(INT iCode)
{
assert(nUnexpectedNotify < 10);
unexpectedNotify[nUnexpectedNotify++] = iCode;
ok(nExpectedNotify < 10, "notification count %d\n", nExpectedNotify);
if (nExpectedNotify < 10)
unexpectedNotify[nUnexpectedNotify++] = iCode;
}
static BOOL notifies_received(void)
@ -253,7 +258,7 @@ static LONG addItem(HWND hdex, int idx, LPSTR text)
hdItem.cxy = 100;
hdItem.pszText = text;
hdItem.cchTextMax = 0;
return SendMessage(hdex, HDM_INSERTITEMA, idx, (LPARAM)&hdItem);
return SendMessageA(hdex, HDM_INSERTITEMA, idx, (LPARAM)&hdItem);
}
static LONG setItem(HWND hdex, int idx, LPSTR text, BOOL fCheckNotifies)
@ -268,7 +273,7 @@ static LONG setItem(HWND hdex, int idx, LPSTR text, BOOL fCheckNotifies)
expect_notify(HDN_ITEMCHANGINGA, FALSE, &hdexItem);
expect_notify(HDN_ITEMCHANGEDA, FALSE, &hdexItem);
}
ret = SendMessage(hdex, HDM_SETITEMA, idx, (LPARAM)&hdexItem);
ret = SendMessageA(hdex, HDM_SETITEMA, idx, (LPARAM)&hdexItem);
if (fCheckNotifies)
ok(notifies_received(), "setItem(): not all expected notifies were received\n");
return ret;
@ -288,19 +293,19 @@ static LONG setItemUnicodeNotify(HWND hdex, int idx, LPSTR text, LPWSTR wText)
expect_notify(HDN_ITEMCHANGINGW, TRUE, (HDITEMA*)&hdexNotify);
expect_notify(HDN_ITEMCHANGEDW, TRUE, (HDITEMA*)&hdexNotify);
ret = SendMessage(hdex, HDM_SETITEMA, idx, (LPARAM)&hdexItem);
ret = SendMessageA(hdex, HDM_SETITEMA, idx, (LPARAM)&hdexItem);
ok(notifies_received(), "setItemUnicodeNotify(): not all expected notifies were received\n");
return ret;
}
static LONG delItem(HWND hdex, int idx)
{
return SendMessage(hdex, HDM_DELETEITEM, idx, 0);
return SendMessageA(hdex, HDM_DELETEITEM, idx, 0);
}
static LONG getItemCount(HWND hdex)
{
return SendMessage(hdex, HDM_GETITEMCOUNT, 0, 0);
return SendMessageA(hdex, HDM_GETITEMCOUNT, 0, 0);
}
static LONG getItem(HWND hdex, int idx, LPSTR textBuffer)
@ -309,16 +314,16 @@ static LONG getItem(HWND hdex, int idx, LPSTR textBuffer)
hdItem.mask = HDI_TEXT;
hdItem.pszText = textBuffer;
hdItem.cchTextMax = MAX_CHARS;
return SendMessage(hdex, HDM_GETITEMA, idx, (LPARAM)&hdItem);
return SendMessageA(hdex, HDM_GETITEMA, idx, (LPARAM)&hdItem);
}
static void addReadDelItem(HWND hdex, HDITEMA *phdiCreate, int maskRead, HDITEMA *phdiRead)
{
ok(SendMessage(hdex, HDM_INSERTITEMA, 0, (LPARAM)phdiCreate)!=-1, "Adding item failed\n");
ok(SendMessageA(hdex, HDM_INSERTITEMA, 0, (LPARAM)phdiCreate)!=-1, "Adding item failed\n");
ZeroMemory(phdiRead, sizeof(HDITEMA));
phdiRead->mask = maskRead;
ok(SendMessage(hdex, HDM_GETITEMA, 0, (LPARAM)phdiRead)!=0, "Getting item data failed\n");
ok(SendMessage(hdex, HDM_DELETEITEM, 0, 0)!=0, "Deleting item failed\n");
ok(SendMessageA(hdex, HDM_GETITEMA, 0, (LPARAM)phdiRead)!=0, "Getting item data failed\n");
ok(SendMessageA(hdex, HDM_DELETEITEM, 0, 0)!=0, "Deleting item failed\n");
}
static HWND create_header_control (void)
@ -328,11 +333,11 @@ static HWND create_header_control (void)
RECT rectwin;
WINDOWPOS winpos;
handle = CreateWindowEx(0, WC_HEADER, NULL,
WS_CHILD|WS_BORDER|WS_VISIBLE|HDS_BUTTONS|HDS_HORZ,
0, 0, 0, 0,
hHeaderParentWnd, NULL, NULL, NULL);
assert(handle);
handle = CreateWindowExA(0, WC_HEADERA, NULL,
WS_CHILD|WS_BORDER|WS_VISIBLE|HDS_BUTTONS|HDS_HORZ,
0, 0, 0, 0,
hHeaderParentWnd, NULL, NULL, NULL);
ok(handle != NULL, "failed to create header window\n");
if (winetest_interactive)
ShowWindow (hHeaderParentWnd, SW_SHOW);
@ -340,7 +345,7 @@ static HWND create_header_control (void)
GetClientRect(hHeaderParentWnd,&rectwin);
hlayout.prc = &rectwin;
hlayout.pwpos = &winpos;
SendMessageA(handle,HDM_LAYOUT,0,(LPARAM) &hlayout);
SendMessageA(handle, HDM_LAYOUT, 0, (LPARAM)&hlayout);
SetWindowPos(handle, winpos.hwndInsertAfter, winpos.x, winpos.y,
winpos.cx, winpos.cy, 0);
@ -448,6 +453,7 @@ static LRESULT WINAPI parent_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LP
if (defwndproc_counter) msg.flags |= defwinproc;
msg.wParam = wParam;
msg.lParam = lParam;
msg.id = 0;
add_message(sequences, PARENT_SEQ_INDEX, &msg);
}
@ -468,7 +474,7 @@ static BOOL register_parent_wnd_class(void)
cls.cbWndExtra = 0;
cls.hInstance = GetModuleHandleA(NULL);
cls.hIcon = 0;
cls.hCursor = LoadCursorA(0, IDC_ARROW);
cls.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
cls.hbrBackground = GetStockObject(WHITE_BRUSH);
cls.lpszMenuName = NULL;
cls.lpszClassName = "Header test parent class";
@ -499,26 +505,25 @@ static HWND create_custom_header_control(HWND hParent, BOOL preloadHeaderItems)
static char firstHeaderItem[] = "Name";
static char secondHeaderItem[] = "Size";
static char *items[] = {secondHeaderItem, firstHeaderItem};
HDITEM hdItem;
HDITEMA hdItem;
hdItem.mask = HDI_TEXT | HDI_WIDTH | HDI_FORMAT;
hdItem.fmt = HDF_LEFT;
hdItem.cxy = 80;
hdItem.cchTextMax = 260;
flush_sequences(sequences, NUM_MSG_SEQUENCES);
childHandle = CreateWindowEx(0, WC_HEADER, NULL,
childHandle = CreateWindowExA(0, WC_HEADERA, NULL,
WS_CHILD|WS_BORDER|WS_VISIBLE|HDS_BUTTONS|HDS_HORZ,
0, 0, 0, 0,
hParent, NULL, NULL, NULL);
assert(childHandle);
ok(childHandle != NULL, "failed to create child window\n");
if (preloadHeaderItems)
{
for ( loopcnt = 0 ; loopcnt < 2 ; loopcnt++ )
{
hdItem.pszText = items[loopcnt];
retVal = SendMessage(childHandle, HDM_INSERTITEM, loopcnt, (LPARAM) &hdItem);
retVal = SendMessageA(childHandle, HDM_INSERTITEMA, loopcnt, (LPARAM) &hdItem);
ok(retVal == loopcnt, "Adding item %d failed with return value %d\n", ( loopcnt + 1 ), retVal);
}
}
@ -661,24 +666,24 @@ static void check_mask(void)
hdi.iOrder = 0;
hdi.lParam = 17;
hdi.cchTextMax = 260;
ret = SendMessage(hWndHeader, HDM_INSERTITEM, 0, (LPARAM)&hdi);
ret = SendMessageA(hWndHeader, HDM_INSERTITEMA, 0, (LPARAM)&hdi);
ok(ret == -1, "Creating an item with a zero mask should have failed\n");
if (ret != -1) SendMessage(hWndHeader, HDM_DELETEITEM, 0, 0);
if (ret != -1) SendMessageA(hWndHeader, HDM_DELETEITEM, 0, 0);
/* with a non-zero mask creation will succeed */
ZeroMemory(&hdi, sizeof(hdi));
hdi.mask = HDI_LPARAM;
ret = SendMessage(hWndHeader, HDM_INSERTITEM, 0, (LPARAM)&hdi);
ret = SendMessageA(hWndHeader, HDM_INSERTITEMA, 0, (LPARAM)&hdi);
ok(ret != -1, "Adding item with non-zero mask failed\n");
if (ret != -1)
SendMessage(hWndHeader, HDM_DELETEITEM, 0, 0);
SendMessageA(hWndHeader, HDM_DELETEITEM, 0, 0);
/* in SETITEM if the mask contains a unknown bit, it is ignored */
ZeroMemory(&hdi, sizeof(hdi));
hdi.mask = 0x08000000 | HDI_LPARAM | HDI_IMAGE;
hdi.lParam = 133;
hdi.iImage = 17;
ret = SendMessage(hWndHeader, HDM_INSERTITEM, 0, (LPARAM)&hdi);
ret = SendMessageA(hWndHeader, HDM_INSERTITEMA, 0, (LPARAM)&hdi);
ok(ret != -1, "Adding item failed\n");
if (ret != -1)
@ -686,18 +691,18 @@ static void check_mask(void)
/* check result */
ZeroMemory(&hdi, sizeof(hdi));
hdi.mask = HDI_LPARAM | HDI_IMAGE;
SendMessage(hWndHeader, HDM_GETITEM, 0, (LPARAM)&hdi);
SendMessageA(hWndHeader, HDM_GETITEMA, 0, (LPARAM)&hdi);
ok(hdi.lParam == 133, "comctl32 4.0 field not set\n");
ok(hdi.iImage == 17, "comctl32 >4.0 field not set\n");
/* but in GETITEM if an unknown bit is set, comctl32 uses only version 4.0 fields */
ZeroMemory(&hdi, sizeof(hdi));
hdi.mask = 0x08000000 | HDI_LPARAM | HDI_IMAGE;
SendMessage(hWndHeader, HDM_GETITEM, 0, (LPARAM)&hdi);
SendMessageA(hWndHeader, HDM_GETITEMA, 0, (LPARAM)&hdi);
ok(hdi.lParam == 133, "comctl32 4.0 field not read\n");
ok(hdi.iImage == 0, "comctl32 >4.0 field shouldn't be read\n");
SendMessage(hWndHeader, HDM_DELETEITEM, 0, 0);
SendMessageA(hWndHeader, HDM_DELETEITEM, 0, 0);
}
}
@ -813,7 +818,7 @@ static void test_hdm_getitemrect(HWND hParent)
ok_sequence(sequences, PARENT_SEQ_INDEX, add_header_to_parent_seq,
"adder header control to parent", FALSE);
retVal = SendMessage(hChild, HDM_GETITEMRECT, 1, (LPARAM) &rect);
retVal = SendMessageA(hChild, HDM_GETITEMRECT, 1, (LPARAM) &rect);
ok(retVal == TRUE, "Getting item rect should TRUE, got %d\n", retVal);
/* check bounding rectangle information of 2nd header item */
expect(80, rect.left);
@ -821,7 +826,7 @@ static void test_hdm_getitemrect(HWND hParent)
expect(160, rect.right);
expect(g_customheight, rect.bottom);
retVal = SendMessage(hChild, HDM_GETITEMRECT, 0, (LPARAM) &rect);
retVal = SendMessageA(hChild, HDM_GETITEMRECT, 0, (LPARAM) &rect);
ok(retVal == TRUE, "Getting item rect should TRUE, got %d\n", retVal);
/* check bounding rectangle information of 1st header item */
@ -831,7 +836,7 @@ static void test_hdm_getitemrect(HWND hParent)
expect(80, rect.right);
expect(g_customheight, rect.bottom);
retVal = SendMessage(hChild, HDM_GETITEMRECT, 10, (LPARAM) &rect);
retVal = SendMessageA(hChild, HDM_GETITEMRECT, 10, (LPARAM) &rect);
ok(retVal == 0, "Getting rect of nonexistent item should return 0, got %d\n", retVal);
ok_sequence(sequences, HEADER_SEQ_INDEX, getItemRect_seq, "getItemRect sequence testing", FALSE);
@ -854,7 +859,7 @@ static void test_hdm_layout(HWND hParent)
"adder header control to parent", FALSE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_LAYOUT, 0, (LPARAM) &hdLayout);
retVal = SendMessageA(hChild, HDM_LAYOUT, 0, (LPARAM) &hdLayout);
expect(TRUE, retVal);
ok_sequence(sequences, HEADER_SEQ_INDEX, layout_seq, "layout sequence testing", FALSE);
@ -873,7 +878,7 @@ static void test_hdm_ordertoindex(HWND hParent)
"adder header control to parent", FALSE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_ORDERTOINDEX, 1, 0);
retVal = SendMessageA(hChild, HDM_ORDERTOINDEX, 1, 0);
expect(1, retVal);
ok_sequence(sequences, HEADER_SEQ_INDEX, orderToIndex_seq, "orderToIndex sequence testing", FALSE);
@ -901,7 +906,7 @@ static void test_hdm_hittest(HWND hParent)
"adder header control to parent", FALSE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_HITTEST, 0, (LPARAM) &hdHitTestInfo);
retVal = SendMessageA(hChild, HDM_HITTEST, 0, (LPARAM) &hdHitTestInfo);
expect(0, retVal);
expect(0, hdHitTestInfo.iItem);
expect(HHT_ONDIVIDER, hdHitTestInfo.flags);
@ -909,7 +914,7 @@ static void test_hdm_hittest(HWND hParent)
pt.x = secondItemRightBoundary - 1;
pt.y = bottomBoundary - 1;
hdHitTestInfo.pt = pt;
retVal = SendMessage(hChild, HDM_HITTEST, 1, (LPARAM) &hdHitTestInfo);
retVal = SendMessageA(hChild, HDM_HITTEST, 1, (LPARAM) &hdHitTestInfo);
expect(1, retVal);
expect(1, hdHitTestInfo.iItem);
expect(HHT_ONDIVIDER, hdHitTestInfo.flags);
@ -917,7 +922,7 @@ static void test_hdm_hittest(HWND hParent)
pt.x = secondItemRightBoundary;
pt.y = bottomBoundary + 1;
hdHitTestInfo.pt = pt;
retVal = SendMessage(hChild, HDM_HITTEST, 0, (LPARAM) &hdHitTestInfo);
retVal = SendMessageA(hChild, HDM_HITTEST, 0, (LPARAM) &hdHitTestInfo);
expect(-1, retVal);
expect(-1, hdHitTestInfo.iItem);
expect(HHT_BELOW, hdHitTestInfo.flags);
@ -941,12 +946,12 @@ static void test_hdm_sethotdivider(HWND hParent)
"adder header control to parent", FALSE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_SETHOTDIVIDER, TRUE, MAKELPARAM(5, 5));
retVal = SendMessageA(hChild, HDM_SETHOTDIVIDER, TRUE, MAKELPARAM(5, 5));
expect(0, retVal);
retVal = SendMessage(hChild, HDM_SETHOTDIVIDER, FALSE, 100);
retVal = SendMessageA(hChild, HDM_SETHOTDIVIDER, FALSE, 100);
expect(100, retVal);
retVal = SendMessage(hChild, HDM_SETHOTDIVIDER, FALSE, 1);
retVal = SendMessageA(hChild, HDM_SETHOTDIVIDER, FALSE, 1);
expect(1, retVal);
if (winetest_interactive)
ok_sequence(sequences, HEADER_SEQ_INDEX, setHotDivider_seq_interactive,
@ -972,13 +977,13 @@ static void test_hdm_imageMessages(HWND hParent)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
hIml = (HIMAGELIST) SendMessage(hChild, HDM_SETIMAGELIST, 0, (LPARAM) hImageList);
hIml = (HIMAGELIST) SendMessageA(hChild, HDM_SETIMAGELIST, 0, (LPARAM) hImageList);
ok(hIml == NULL, "Expected NULL, got %p\n", hIml);
hIml = (HIMAGELIST) SendMessage(hChild, HDM_GETIMAGELIST, 0, 0);
hIml = (HIMAGELIST) SendMessageA(hChild, HDM_GETIMAGELIST, 0, 0);
ok(hIml != NULL, "Expected non-NULL handle, got %p\n", hIml);
hIml = (HIMAGELIST) SendMessage(hChild, HDM_CREATEDRAGIMAGE, 0, 0);
hIml = (HIMAGELIST) SendMessageA(hChild, HDM_CREATEDRAGIMAGE, 0, 0);
ok(hIml != NULL, "Expected non-NULL handle, got %p\n", hIml);
ImageList_Destroy(hIml);
@ -997,12 +1002,11 @@ static void test_hdm_filterMessages(HWND hParent)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
hChild = create_custom_header_control(hParent, TRUE);
assert(hChild);
ok_sequence(sequences, PARENT_SEQ_INDEX, add_header_to_parent_seq,
"adder header control to parent", FALSE);
timeout = SendMessage(hChild, HDM_SETFILTERCHANGETIMEOUT, 1, 100);
SendMessage(hChild, HDM_SETFILTERCHANGETIMEOUT, 1, timeout);
timeout = SendMessageA(hChild, HDM_SETFILTERCHANGETIMEOUT, 1, 100);
SendMessageA(hChild, HDM_SETFILTERCHANGETIMEOUT, 1, timeout);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
@ -1012,18 +1016,18 @@ static void test_hdm_filterMessages(HWND hParent)
* return previous filter timeout value
*/
retVal = SendMessage(hChild, HDM_SETFILTERCHANGETIMEOUT, 1, 100);
retVal = SendMessageA(hChild, HDM_SETFILTERCHANGETIMEOUT, 1, 100);
expect(timeout, retVal);
todo_wine
{
retVal = SendMessage(hChild, HDM_CLEARFILTER, 0, 1);
retVal = SendMessageA(hChild, HDM_CLEARFILTER, 0, 1);
if (retVal == 0)
win_skip("HDM_CLEARFILTER needs 5.80\n");
else
expect(1, retVal);
retVal = SendMessage(hChild, HDM_EDITFILTER, 1, 0);
retVal = SendMessageA(hChild, HDM_EDITFILTER, 1, 0);
if (retVal == 0)
win_skip("HDM_EDITFILTER needs 5.80\n");
else
@ -1050,9 +1054,9 @@ static void test_hdm_unicodeformatMessages(HWND hParent)
"adder header control to parent", FALSE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_SETUNICODEFORMAT, TRUE, 0);
retVal = SendMessageA(hChild, HDM_SETUNICODEFORMAT, TRUE, 0);
expect(0, retVal);
retVal = SendMessage(hChild, HDM_GETUNICODEFORMAT, 0, 0);
retVal = SendMessageA(hChild, HDM_GETUNICODEFORMAT, 0, 0);
expect(1, retVal);
ok_sequence(sequences, HEADER_SEQ_INDEX, unicodeformatMessages_seq,
@ -1071,7 +1075,7 @@ static void test_hdm_bitmapmarginMessages(HWND hParent)
"adder header control to parent", FALSE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_GETBITMAPMARGIN, 0, 0);
retVal = SendMessageA(hChild, HDM_GETBITMAPMARGIN, 0, 0);
if (retVal == 0)
win_skip("HDM_GETBITMAPMARGIN needs 5.80\n");
else
@ -1097,7 +1101,7 @@ static void test_hdm_index_messages(HWND hParent)
static char fourthHeaderItem[] = "Date Modified";
static char *items[] = {firstHeaderItem, secondHeaderItem, thirdHeaderItem, fourthHeaderItem};
RECT rect;
HDITEM hdItem;
HDITEMA hdItem;
hdItem.mask = HDI_TEXT | HDI_WIDTH | HDI_FORMAT;
hdItem.fmt = HDF_LEFT;
hdItem.cxy = 80;
@ -1115,26 +1119,26 @@ static void test_hdm_index_messages(HWND hParent)
for ( loopcnt = 0 ; loopcnt < 4 ; loopcnt++ )
{
hdItem.pszText = items[loopcnt];
retVal = SendMessage(hChild, HDM_INSERTITEM, loopcnt, (LPARAM) &hdItem);
retVal = SendMessageA(hChild, HDM_INSERTITEMA, loopcnt, (LPARAM) &hdItem);
ok(retVal == loopcnt, "Adding item %d failed with return value %d\n", ( loopcnt + 1 ), retVal);
}
ok_sequence(sequences, HEADER_SEQ_INDEX, insertItem_seq, "insertItem sequence testing", FALSE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_DELETEITEM, 3, (LPARAM) &hdItem);
retVal = SendMessageA(hChild, HDM_DELETEITEM, 3, (LPARAM) &hdItem);
ok(retVal == TRUE, "Deleting item 3 should return TRUE, got %d\n", retVal);
retVal = SendMessage(hChild, HDM_GETITEMCOUNT, 0, 0);
retVal = SendMessageA(hChild, HDM_GETITEMCOUNT, 0, 0);
ok(retVal == 3, "Getting item count should return 3, got %d\n", retVal);
retVal = SendMessage(hChild, HDM_DELETEITEM, 3, (LPARAM) &hdItem);
retVal = SendMessageA(hChild, HDM_DELETEITEM, 3, (LPARAM) &hdItem);
ok(retVal == FALSE, "Deleting already-deleted item should return FALSE, got %d\n", retVal);
retVal = SendMessage(hChild, HDM_GETITEMCOUNT, 0, 0);
retVal = SendMessageA(hChild, HDM_GETITEMCOUNT, 0, 0);
ok(retVal == 3, "Getting item count should return 3, got %d\n", retVal);
retVal = SendMessage(hChild, HDM_DELETEITEM, 2, (LPARAM) &hdItem);
retVal = SendMessageA(hChild, HDM_DELETEITEM, 2, (LPARAM) &hdItem);
ok(retVal == TRUE, "Deleting item 2 should return TRUE, got %d\n", retVal);
retVal = SendMessage(hChild, HDM_GETITEMCOUNT, 0, 0);
retVal = SendMessageA(hChild, HDM_GETITEMCOUNT, 0, 0);
ok(retVal == 2, "Getting item count should return 2, got %d\n", retVal);
ok_sequence(sequences, HEADER_SEQ_INDEX, deleteItem_getItemCount_seq,
@ -1142,10 +1146,10 @@ static void test_hdm_index_messages(HWND hParent)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_GETITEM, 3, (LPARAM) &hdItem);
retVal = SendMessageA(hChild, HDM_GETITEMA, 3, (LPARAM) &hdItem);
ok(retVal == FALSE, "Getting already-deleted item should return FALSE, got %d\n", retVal);
retVal = SendMessage(hChild, HDM_GETITEM, 0, (LPARAM) &hdItem);
retVal = SendMessageA(hChild, HDM_GETITEMA, 0, (LPARAM) &hdItem);
ok(retVal == TRUE, "Getting the 1st header item should return TRUE, got %d\n", retVal);
ok_sequence(sequences, HEADER_SEQ_INDEX, getItem_seq, "getItem sequence testing", FALSE);
@ -1155,23 +1159,23 @@ static void test_hdm_index_messages(HWND hParent)
expect(0, strcmpResult);
expect(80, hdItem.cxy);
iSize = SendMessage(hChild, HDM_GETITEMCOUNT, 0, 0);
iSize = SendMessageA(hChild, HDM_GETITEMCOUNT, 0, 0);
/* item should be updated just after accepting new array */
ShowWindow(hChild, SW_HIDE);
retVal = SendMessage(hChild, HDM_SETORDERARRAY, iSize, (LPARAM) lpiarray);
retVal = SendMessageA(hChild, HDM_SETORDERARRAY, iSize, (LPARAM) lpiarray);
expect(TRUE, retVal);
rect.left = 0;
retVal = SendMessage(hChild, HDM_GETITEMRECT, 0, (LPARAM) &rect);
retVal = SendMessageA(hChild, HDM_GETITEMRECT, 0, (LPARAM) &rect);
expect(TRUE, retVal);
ok(rect.left != 0, "Expected updated rectangle\n");
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_SETORDERARRAY, iSize, (LPARAM) lpiarray);
retVal = SendMessageA(hChild, HDM_SETORDERARRAY, iSize, (LPARAM) lpiarray);
ok(retVal == TRUE, "Setting header items order should return TRUE, got %d\n", retVal);
retVal = SendMessage(hChild, HDM_GETORDERARRAY, iSize, (LPARAM) lpiarrayReceived);
retVal = SendMessageA(hChild, HDM_GETORDERARRAY, iSize, (LPARAM) lpiarrayReceived);
ok(retVal == TRUE, "Getting header items order should return TRUE, got %d\n", retVal);
ok_sequence(sequences, HEADER_SEQ_INDEX, orderArray_seq, "set_get_orderArray sequence testing", FALSE);
@ -1186,10 +1190,10 @@ static void test_hdm_index_messages(HWND hParent)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
retVal = SendMessage(hChild, HDM_SETITEM, 0, (LPARAM) &hdItem);
retVal = SendMessageA(hChild, HDM_SETITEMA, 0, (LPARAM) &hdItem);
ok(retVal == TRUE, "Aligning 1st header item to center should return TRUE, got %d\n", retVal);
hdItem.fmt = HDF_RIGHT | HDF_STRING;
retVal = SendMessage(hChild, HDM_SETITEM, 1, (LPARAM) &hdItem);
retVal = SendMessageA(hChild, HDM_SETITEMA, 1, (LPARAM) &hdItem);
ok(retVal == TRUE, "Aligning 2nd header item to right should return TRUE, got %d\n", retVal);
ok_sequence(sequences, HEADER_SEQ_INDEX, setItem_seq, "setItem sequence testing", FALSE);
@ -1199,7 +1203,7 @@ static void test_hdm_index_messages(HWND hParent)
static void test_hdf_fixedwidth(HWND hParent)
{
HWND hChild;
HDITEM hdItem;
HDITEMA hdItem;
DWORD ret;
RECT rect;
HDHITTESTINFO ht;
@ -1210,20 +1214,20 @@ static void test_hdf_fixedwidth(HWND hParent)
hdItem.fmt = HDF_FIXEDWIDTH;
hdItem.cxy = 80;
ret = SendMessage(hChild, HDM_INSERTITEM, 0, (LPARAM)&hdItem);
ret = SendMessageA(hChild, HDM_INSERTITEMA, 0, (LPARAM)&hdItem);
expect(0, ret);
/* try to change width */
rect.right = rect.bottom = 0;
SendMessage(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
SendMessageA(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
ok(rect.right != 0, "Expected not zero width\n");
ok(rect.bottom != 0, "Expected not zero height\n");
SendMessage(hChild, WM_LBUTTONDOWN, 0, MAKELPARAM(rect.right, rect.bottom / 2));
SendMessage(hChild, WM_MOUSEMOVE, 0, MAKELPARAM(rect.right + 20, rect.bottom / 2));
SendMessage(hChild, WM_LBUTTONUP, 0, MAKELPARAM(rect.right + 20, rect.bottom / 2));
SendMessageA(hChild, WM_LBUTTONDOWN, 0, MAKELPARAM(rect.right, rect.bottom / 2));
SendMessageA(hChild, WM_MOUSEMOVE, 0, MAKELPARAM(rect.right + 20, rect.bottom / 2));
SendMessageA(hChild, WM_LBUTTONUP, 0, MAKELPARAM(rect.right + 20, rect.bottom / 2));
SendMessage(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
SendMessageA(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
if (hdItem.cxy != rect.right)
{
@ -1236,29 +1240,29 @@ static void test_hdf_fixedwidth(HWND hParent)
hdItem.mask = HDI_WIDTH;
hdItem.cxy = 90;
ret = SendMessage(hChild, HDM_SETITEM, 0, (LPARAM)&hdItem);
ret = SendMessageA(hChild, HDM_SETITEMA, 0, (LPARAM)&hdItem);
expect(TRUE, ret);
rect.right = 0;
SendMessage(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
SendMessageA(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
expect(90, rect.right);
/* hittesting doesn't report ondivider flag for HDF_FIXEDWIDTH */
ht.pt.x = rect.right - 1;
ht.pt.y = rect.bottom / 2;
SendMessage(hChild, HDM_HITTEST, 0, (LPARAM)&ht);
SendMessageA(hChild, HDM_HITTEST, 0, (LPARAM)&ht);
expect(HHT_ONHEADER, ht.flags);
/* try to adjust with message */
hdItem.mask = HDI_FORMAT;
hdItem.fmt = 0;
ret = SendMessage(hChild, HDM_SETITEM, 0, (LPARAM)&hdItem);
ret = SendMessageA(hChild, HDM_SETITEMA, 0, (LPARAM)&hdItem);
expect(TRUE, ret);
ht.pt.x = 90;
ht.pt.y = rect.bottom / 2;
SendMessage(hChild, HDM_HITTEST, 0, (LPARAM)&ht);
SendMessageA(hChild, HDM_HITTEST, 0, (LPARAM)&ht);
expect(HHT_ONDIVIDER, ht.flags);
DestroyWindow(hChild);
@ -1267,7 +1271,7 @@ static void test_hdf_fixedwidth(HWND hParent)
static void test_hds_nosizing(HWND hParent)
{
HWND hChild;
HDITEM hdItem;
HDITEMA hdItem;
DWORD ret;
RECT rect;
HDHITTESTINFO ht;
@ -1278,24 +1282,24 @@ static void test_hds_nosizing(HWND hParent)
hdItem.mask = HDI_WIDTH;
hdItem.cxy = 80;
ret = SendMessage(hChild, HDM_INSERTITEM, 0, (LPARAM)&hdItem);
ret = SendMessageA(hChild, HDM_INSERTITEMA, 0, (LPARAM)&hdItem);
expect(0, ret);
/* HDS_NOSIZING only blocks hittesting */
ret = GetWindowLong(hChild, GWL_STYLE);
SetWindowLong(hChild, GWL_STYLE, ret | HDS_NOSIZING);
ret = GetWindowLongA(hChild, GWL_STYLE);
SetWindowLongA(hChild, GWL_STYLE, ret | HDS_NOSIZING);
/* try to change width with mouse gestures */
rect.right = rect.bottom = 0;
SendMessage(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
SendMessageA(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
ok(rect.right != 0, "Expected not zero width\n");
ok(rect.bottom != 0, "Expected not zero height\n");
SendMessage(hChild, WM_LBUTTONDOWN, 0, MAKELPARAM(rect.right, rect.bottom / 2));
SendMessage(hChild, WM_MOUSEMOVE, 0, MAKELPARAM(rect.right + 20, rect.bottom / 2));
SendMessage(hChild, WM_LBUTTONUP, 0, MAKELPARAM(rect.right + 20, rect.bottom / 2));
SendMessageA(hChild, WM_LBUTTONDOWN, 0, MAKELPARAM(rect.right, rect.bottom / 2));
SendMessageA(hChild, WM_MOUSEMOVE, 0, MAKELPARAM(rect.right + 20, rect.bottom / 2));
SendMessageA(hChild, WM_LBUTTONUP, 0, MAKELPARAM(rect.right + 20, rect.bottom / 2));
SendMessage(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
SendMessageA(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
if (hdItem.cxy != rect.right)
{
@ -1306,7 +1310,7 @@ static void test_hds_nosizing(HWND hParent)
/* this style doesn't set HDF_FIXEDWIDTH for items */
hdItem.mask = HDI_FORMAT;
ret = SendMessage(hChild, HDM_GETITEM, 0, (LPARAM)&hdItem);
ret = SendMessageA(hChild, HDM_GETITEMA, 0, (LPARAM)&hdItem);
expect(TRUE, ret);
ok(!(hdItem.fmt & HDF_FIXEDWIDTH), "Unexpected HDF_FIXEDWIDTH\n");
@ -1314,26 +1318,26 @@ static void test_hds_nosizing(HWND hParent)
hdItem.mask = HDI_WIDTH;
hdItem.cxy = 90;
ret = SendMessage(hChild, HDM_SETITEM, 0, (LPARAM)&hdItem);
ret = SendMessageA(hChild, HDM_SETITEMA, 0, (LPARAM)&hdItem);
expect(TRUE, ret);
rect.right = 0;
SendMessage(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
SendMessageA(hChild, HDM_GETITEMRECT, 0, (LPARAM)&rect);
expect(90, rect.right);
/* hittesting doesn't report ondivider flags for HDS_NOSIZING */
ht.pt.x = rect.right - 1;
ht.pt.y = rect.bottom / 2;
SendMessage(hChild, HDM_HITTEST, 0, (LPARAM)&ht);
SendMessageA(hChild, HDM_HITTEST, 0, (LPARAM)&ht);
expect(HHT_ONHEADER, ht.flags);
/* try to adjust with message */
ret = GetWindowLong(hChild, GWL_STYLE);
SetWindowLong(hChild, GWL_STYLE, ret & ~HDS_NOSIZING);
ret = GetWindowLongA(hChild, GWL_STYLE);
SetWindowLongA(hChild, GWL_STYLE, ret & ~HDS_NOSIZING);
ht.pt.x = 90;
ht.pt.y = rect.bottom / 2;
SendMessage(hChild, HDM_HITTEST, 0, (LPARAM)&ht);
SendMessageA(hChild, HDM_HITTEST, 0, (LPARAM)&ht);
expect(HHT_ONDIVIDER, ht.flags);
DestroyWindow(hChild);
@ -1364,7 +1368,7 @@ static LRESULT customdraw_1(int n, NMCUSTOMDRAW *nm)
return 0;
}
ok(FALSE, "To many custom draw messages (n=%d, nm->dwDrawStage=%d)\n", n, nm->dwDrawStage);
ok(FALSE, "Too many custom draw messages (n=%d, nm->dwDrawStage=%d)\n", n, nm->dwDrawStage);
return -1;
}
@ -1391,7 +1395,7 @@ static LRESULT customdraw_2(int n, NMCUSTOMDRAW *nm)
return 0;
}
ok(FALSE, "To many custom draw messages (n=%d, nm->dwDrawStage=%d)\n", n, nm->dwDrawStage);
ok(FALSE, "Too many custom draw messages (n=%d, nm->dwDrawStage=%d)\n", n, nm->dwDrawStage);
return 0;
}
@ -1421,7 +1425,7 @@ static LRESULT customdraw_3(int n, NMCUSTOMDRAW *nm)
return 0;
}
ok(FALSE, "To many custom draw messages (n=%d, nm->dwDrawStage=%d)\n", n, nm->dwDrawStage);
ok(FALSE, "Too many custom draw messages (n=%d, nm->dwDrawStage=%d)\n", n, nm->dwDrawStage);
return 0;
}
@ -1449,7 +1453,7 @@ static LRESULT customdraw_4(int n, NMCUSTOMDRAW *nm)
return 0;
}
ok(FALSE, "To many custom draw messages (n=%d, nm->dwDrawStage=%d)\n", n, nm->dwDrawStage);
ok(FALSE, "Too many custom draw messages (n=%d, nm->dwDrawStage=%d)\n", n, nm->dwDrawStage);
return 0;
}
@ -1466,7 +1470,7 @@ static void run_customdraw_scenario(CUSTOMDRAWPROC proc)
static void test_customdraw(void)
{
int i;
HDITEM item;
HDITEMA item;
RECT rect;
CHAR name[] = "Test";
hWndHeader = create_header_control();
@ -1482,7 +1486,7 @@ static void test_customdraw(void)
item.cxy = 50*(i+1);
item.pszText = name;
item.lParam = i*5;
SendMessage(hWndHeader, HDM_INSERTITEM, i, (LPARAM)&item);
SendMessageA(hWndHeader, HDM_INSERTITEMA, i, (LPARAM)&item);
}
run_customdraw_scenario(customdraw_1);
@ -1492,13 +1496,13 @@ static void test_customdraw(void)
ZeroMemory(&item, sizeof(item));
item.mask = HDI_FORMAT;
item.fmt = HDF_OWNERDRAW;
SendMessage(hWndHeader, HDM_SETITEM, 1, (LPARAM)&item);
SendMessageA(hWndHeader, HDM_SETITEMA, 1, (LPARAM)&item);
g_DrawItem.CtlID = 0;
g_DrawItem.CtlType = ODT_HEADER;
g_DrawItem.hwndItem = hWndHeader;
g_DrawItem.itemID = 1;
g_DrawItem.itemState = 0;
SendMessage(hWndHeader, HDM_GETITEMRECT, 1, (LPARAM)&g_DrawItem.rcItem);
SendMessageA(hWndHeader, HDM_GETITEMRECT, 1, (LPARAM)&g_DrawItem.rcItem);
run_customdraw_scenario(customdraw_4);
ok(g_DrawItemReceived, "WM_DRAWITEM not received\n");
DestroyWindow(hWndHeader);
@ -1517,7 +1521,7 @@ static void check_order(const int expected_id[], const int expected_order[],
for (i = 0; i < count; i++)
{
hdi.mask = HDI_LPARAM|HDI_ORDER;
SendMessage(hWndHeader, HDM_GETITEMA, i, (LPARAM)&hdi);
SendMessageA(hWndHeader, HDM_GETITEMA, i, (LPARAM)&hdi);
ok(hdi.lParam == expected_id[i],
"Invalid item ids after '%s'- item %d has lParam %d\n", type, i, (int)hdi.lParam);
ok(hdi.iOrder == expected_order[i],
@ -1556,7 +1560,7 @@ static void test_header_order (void)
for (i = 0; i < 5; i++)
{
hdi.lParam = i;
SendMessage(hWndHeader, HDM_INSERTITEMA, rand1[i], (LPARAM)&hdi);
SendMessageA(hWndHeader, HDM_INSERTITEMA, rand1[i], (LPARAM)&hdi);
rand();
}
check_order(ids1, ord1, 5, "insert without iOrder");
@ -1566,7 +1570,7 @@ static void test_header_order (void)
{
hdi.lParam = i + 5;
hdi.iOrder = rand2[i];
SendMessage(hWndHeader, HDM_INSERTITEMA, rand3[i], (LPARAM)&hdi);
SendMessageA(hWndHeader, HDM_INSERTITEMA, rand3[i], (LPARAM)&hdi);
rand(); rand();
}
check_order(ids2, ord2, 10, "insert with order");
@ -1575,13 +1579,13 @@ static void test_header_order (void)
for (i=0; i<10; i++)
{
hdi.iOrder = rand5[i];
SendMessage(hWndHeader, HDM_SETITEMA, rand4[i], (LPARAM)&hdi);
SendMessageA(hWndHeader, HDM_SETITEMA, rand4[i], (LPARAM)&hdi);
rand(); rand();
}
check_order(ids2, ord3, 10, "setitems changing order");
for (i=0; i<5; i++)
SendMessage(hWndHeader, HDM_DELETEITEM, rand6[i], 0);
SendMessageA(hWndHeader, HDM_DELETEITEM, rand6[i], 0);
check_order(ids4, ord4, 5, "deleteitem");
DestroyWindow(hWndHeader);
@ -1594,7 +1598,7 @@ static LRESULT CALLBACK HeaderTestWndProc(HWND hWnd, UINT msg, WPARAM wParam, LP
case WM_NOTIFY:
{
NMHEADERA *hdr = (NMHEADER *)lParam;
NMHEADERA *hdr = (NMHEADERA*)lParam;
EXPECTEDNOTIFY *expected;
int i;
@ -1644,7 +1648,7 @@ static LRESULT CALLBACK HeaderTestWndProc(HWND hWnd, UINT msg, WPARAM wParam, LP
return 0L;
}
static int init(void)
static BOOL init(void)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
@ -1659,7 +1663,7 @@ static int init(void)
if (!pInitCommonControlsEx)
{
skip("InitCommonControlsEx() is missing. Skipping the tests\n");
return 0;
return FALSE;
}
iccex.dwSize = sizeof(iccex);
@ -1671,7 +1675,7 @@ static int init(void)
wc.cbWndExtra = 0;
wc.hInstance = GetModuleHandleA(NULL);
wc.hIcon = NULL;
wc.hCursor = LoadCursorA(NULL, IDC_ARROW);
wc.hCursor = LoadCursorA(NULL, (LPCSTR)IDC_ARROW);
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = "HeaderTestClass";
@ -1693,36 +1697,37 @@ static int init(void)
CW_USEDEFAULT, CW_USEDEFAULT, 672+2*GetSystemMetrics(SM_CXSIZEFRAME),
226+GetSystemMetrics(SM_CYCAPTION)+2*GetSystemMetrics(SM_CYSIZEFRAME),
NULL, NULL, GetModuleHandleA(NULL), 0);
assert(hHeaderParentWnd != NULL);
ok(hHeaderParentWnd != NULL, "failed to create parent wnd\n");
ShowWindow(hHeaderParentWnd, SW_SHOW);
return 1;
return hHeaderParentWnd != NULL;
}
/* maximum 8 items allowed */
static void check_orderarray(HWND hwnd, DWORD start, DWORD set, DWORD expected,
int todo, int line)
BOOL todo, int line)
{
int count, i;
INT order[8];
DWORD ret, array = 0;
count = SendMessage(hwnd, HDM_GETITEMCOUNT, 0, 0);
count = SendMessageA(hwnd, HDM_GETITEMCOUNT, 0, 0);
/* initial order */
for(i = 1; i<=count; i++)
order[i-1] = start>>(4*(count-i)) & 0xf;
ret = SendMessage(hwnd, HDM_SETORDERARRAY, count, (LPARAM)order);
ret = SendMessageA(hwnd, HDM_SETORDERARRAY, count, (LPARAM)order);
ok_(__FILE__, line)(ret, "Expected HDM_SETORDERARAY to succeed, got %d\n", ret);
/* new order */
for(i = 1; i<=count; i++)
order[i-1] = set>>(4*(count-i)) & 0xf;
ret = SendMessage(hwnd, HDM_SETORDERARRAY, count, (LPARAM)order);
ret = SendMessageA(hwnd, HDM_SETORDERARRAY, count, (LPARAM)order);
ok_(__FILE__, line)(ret, "Expected HDM_SETORDERARAY to succeed, got %d\n", ret);
/* check actual order */
ret = SendMessage(hwnd, HDM_GETORDERARRAY, count, (LPARAM)order);
ret = SendMessageA(hwnd, HDM_GETORDERARRAY, count, (LPARAM)order);
ok_(__FILE__, line)(ret, "Expected HDM_GETORDERARAY to succeed, got %d\n", ret);
for(i = 1; i<=count; i++)
array |= order[i-1]<<(4*(count-i));
@ -1748,7 +1753,7 @@ static void test_hdm_orderarray(void)
addItem(hwnd, 1, NULL);
addItem(hwnd, 2, NULL);
ret = SendMessage(hwnd, HDM_GETORDERARRAY, 3, (LPARAM)order);
ret = SendMessageA(hwnd, HDM_GETORDERARRAY, 3, (LPARAM)order);
if (!ret)
{
win_skip("HDM_GETORDERARRAY not implemented.\n");
@ -1763,14 +1768,14 @@ static void test_hdm_orderarray(void)
if (0)
{
/* null pointer, crashes native */
ret = SendMessage(hwnd, HDM_SETORDERARRAY, 3, 0);
ret = SendMessageA(hwnd, HDM_SETORDERARRAY, 3, 0);
expect(FALSE, ret);
}
/* count out of limits */
ret = SendMessage(hwnd, HDM_SETORDERARRAY, 5, (LPARAM)order);
ret = SendMessageA(hwnd, HDM_SETORDERARRAY, 5, (LPARAM)order);
expect(FALSE, ret);
/* count out of limits */
ret = SendMessage(hwnd, HDM_SETORDERARRAY, 2, (LPARAM)order);
ret = SendMessageA(hwnd, HDM_SETORDERARRAY, 2, (LPARAM)order);
expect(FALSE, ret);
/* try with out of range item index */
@ -1823,7 +1828,6 @@ START_TEST(header)
HWND parent_hwnd;
ULONG_PTR ctx_cookie;
HANDLE hCtx;
HWND hwnd;
if (!init())
return;
@ -1856,22 +1860,6 @@ START_TEST(header)
return;
}
/* this is a XP SP3 failure workaround */
hwnd = CreateWindowExA(0, WC_HEADER, NULL,
WS_CHILD|WS_BORDER|WS_VISIBLE|HDS_BUTTONS|HDS_HORZ,
0, 0, 100, 100,
parent_hwnd, NULL, GetModuleHandleA(NULL), NULL);
if (!IsWindow(hwnd))
{
win_skip("FIXME: failed to create Header window.\n");
unload_v6_module(ctx_cookie, hCtx);
DestroyWindow(parent_hwnd);
return;
}
else
DestroyWindow(hwnd);
/* comctl32 version 6 tests start here */
test_hdf_fixedwidth(parent_hwnd);
test_hds_nosizing(parent_hwnd);

View file

@ -34,7 +34,7 @@
#include <windef.h>
#include <winbase.h>
#include <wingdi.h>
//#include "winuser.h"
#include <winuser.h>
#include <objbase.h>
#include <commctrl.h> /* must be included after objbase.h to get ImageList_Write */
#include <initguid.h>
@ -138,7 +138,7 @@ static HWND create_a_window(void)
char className[] = "bmwnd";
char winName[] = "Test Bitmap";
HWND hWnd;
static int registered = 0;
static BOOL registered = FALSE;
if (!registered)
{
@ -149,14 +149,14 @@ static HWND create_a_window(void)
cls.cbClsExtra = 0;
cls.cbWndExtra = 0;
cls.hInstance = 0;
cls.hIcon = LoadIconA (0, IDI_APPLICATION);
cls.hCursor = LoadCursorA (0, IDC_ARROW);
cls.hIcon = LoadIconA(0, (LPCSTR)IDI_APPLICATION);
cls.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
cls.hbrBackground = GetStockObject (WHITE_BRUSH);
cls.lpszMenuName = 0;
cls.lpszClassName = className;
RegisterClassA (&cls);
registered = 1;
registered = TRUE;
}
/* Setup window */
@ -813,7 +813,8 @@ static ULONG check_bitmap_data(const char *bm_data, ULONG bm_data_size,
image_size = DIB_GetWidthBytes(bmih->biWidth, bmih->biBitCount) * bmih->biHeight;
ok(bmih->biSizeImage == image_size, "wrong biSizeImage %u\n", bmih->biSizeImage);
#if 0
if (0)
{
char fname[256];
FILE *f;
@ -822,7 +823,7 @@ static ULONG check_bitmap_data(const char *bm_data, ULONG bm_data_size,
fwrite(bm_data, 1, bm_data_size, f);
fclose(f);
}
#endif
return hdr_size + image_size;
}
@ -871,7 +872,7 @@ static HBITMAP create_bitmap(INT cx, INT cy, COLORREF color, const char *comment
FillRect(hdc, &rc, hbrush);
DeleteObject(hbrush);
DrawText(hdc, comment, -1, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
DrawTextA(hdc, comment, -1, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
SelectObject(hdc, hbmp_old);
DeleteDC(hdc);
@ -1221,7 +1222,7 @@ static void test_shell_imagelist(void)
int cx, cy;
/* Try to load function from shell32 */
hShell32 = LoadLibrary("shell32.dll");
hShell32 = LoadLibraryA("shell32.dll");
pSHGetImageList = (void*)GetProcAddress(hShell32, (LPCSTR) 727);
if (!pSHGetImageList)
@ -2068,7 +2069,7 @@ START_TEST(imagelist)
ULONG_PTR ctx_cookie;
HANDLE hCtx;
HMODULE hComCtl32 = GetModuleHandle("comctl32.dll");
HMODULE hComCtl32 = GetModuleHandleA("comctl32.dll");
pImageList_Create = NULL; /* These are not needed for non-v6.0 tests*/
pImageList_Add = NULL;
pImageList_DrawIndirect = (void*)GetProcAddress(hComCtl32, "ImageList_DrawIndirect");

View file

@ -29,9 +29,9 @@ static HWND create_ipaddress_control (void)
{
HWND handle;
handle = CreateWindowEx(0, WC_IPADDRESS, NULL,
WS_BORDER|WS_VISIBLE, 0, 0, 0, 0,
NULL, NULL, NULL, NULL);
handle = CreateWindowExA(0, WC_IPADDRESSA, NULL,
WS_BORDER|WS_VISIBLE, 0, 0, 0, 0,
NULL, NULL, NULL, NULL);
return handle;
}
@ -49,19 +49,19 @@ static void test_get_set_text(void)
}
/* check text just after creation */
r = GetWindowText(hwnd, ip, sizeof(ip)/sizeof(CHAR));
r = GetWindowTextA(hwnd, ip, sizeof(ip)/sizeof(CHAR));
expect(7, r);
ok(strcmp(ip, "0.0.0.0") == 0, "Expected null IP address, got %s\n", ip);
SendMessage(hwnd, IPM_SETADDRESS, 0, MAKEIPADDRESS(127, 0, 0, 1));
r = GetWindowText(hwnd, ip, sizeof(ip)/sizeof(CHAR));
SendMessageA(hwnd, IPM_SETADDRESS, 0, MAKEIPADDRESS(127, 0, 0, 1));
r = GetWindowTextA(hwnd, ip, sizeof(ip)/sizeof(CHAR));
expect(9, r);
ok(strcmp(ip, "127.0.0.1") == 0, "Expected 127.0.0.1, got %s\n", ip);
DestroyWindow(hwnd);
}
static int init(void)
static BOOL init(void)
{
HMODULE hComctl32;
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
@ -72,7 +72,7 @@ static int init(void)
if (!pInitCommonControlsEx)
{
win_skip("InitCommonControlsEx() is missing.\n");
return 0;
return FALSE;
}
iccex.dwSize = sizeof(iccex);
@ -80,7 +80,7 @@ static int init(void)
iccex.dwICC = ICC_INTERNET_CLASSES;
pInitCommonControlsEx(&iccex);
return 1;
return TRUE;
}
START_TEST(ipaddress)

File diff suppressed because it is too large Load diff

View file

@ -102,8 +102,8 @@ static void test_GetPtrAW(void)
ok (count == sourcelen ||
broken(count == 0), /* win9x */
"Expected count to be %d, it was %d\n", sourcelen, count);
ok (!lstrcmp(dest, desttest) ||
broken(!lstrcmp(dest, "")), /* Win7 */
ok (!lstrcmpA(dest, desttest) ||
broken(!lstrcmpA(dest, "")), /* Win7 */
"Expected destination to not have changed\n");
count = pStr_GetPtrA(source, NULL, destsize);
@ -115,7 +115,7 @@ static void test_GetPtrAW(void)
ok (count == sourcelen ||
broken(count == sourcelen - 1), /* win9x */
"Expected count to be %d, it was %d\n", sourcelen, count);
ok (!lstrcmp(source, dest), "Expected source and destination to be the same\n");
ok (!lstrcmpA(source, dest), "Expected source and destination to be the same\n");
strcpy(dest, desttest);
count = pStr_GetPtrA(NULL, dest, destsize);

File diff suppressed because it is too large Load diff

View file

@ -409,7 +409,7 @@ static void test_MRUListA(void)
/* check entry 0 */
buffer[0] = 0;
iRet = pEnumMRUListA(hMRU, 0, buffer, 255);
ok(iRet == lstrlen(checks[3]), "EnumMRUList expected %d, got %d\n", lstrlen(checks[3]), iRet);
ok(iRet == lstrlenA(checks[3]), "EnumMRUList expected %d, got %d\n", lstrlenA(checks[3]), iRet);
ok(strcmp(buffer, checks[3]) == 0, "EnumMRUList expected %s, got %s\n", checks[3], buffer);
/* check entry 0 with a too small buffer */
@ -418,7 +418,7 @@ static void test_MRUListA(void)
buffer[2] = 'A'; /* unchanged */
buffer[3] = 0; /* unchanged */
iRet = pEnumMRUListA(hMRU, 0, buffer, 2);
ok(iRet == lstrlen(checks[3]), "EnumMRUList expected %d, got %d\n", lstrlen(checks[3]), iRet);
ok(iRet == lstrlenA(checks[3]), "EnumMRUList expected %d, got %d\n", lstrlenA(checks[3]), iRet);
ok(strcmp(buffer, "T") == 0, "EnumMRUList expected %s, got %s\n", "T", buffer);
/* make sure space after buffer has old values */
ok(buffer[2] == 'A', "EnumMRUList expected %02x, got %02x\n", 'A', buffer[2]);
@ -426,13 +426,13 @@ static void test_MRUListA(void)
/* check entry 1 */
buffer[0] = 0;
iRet = pEnumMRUListA(hMRU, 1, buffer, 255);
ok(iRet == lstrlen(checks[1]), "EnumMRUList expected %d, got %d\n", lstrlen(checks[1]), iRet);
ok(iRet == lstrlenA(checks[1]), "EnumMRUList expected %d, got %d\n", lstrlenA(checks[1]), iRet);
ok(strcmp(buffer, checks[1]) == 0, "EnumMRUList expected %s, got %s\n", checks[1], buffer);
/* check entry 2 */
buffer[0] = 0;
iRet = pEnumMRUListA(hMRU, 2, buffer, 255);
ok(iRet == lstrlen(checks[2]), "EnumMRUList expected %d, got %d\n", lstrlen(checks[2]), iRet);
ok(iRet == lstrlenA(checks[2]), "EnumMRUList expected %d, got %d\n", lstrlenA(checks[2]), iRet);
ok(strcmp(buffer, checks[2]) == 0, "EnumMRUList expected %s, got %s\n", checks[2], buffer);
/* check out of bounds entry 3 */

View file

@ -106,7 +106,7 @@ static inline void flush_sequences(struct msg_sequence **seq, int n)
}
static void ok_sequence_(struct msg_sequence **seq, int sequence_index,
const struct message *expected, const char *context, int todo,
const struct message *expected, const char *context, BOOL todo,
const char *file, int line)
{
struct msg_sequence *msg_seq = seq[sequence_index];

View file

@ -103,7 +103,7 @@ static BOOL register_parent_wnd_class(void)
cls.cbWndExtra = 0;
cls.hInstance = GetModuleHandleA(NULL);
cls.hIcon = 0;
cls.hCursor = LoadCursorA(0, IDC_ARROW);
cls.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
cls.hbrBackground = GetStockObject(WHITE_BRUSH);
cls.lpszMenuName = NULL;
cls.lpszClassName = "Pager test parent class";
@ -115,7 +115,7 @@ static HWND create_parent_window(void)
if (!register_parent_wnd_class())
return NULL;
return CreateWindow("Pager test parent class", "Pager test parent window",
return CreateWindowA("Pager test parent class", "Pager test parent window",
WS_OVERLAPPED | WS_VISIBLE,
0, 0, 200, 200, 0, NULL, GetModuleHandleA(NULL), NULL );
}

View file

@ -17,7 +17,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <assert.h>
#include <stdarg.h>
#include "windef.h"
@ -48,12 +47,12 @@ static void flush_events(void)
while (diff > 0)
{
if (MsgWaitForMultipleObjects( 0, NULL, FALSE, min(10,diff), QS_ALLINPUT ) == WAIT_TIMEOUT) break;
while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
while (PeekMessageA( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
diff = time - GetTickCount();
}
}
static LRESULT CALLBACK ProgressTestWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static LRESULT CALLBACK progress_test_wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg) {
@ -72,7 +71,7 @@ static WNDPROC progress_wndproc;
static BOOL erased;
static RECT last_paint_rect;
static LRESULT CALLBACK ProgressSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static LRESULT CALLBACK progress_subclass_proc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (msg == WM_PAINT)
{
@ -82,7 +81,7 @@ static LRESULT CALLBACK ProgressSubclassProc(HWND hWnd, UINT msg, WPARAM wParam,
{
erased = TRUE;
}
return CallWindowProc(progress_wndproc, hWnd, msg, wParam, lParam);
return CallWindowProcA(progress_wndproc, hWnd, msg, wParam, lParam);
}
@ -99,7 +98,8 @@ static void init(void)
BOOL (WINAPI *pInitCommonControlsEx)(const INITCOMMONCONTROLSEX*);
WNDCLASSA wc;
RECT rect;
BOOL ret;
hComctl32 = GetModuleHandleA("comctl32.dll");
pInitCommonControlsEx = (void*)GetProcAddress(hComctl32, "InitCommonControlsEx");
if (pInitCommonControlsEx)
@ -117,28 +117,29 @@ static void init(void)
wc.cbWndExtra = 0;
wc.hInstance = GetModuleHandleA(NULL);
wc.hIcon = NULL;
wc.hCursor = LoadCursorA(NULL, IDC_ARROW);
wc.hCursor = LoadCursorA(NULL, (LPCSTR)IDC_ARROW);
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = progressTestClass;
wc.lpfnWndProc = ProgressTestWndProc;
wc.lpfnWndProc = progress_test_wnd_proc;
RegisterClassA(&wc);
rect.left = 0;
rect.top = 0;
rect.right = 400;
rect.bottom = 20;
assert(AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE));
ret = AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE);
ok(ret, "got %d\n", ret);
hProgressParentWnd = CreateWindowExA(0, progressTestClass, "Progress Bar Test", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, rect.right - rect.left, rect.bottom - rect.top, NULL, NULL, GetModuleHandleA(NULL), 0);
assert(hProgressParentWnd != NULL);
ok(hProgressParentWnd != NULL, "failed to create parent wnd\n");
GetClientRect(hProgressParentWnd, &rect);
hProgressWnd = CreateWindowEx(0, PROGRESS_CLASS, "", WS_CHILD | WS_VISIBLE,
hProgressWnd = CreateWindowExA(0, PROGRESS_CLASSA, "", WS_CHILD | WS_VISIBLE,
0, 0, rect.right, rect.bottom, hProgressParentWnd, NULL, GetModuleHandleA(NULL), 0);
assert(hProgressWnd != NULL);
progress_wndproc = (WNDPROC)SetWindowLongPtr(hProgressWnd, GWLP_WNDPROC, (LPARAM)ProgressSubclassProc);
ok(hProgressWnd != NULL, "failed to create parent wnd\n");
progress_wndproc = (WNDPROC)SetWindowLongPtrA(hProgressWnd, GWLP_WNDPROC, (LPARAM)progress_subclass_proc);
ShowWindow(hProgressParentWnd, SW_SHOWNORMAL);
ok(GetUpdateRect(hProgressParentWnd, NULL, FALSE), "GetUpdateRect: There should be a region that needs to be updated\n");
@ -146,7 +147,6 @@ static void init(void)
update_window(hProgressParentWnd);
}
static void cleanup(void)
{
MSG msg;
@ -201,13 +201,13 @@ static void test_redraw(void)
position is not in the new range, it does.
Don't test this, it may change in future Windows versions. */
SendMessage(hProgressWnd, PBM_SETPOS, 0, 0);
SendMessageA(hProgressWnd, PBM_SETPOS, 0, 0);
update_window(hProgressWnd);
/* increase to 10 - no background erase required */
erased = FALSE;
SetRectEmpty(&last_paint_rect);
SendMessage(hProgressWnd, PBM_SETPOS, 10, 0);
SendMessageA(hProgressWnd, PBM_SETPOS, 10, 0);
GetClientRect(hProgressWnd, &client_rect);
ok(EqualRect(&last_paint_rect, &client_rect),
"last_paint_rect was { %d, %d, %d, %d } instead of { %d, %d, %d, %d }\n",
@ -219,7 +219,7 @@ static void test_redraw(void)
/* decrease to 0 - background erase will be required */
erased = FALSE;
SetRectEmpty(&last_paint_rect);
SendMessage(hProgressWnd, PBM_SETPOS, 0, 0);
SendMessageA(hProgressWnd, PBM_SETPOS, 0, 0);
GetClientRect(hProgressWnd, &client_rect);
ok(EqualRect(&last_paint_rect, &client_rect),
"last_paint_rect was { %d, %d, %d, %d } instead of { %d, %d, %d, %d }\n",

View file

@ -47,7 +47,7 @@ static void flush_events(void)
while (diff > 0)
{
if (MsgWaitForMultipleObjects( 0, NULL, FALSE, min_timeout, QS_ALLINPUT ) == WAIT_TIMEOUT) break;
while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
while (PeekMessageA( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
diff = time - GetTickCount();
}
}
@ -134,7 +134,7 @@ static void test_title(void)
hdlg = (HWND)PropertySheetA(&psh);
ok(hdlg != INVALID_HANDLE_VALUE, "got invalid handle value %p\n", hdlg);
style = GetWindowLong(hdlg, GWL_STYLE);
style = GetWindowLongA(hdlg, GWL_STYLE);
ok(style == (WS_POPUP|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CAPTION|WS_SYSMENU|
DS_CONTEXTHELP|DS_MODALFRAME|DS_SETFONT|DS_3DLOOK),
"got unexpected style: %x\n", style);
@ -174,14 +174,17 @@ static void test_nopage(void)
ok(hdlg != INVALID_HANDLE_VALUE, "got invalid handle value %p\n", hdlg);
ShowWindow(hdlg,SW_NORMAL);
SendMessage(hdlg, PSM_REMOVEPAGE, 0, 0);
hpage = PropSheet_GetCurrentPageHwnd(hdlg);
ok(hpage == NULL, "expected no current page, got %p, index=%d\n", hpage, PropSheet_HwndToIndex(hdlg, hpage));
SendMessageA(hdlg, PSM_REMOVEPAGE, 0, 0);
hpage = /* PropSheet_GetCurrentPageHwnd(hdlg); */
(HWND)SendMessageA(hdlg, PSM_GETCURRENTPAGEHWND, 0, 0);
active_page = /* PropSheet_HwndToIndex(hdlg, hpage)); */
(int)SendMessageA(hdlg, PSM_HWNDTOINDEX, (WPARAM)hpage, 0);
ok(hpage == NULL, "expected no current page, got %p, index=%d\n", hpage, active_page);
flush_events();
RedrawWindow(hdlg,NULL,NULL,RDW_UPDATENOW|RDW_ERASENOW);
/* Check that the property sheet was fully redrawn */
ok(!PeekMessage(&msg, 0, WM_PAINT, WM_PAINT, PM_NOREMOVE),
ok(!PeekMessageA(&msg, 0, WM_PAINT, WM_PAINT, PM_NOREMOVE),
"expected no pending WM_PAINT messages\n");
DestroyWindow(hdlg);
}
@ -210,7 +213,7 @@ static void register_parent_wnd_class(void)
cls.cbWndExtra = 0;
cls.hInstance = GetModuleHandleA(NULL);
cls.hIcon = 0;
cls.hCursor = LoadCursorA(0, IDC_ARROW);
cls.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
cls.hbrBackground = GetStockObject(WHITE_BRUSH);
cls.lpszMenuName = NULL;
cls.lpszClassName = "parent class";
@ -262,12 +265,13 @@ static INT_PTR CALLBACK nav_page_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM
LPNMHDR hdr = (LPNMHDR)lparam;
switch(hdr->code){
case PSN_SETACTIVE:
active_page = PropSheet_HwndToIndex(hdr->hwndFrom, hwnd);
active_page = /* PropSheet_HwndToIndex(hdr->hwndFrom, hwnd); */
(int)SendMessageA(hdr->hwndFrom, PSM_HWNDTOINDEX, (WPARAM)hwnd, 0);
return TRUE;
case PSN_KILLACTIVE:
/* prevent navigation away from the fourth page */
if(active_page == 3){
SetWindowLongPtr(hwnd, DWLP_MSGRESULT, TRUE);
SetWindowLongPtrA(hwnd, DWLP_MSGRESULT, TRUE);
return TRUE;
}
}
@ -295,25 +299,25 @@ static void test_wiznavigation(void)
psp[0].dwSize = sizeof(PROPSHEETPAGEA);
psp[0].hInstance = GetModuleHandleA(NULL);
U(psp[0]).pszTemplate = MAKEINTRESOURCE(IDD_PROP_PAGE_INTRO);
U(psp[0]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_INTRO);
psp[0].pfnDlgProc = nav_page_proc;
hpsp[0] = CreatePropertySheetPageA(&psp[0]);
psp[1].dwSize = sizeof(PROPSHEETPAGEA);
psp[1].hInstance = GetModuleHandleA(NULL);
U(psp[1]).pszTemplate = MAKEINTRESOURCE(IDD_PROP_PAGE_EDIT);
U(psp[1]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_EDIT);
psp[1].pfnDlgProc = nav_page_proc;
hpsp[1] = CreatePropertySheetPageA(&psp[1]);
psp[2].dwSize = sizeof(PROPSHEETPAGEA);
psp[2].hInstance = GetModuleHandleA(NULL);
U(psp[2]).pszTemplate = MAKEINTRESOURCE(IDD_PROP_PAGE_RADIO);
U(psp[2]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_RADIO);
psp[2].pfnDlgProc = nav_page_proc;
hpsp[2] = CreatePropertySheetPageA(&psp[2]);
psp[3].dwSize = sizeof(PROPSHEETPAGEA);
psp[3].hInstance = GetModuleHandleA(NULL);
U(psp[3]).pszTemplate = MAKEINTRESOURCE(IDD_PROP_PAGE_EXIT);
U(psp[3]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_EXIT);
psp[3].pfnDlgProc = nav_page_proc;
hpsp[3] = CreatePropertySheetPageA(&psp[3]);
@ -330,71 +334,71 @@ static void test_wiznavigation(void)
ok(active_page == 0, "Active page should be 0. Is: %d\n", active_page);
style = GetWindowLong(hdlg, GWL_STYLE) & ~(DS_CONTEXTHELP|WS_SYSMENU);
style = GetWindowLongA(hdlg, GWL_STYLE) & ~(DS_CONTEXTHELP|WS_SYSMENU);
ok(style == (WS_POPUP|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CAPTION|
DS_MODALFRAME|DS_SETFONT|DS_3DLOOK),
"got unexpected style: %x\n", style);
control = GetFocus();
controlID = GetWindowLongPtr(control, GWLP_ID);
controlID = GetWindowLongPtrA(control, GWLP_ID);
ok(controlID == nextID, "Focus should have been set to the Next button. Expected: %d, Found: %ld\n", nextID, controlID);
/* simulate pressing the Next button */
SendMessage(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0);
SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0);
if (!active_page) hwndtoindex_supported = FALSE;
if (hwndtoindex_supported)
ok(active_page == 1, "Active page should be 1 after pressing Next. Is: %d\n", active_page);
control = GetFocus();
controlID = GetWindowLongPtr(control, GWLP_ID);
controlID = GetWindowLongPtrA(control, GWLP_ID);
ok(controlID == IDC_PS_EDIT1, "Focus should be set to the first item on the second page. Expected: %d, Found: %ld\n", IDC_PS_EDIT1, controlID);
defidres = SendMessage(hdlg, DM_GETDEFID, 0, 0);
defidres = SendMessageA(hdlg, DM_GETDEFID, 0, 0);
ok(defidres == MAKELRESULT(nextID, DC_HASDEFID), "Expected default button ID to be %d, is %d\n", nextID, LOWORD(defidres));
/* set the focus to the second edit box on this page */
SetFocus(GetNextDlgTabItem(hdlg, control, FALSE));
/* press next again */
SendMessage(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0);
SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0);
if (hwndtoindex_supported)
ok(active_page == 2, "Active page should be 2 after pressing Next. Is: %d\n", active_page);
control = GetFocus();
controlID = GetWindowLongPtr(control, GWLP_ID);
controlID = GetWindowLongPtrA(control, GWLP_ID);
ok(controlID == IDC_PS_RADIO1, "Focus should have been set to item on third page. Expected: %d, Found %ld\n", IDC_PS_RADIO1, controlID);
/* back button */
SendMessage(hdlg, PSM_PRESSBUTTON, PSBTN_BACK, 0);
SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_BACK, 0);
if (hwndtoindex_supported)
ok(active_page == 1, "Active page should be 1 after pressing Back. Is: %d\n", active_page);
control = GetFocus();
controlID = GetWindowLongPtr(control, GWLP_ID);
controlID = GetWindowLongPtrA(control, GWLP_ID);
ok(controlID == IDC_PS_EDIT1, "Focus should have been set to the first item on second page. Expected: %d, Found %ld\n", IDC_PS_EDIT1, controlID);
defidres = SendMessage(hdlg, DM_GETDEFID, 0, 0);
defidres = SendMessageA(hdlg, DM_GETDEFID, 0, 0);
ok(defidres == MAKELRESULT(backID, DC_HASDEFID), "Expected default button ID to be %d, is %d\n", backID, LOWORD(defidres));
/* press next twice */
SendMessage(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0);
SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0);
if (hwndtoindex_supported)
ok(active_page == 2, "Active page should be 2 after pressing Next. Is: %d\n", active_page);
SendMessage(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0);
SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0);
if (hwndtoindex_supported)
ok(active_page == 3, "Active page should be 3 after pressing Next. Is: %d\n", active_page);
else
active_page = 3;
control = GetFocus();
controlID = GetWindowLongPtr(control, GWLP_ID);
controlID = GetWindowLongPtrA(control, GWLP_ID);
ok(controlID == nextID, "Focus should have been set to the Next button. Expected: %d, Found: %ld\n", nextID, controlID);
/* try to navigate away, but shouldn't be able to */
SendMessage(hdlg, PSM_PRESSBUTTON, PSBTN_BACK, 0);
SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_BACK, 0);
ok(active_page == 3, "Active page should still be 3 after pressing Back. Is: %d\n", active_page);
defidres = SendMessage(hdlg, DM_GETDEFID, 0, 0);
defidres = SendMessageA(hdlg, DM_GETDEFID, 0, 0);
ok(defidres == MAKELRESULT(nextID, DC_HASDEFID), "Expected default button ID to be %d, is %d\n", nextID, LOWORD(defidres));
DestroyWindow(hdlg);
@ -495,7 +499,7 @@ static void test_custom_default_button(void)
psp[0].dwSize = sizeof (PROPSHEETPAGEA);
psp[0].dwFlags = PSP_USETITLE;
psp[0].hInstance = GetModuleHandleA(NULL);
U(psp[0]).pszTemplate = MAKEINTRESOURCE(IDD_PROP_PAGE_WITH_CUSTOM_DEFAULT_BUTTON);
U(psp[0]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_WITH_CUSTOM_DEFAULT_BUTTON);
U2(psp[0]).pszIcon = NULL;
psp[0].pfnDlgProc = page_with_custom_default_button_dlg_proc;
psp[0].pszTitle = "Page1";
@ -521,10 +525,10 @@ static void test_custom_default_button(void)
ok(hdlg != INVALID_HANDLE_VALUE, "Cannot create the property sheet\n");
/* Set the Add button as the default button. */
SendMessage(hdlg, DM_SETDEFID, (WPARAM)IDC_PS_PUSHBUTTON1, 0);
SendMessageA(hdlg, DM_SETDEFID, (WPARAM)IDC_PS_PUSHBUTTON1, 0);
/* Make sure the default button is the Add button. */
result = SendMessage(hdlg, DM_GETDEFID, 0, 0);
result = SendMessageA(hdlg, DM_GETDEFID, 0, 0);
ok(DC_HASDEFID == HIWORD(result), "The property sheet does not have a default button\n");
ok(IDC_PS_PUSHBUTTON1 == LOWORD(result), "The default button is not the Add button\n");
@ -533,12 +537,13 @@ static void test_custom_default_button(void)
keybd_event(VK_RETURN, 0, 0, 0);
/* Process all the messages in the queue for this thread. */
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
while (PeekMessageA(&msg, NULL, 0, 0, PM_REMOVE))
{
if (!PropSheet_IsDialogMessage(hdlg, &msg))
/* (!PropSheet_IsDialogMessage(hdlg, &msg)) */
if (!((BOOL)SendMessageA(hdlg, PSM_ISDIALOGMESSAGE, 0, (LPARAM)&msg)))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
DispatchMessageA(&msg);
}
}
@ -682,7 +687,7 @@ static LRESULT CALLBACK sheet_callback_messages_proc (HWND hwnd, UINT msg, WPARA
{
save_message(hwnd, msg, wParam, lParam, RECEIVER_SHEET_WINPROC);
return CallWindowProc (oldWndProc, hwnd, msg, wParam, lParam);
return CallWindowProcA(oldWndProc, hwnd, msg, wParam, lParam);
}
static int CALLBACK sheet_callback_messages(HWND hwnd, UINT msg, LPARAM lParam)
@ -692,8 +697,8 @@ static int CALLBACK sheet_callback_messages(HWND hwnd, UINT msg, LPARAM lParam)
switch (msg)
{
case PSCB_INITIALIZED:
oldWndProc = (WNDPROC)GetWindowLongPtr (hwnd, GWLP_WNDPROC);
SetWindowLongPtr (hwnd, GWLP_WNDPROC, (LONG_PTR)&sheet_callback_messages_proc);
oldWndProc = (WNDPROC)GetWindowLongPtrA(hwnd, GWLP_WNDPROC);
SetWindowLongPtrA(hwnd, GWLP_WNDPROC, (LONG_PTR)&sheet_callback_messages_proc);
return TRUE;
}
@ -721,7 +726,7 @@ static void test_messages(void)
psp.dwSize = sizeof(psp);
psp.dwFlags = 0;
psp.hInstance = GetModuleHandleA(NULL);
U(psp).pszTemplate = MAKEINTRESOURCE(IDD_PROP_PAGE_MESSAGE_TEST);
U(psp).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_MESSAGE_TEST);
U2(psp).pszIcon = NULL;
psp.pfnDlgProc = page_dlg_proc_messages;
psp.lParam = 0;
@ -761,7 +766,7 @@ static void test_PSM_ADDPAGE(void)
psp.dwSize = sizeof(psp);
psp.dwFlags = 0;
psp.hInstance = GetModuleHandleA(NULL);
U(psp).pszTemplate = MAKEINTRESOURCE(IDD_PROP_PAGE_MESSAGE_TEST);
U(psp).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_MESSAGE_TEST);
U2(psp).pszIcon = NULL;
psp.pfnDlgProc = page_dlg_proc_messages;
psp.lParam = 0;
@ -771,7 +776,7 @@ static void test_PSM_ADDPAGE(void)
hpsp[1] = CreatePropertySheetPageA(&psp);
hpsp[2] = CreatePropertySheetPageA(&psp);
U(psp).pszTemplate = MAKEINTRESOURCE(IDD_PROP_PAGE_ERROR);
U(psp).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_ERROR);
hpsp[3] = CreatePropertySheetPageA(&psp);
psp.dwFlags = PSP_PREMATURE;

View file

@ -52,7 +52,7 @@ static int system_font_height;
#define expect_eq(line, expr, value, type, format) { type ret = expr;\
ok((value) == ret, #expr " expected " format " got " format " from line %d\n", (value), (ret), line); }
static INT CALLBACK is_font_installed_proc(const LOGFONT *elf, const TEXTMETRIC *ntm, DWORD type, LPARAM lParam)
static INT CALLBACK is_font_installed_proc(const LOGFONTA *elf, const TEXTMETRICA *ntm, DWORD type, LPARAM lParam)
{
return 0;
}
@ -71,10 +71,10 @@ static BOOL is_font_installed(const char *name)
static void init_system_font_height(void) {
HDC hDC;
TEXTMETRIC tm;
TEXTMETRICA tm;
hDC = CreateCompatibleDC(NULL);
GetTextMetrics(hDC, &tm);
GetTextMetricsA(hDC, &tm);
DeleteDC(NULL);
system_font_height = tm.tmHeight;
@ -84,8 +84,8 @@ static HWND create_rebar_control(void)
{
HWND hwnd;
hwnd = CreateWindow(REBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (HMENU)17, GetModuleHandle(NULL), NULL);
hwnd = CreateWindowA(REBARCLASSNAMEA, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (HMENU)17, GetModuleHandleA(NULL), NULL);
ok(hwnd != NULL, "Failed to create Rebar\n");
SendMessageA(hwnd, WM_SETFONT, (WPARAM)GetStockObject(SYSTEM_FONT), 0);
@ -96,15 +96,15 @@ static HWND create_rebar_control(void)
static HWND build_toolbar(int nr, HWND hParent)
{
TBBUTTON btns[8];
HWND hToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | CCS_NORESIZE, 0, 0, 0, 0,
hParent, (HMENU)5, GetModuleHandle(NULL), NULL);
HWND hToolbar = CreateWindowExA(0, TOOLBARCLASSNAMEA, NULL, WS_CHILD | WS_VISIBLE | CCS_NORESIZE, 0, 0, 0, 0,
hParent, (HMENU)5, GetModuleHandleA(NULL), NULL);
int iBitmapId = 0;
int i;
ok(hToolbar != NULL, "Toolbar creation problem\n");
ok(SendMessage(hToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0) == 0, "TB_BUTTONSTRUCTSIZE failed\n");
ok(SendMessage(hToolbar, TB_AUTOSIZE, 0, 0) == 0, "TB_AUTOSIZE failed\n");
ok(SendMessage(hToolbar, WM_SETFONT, (WPARAM)GetStockObject(SYSTEM_FONT), 0)==1, "WM_SETFONT\n");
ok(SendMessageA(hToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0) == 0, "TB_BUTTONSTRUCTSIZE failed\n");
ok(SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0) == 0, "TB_AUTOSIZE failed\n");
ok(SendMessageA(hToolbar, WM_SETFONT, (WPARAM)GetStockObject(SYSTEM_FONT), 0)==1, "WM_SETFONT\n");
for (i=0; i<5+nr; i++)
{
@ -121,8 +121,8 @@ static HWND build_toolbar(int nr, HWND hParent)
case 1: iBitmapId = IDB_VIEW_SMALL_COLOR; break;
case 2: iBitmapId = IDB_STD_SMALL_COLOR; break;
}
ok(SendMessage(hToolbar, TB_LOADIMAGES, iBitmapId, (LPARAM)HINST_COMMCTRL) == 0, "TB_LOADIMAGES failed\n");
ok(SendMessage(hToolbar, TB_ADDBUTTONS, 5+nr, (LPARAM)btns), "TB_ADDBUTTONS failed\n");
ok(SendMessageA(hToolbar, TB_LOADIMAGES, iBitmapId, (LPARAM)HINST_COMMCTRL) == 0, "TB_LOADIMAGES failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 5+nr, (LPARAM)btns), "TB_ADDBUTTONSA failed\n");
return hToolbar;
}
@ -171,10 +171,10 @@ static void dump_sizes(HWND hRebar)
printf("{{0, 0, 0, 0}, 0, 0},");
for (i=0; i<count; i++)
{
REBARBANDINFO rbi;
REBARBANDINFOA rbi;
rbi.cbSize = REBARBANDINFOA_V6_SIZE;
rbi.fMask = RBBIM_SIZE | RBBIM_CHILDSIZE | RBBIM_STYLE;
ok(SendMessageA(hRebar, RB_GETBANDINFOA, i, (LPARAM)&rbi), "RB_GETBANDINFO failed\n");
ok(SendMessageA(hRebar, RB_GETBANDINFOA, i, (LPARAM)&rbi), "RB_GETBANDINFOA failed\n");
ok(SendMessageA(hRebar, RB_GETRECT, i, (LPARAM)&r), "RB_GETRECT failed\n");
printf("%s{ {%3d, %3d, %3d, %3d}, 0x%02x, %d}, ", (i%2==0 ? "\n " : ""), r.left, r.top, r.right, r.bottom,
rbi.fStyle, rbi.cx);
@ -444,18 +444,18 @@ static int rbsize_numtests = 0;
#define check_sizes_todo(todomask) { \
RECT rc; \
REBARBANDINFO rbi; \
REBARBANDINFOA rbi; \
int count, i/*, mask=(todomask)*/; \
const rbsize_result_t *res = &rbsize_results[rbsize_numtests]; \
GetClientRect(hRebar, &rc); \
check_rect("client", rc, res->rcClient); \
count = SendMessage(hRebar, RB_GETROWCOUNT, 0, 0); \
count = SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0); \
compare(count, res->nRows, "%d"); \
for (i=0; i<min(count, res->nRows); i++) { \
int height = SendMessageA(hRebar, RB_GETROWHEIGHT, 0, 0);\
ok(height == res->cyRowHeights[i], "Height mismatch for row %d - %d vs %d\n", i, res->cyRowHeights[i], height); \
} \
count = SendMessage(hRebar, RB_GETBANDCOUNT, 0, 0); \
count = SendMessageA(hRebar, RB_GETBANDCOUNT, 0, 0); \
compare(count, res->nBands, "%d"); \
for (i=0; i<min(count, res->nBands); i++) { \
ok(SendMessageA(hRebar, RB_GETRECT, i, (LPARAM)&rc) == 1, "RB_GETRECT\n"); \
@ -463,7 +463,7 @@ static int rbsize_numtests = 0;
check_rect("band", rc, res->bands[i].rc); \
rbi.cbSize = REBARBANDINFOA_V6_SIZE; \
rbi.fMask = RBBIM_STYLE | RBBIM_SIZE; \
ok(SendMessageA(hRebar, RB_GETBANDINFO, i, (LPARAM)&rbi) == 1, "RB_GETBANDINFO\n"); \
ok(SendMessageA(hRebar, RB_GETBANDINFOA, i, (LPARAM)&rbi) == 1, "RB_GETBANDINFOA\n"); \
compare(rbi.fStyle, res->bands[i].fStyle, "%x"); \
compare(rbi.cx, res->bands[i].cx, "%d"); \
} \
@ -489,13 +489,13 @@ static void add_band_w(HWND hRebar, LPCSTR lpszText, int cxMinChild, int cx, int
rbi.cyMinChild = 20;
rbi.hwndChild = build_toolbar(1, hRebar);
rbi.lpText = (lpszText ? buffer : NULL);
SendMessage(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
}
static void test_layout(void)
{
HWND hRebar;
REBARBANDINFO rbi;
REBARBANDINFOA rbi;
HIMAGELIST himl;
REBARINFO ri;
@ -509,12 +509,12 @@ static void test_layout(void)
rbi.cxMinChild = 100;
rbi.cyMinChild = 30;
rbi.hwndChild = NULL;
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
check_sizes();
rbi.fMask |= RBBIM_STYLE;
rbi.fStyle = RBBS_CHILDEDGE;
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
check_sizes();
rbi.fStyle = 0;
@ -522,20 +522,20 @@ static void test_layout(void)
rbi.cxMinChild = 30;
rbi.cyMinChild = 30;
rbi.hwndChild = build_toolbar(0, hRebar);
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
check_sizes();
rbi.fStyle = RBBS_CHILDEDGE;
rbi.cx = 68;
rbi.hwndChild = build_toolbar(0, hRebar);
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
check_sizes();
SetWindowLong(hRebar, GWL_STYLE, GetWindowLong(hRebar, GWL_STYLE) | RBS_BANDBORDERS);
SetWindowLongA(hRebar, GWL_STYLE, GetWindowLongA(hRebar, GWL_STYLE) | RBS_BANDBORDERS);
check_sizes(); /* a style change won't start a relayout */
rbi.fMask = RBBIM_SIZE;
rbi.cx = 66;
SendMessageA(hRebar, RB_SETBANDINFO, 3, (LPARAM)&rbi);
SendMessageA(hRebar, RB_SETBANDINFOA, 3, (LPARAM)&rbi);
check_sizes(); /* here it will be relayouted */
/* this will force a new row */
@ -544,12 +544,12 @@ static void test_layout(void)
rbi.cxMinChild = 400;
rbi.cyMinChild = 30;
rbi.hwndChild = build_toolbar(0, hRebar);
SendMessageA(hRebar, RB_INSERTBAND, 1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, 1, (LPARAM)&rbi);
check_sizes();
rbi.fMask = RBBIM_STYLE;
rbi.fStyle = RBBS_HIDDEN;
SendMessageA(hRebar, RB_SETBANDINFO, 2, (LPARAM)&rbi);
SendMessageA(hRebar, RB_SETBANDINFOA, 2, (LPARAM)&rbi);
check_sizes();
SendMessageA(hRebar, RB_DELETEBAND, 2, 0);
@ -580,31 +580,32 @@ static void test_layout(void)
check_sizes();
/* an image will increase the band height */
himl = ImageList_LoadImage(LoadLibrary("comctl32"), MAKEINTRESOURCE(121), 24, 2, CLR_NONE, IMAGE_BITMAP, LR_DEFAULTCOLOR);
himl = ImageList_LoadImageA(GetModuleHandleA("comctl32"), MAKEINTRESOURCEA(121), 24, 2,
CLR_NONE, IMAGE_BITMAP, LR_DEFAULTCOLOR);
ri.cbSize = sizeof(ri);
ri.fMask = RBIM_IMAGELIST;
ri.himl = himl;
ok(SendMessage(hRebar, RB_SETBARINFO, 0, (LPARAM)&ri), "RB_SETBARINFO failed\n");
ok(SendMessageA(hRebar, RB_SETBARINFO, 0, (LPARAM)&ri), "RB_SETBARINFO failed\n");
rbi.fMask = RBBIM_IMAGE;
rbi.iImage = 1;
SendMessage(hRebar, RB_SETBANDINFO, 1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_SETBANDINFOA, 1, (LPARAM)&rbi);
check_sizes();
/* after removing it everything is back to normal*/
rbi.iImage = -1;
SendMessage(hRebar, RB_SETBANDINFO, 1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_SETBANDINFOA, 1, (LPARAM)&rbi);
check_sizes();
/* Only -1 means that the image is not present. Other invalid values increase the height */
rbi.iImage = -2;
SendMessage(hRebar, RB_SETBANDINFO, 1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_SETBANDINFOA, 1, (LPARAM)&rbi);
check_sizes();
DestroyWindow(hRebar);
/* VARHEIGHT resizing test on a horizontal rebar */
hRebar = create_rebar_control();
SetWindowLong(hRebar, GWL_STYLE, GetWindowLong(hRebar, GWL_STYLE) | RBS_AUTOSIZE);
SetWindowLongA(hRebar, GWL_STYLE, GetWindowLongA(hRebar, GWL_STYLE) | RBS_AUTOSIZE);
check_sizes();
rbi.fMask = RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE | RBBIM_STYLE;
rbi.fStyle = RBBS_VARIABLEHEIGHT;
@ -615,24 +616,24 @@ static void test_layout(void)
rbi.cyMaxChild = 200;
rbi.cx = 90;
rbi.hwndChild = build_toolbar(0, hRebar);
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
rbi.cyChild = 50;
rbi.hwndChild = build_toolbar(0, hRebar);
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
rbi.cyMinChild = 40;
rbi.cyChild = 50;
rbi.cyIntegral = 5;
rbi.hwndChild = build_toolbar(0, hRebar);
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
check_sizes();
DestroyWindow(hRebar);
/* VARHEIGHT resizing on a vertical rebar */
hRebar = create_rebar_control();
SetWindowLong(hRebar, GWL_STYLE, GetWindowLong(hRebar, GWL_STYLE) | CCS_VERT | RBS_AUTOSIZE);
SetWindowLongA(hRebar, GWL_STYLE, GetWindowLongA(hRebar, GWL_STYLE) | CCS_VERT | RBS_AUTOSIZE);
check_sizes();
rbi.fMask = RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE | RBBIM_STYLE;
rbi.fStyle = RBBS_VARIABLEHEIGHT;
@ -643,19 +644,19 @@ static void test_layout(void)
rbi.cyMaxChild = 90;
rbi.cx = 90;
rbi.hwndChild = build_toolbar(0, hRebar);
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
check_sizes();
rbi.cyChild = 50;
rbi.hwndChild = build_toolbar(0, hRebar);
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
check_sizes();
rbi.cyMinChild = 40;
rbi.cyChild = 50;
rbi.cyIntegral = 5;
rbi.hwndChild = build_toolbar(0, hRebar);
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
check_sizes();
rbsize_results_free();
@ -680,7 +681,7 @@ static void dump_client(HWND hRebar)
}
else
notify = FALSE;
printf(" {{%d, %d, %d, %d}, %d, %s},\n", r.left, r.top, r.right, r.bottom, SendMessage(hRebar, RB_GETROWCOUNT, 0, 0),
printf(" {{%d, %d, %d, %d}, %d, %s},\n", r.left, r.top, r.right, r.bottom, SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0),
notify ? "TRUE" : "FALSE");
SetRect(&height_change_notify_rect, -1, -1, -1, -1);
}
@ -832,7 +833,7 @@ static DWORD resize_numtests = 0;
} else { \
check_rect("client", r, res->rc); \
} \
value = (int)SendMessage(hRebar, RB_GETROWCOUNT, 0, 0); \
value = (int)SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0); \
ok(res->iNumRows == value, "RB_GETROWCOUNT expected %d got %d\n", res->iNumRows, value); \
if (res->heightNotify) { \
RECT rcClient; \
@ -860,7 +861,7 @@ static void test_resize(void)
comment("style %08x", dwStyles[i]);
SetRect(&height_change_notify_rect, -1, -1, -1, -1);
hRebar = CreateWindow(REBARCLASSNAME, "A", dwStyles[i] | WS_CHILD | WS_VISIBLE, 10, 5, 500, 15, hMainWnd, NULL, GetModuleHandle(NULL), 0);
hRebar = CreateWindowA(REBARCLASSNAMEA, "A", dwStyles[i] | WS_CHILD | WS_VISIBLE, 10, 5, 500, 15, hMainWnd, NULL, GetModuleHandleA(NULL), 0);
check_client();
add_band_w(hRebar, NULL, 70, 100, 0);
if (dwStyles[i] & CCS_NOPARENTALIGN) /* the window drifts downward for CCS_NOPARENTALIGN without CCS_NODIVIDER */
@ -882,15 +883,15 @@ static void test_resize(void)
pos.x = 10;
pos.y = 10;
pos.flags = 0;
SendMessage(hRebar, WM_WINDOWPOSCHANGING, 0, (LPARAM)&pos);
SendMessage(hRebar, WM_WINDOWPOSCHANGED, 0, (LPARAM)&pos);
SendMessageA(hRebar, WM_WINDOWPOSCHANGING, 0, (LPARAM)&pos);
SendMessageA(hRebar, WM_WINDOWPOSCHANGED, 0, (LPARAM)&pos);
check_client();
SendMessage(hRebar, WM_SIZE, SIZE_RESTORED, MAKELONG(500, 500));
SendMessageA(hRebar, WM_SIZE, SIZE_RESTORED, MAKELONG(500, 500));
check_client();
}
SendMessage(hRebar, RB_DELETEBAND, 0, 0);
SendMessageA(hRebar, RB_DELETEBAND, 0, 0);
check_client();
SendMessage(hRebar, RB_DELETEBAND, 0, 0);
SendMessageA(hRebar, RB_DELETEBAND, 0, 0);
MoveWindow(hRebar, 0, 0, 100, 100, TRUE);
check_client();
DestroyWindow(hRebar);
@ -913,7 +914,7 @@ static void expect_band_content_(int line, HWND hRebar, UINT uBand, INT fStyle,
| RBBIM_SIZE | RBBIM_STYLE | RBBIM_TEXT;
rb.lpText = buf;
rb.cch = MAX_PATH;
ok(SendMessageA(hRebar, RB_GETBANDINFOA, uBand, (LPARAM)&rb), "RB_GETBANDINFO failed from line %d\n", line);
ok(SendMessageA(hRebar, RB_GETBANDINFOA, uBand, (LPARAM)&rb), "RB_GETBANDINFOA failed from line %d\n", line);
expect_eq(line, rb.fStyle, fStyle, int, "%x");
expect_eq(line, rb.clrFore, clrFore, COLORREF, "%x");
expect_eq(line, rb.clrBack, clrBack, COLORREF, "%x");
@ -966,37 +967,37 @@ static void test_bandinfo(void)
rb.cyChild = 30;
rb.cyMaxChild = 20;
rb.cyIntegral = 10;
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFO failed\n");
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
expect_band_content(hRebar, 0, 0, 0, GetSysColor(COLOR_3DFACE), "", -1, NULL, 15, 20, 0, NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 0, -1);
rb.fMask = RBBIM_TEXT;
rb.lpText = szABC;
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFO failed\n");
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
expect_band_content(hRebar, 0, 0, 0, GetSysColor(COLOR_3DFACE), "ABC", -1, NULL, 15, 20, 0, NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 3 + 2*system_font_height, -1);
rb.cbSize = REBARBANDINFOA_V6_SIZE;
rb.fMask = 0;
ok(SendMessageA(hRebar, RB_INSERTBANDA, 1, (LPARAM)&rb), "RB_INSERTBAND failed\n");
ok(SendMessageA(hRebar, RB_INSERTBANDA, 1, (LPARAM)&rb), "RB_INSERTBANDA failed\n");
expect_band_content(hRebar, 1, 0, 0, GetSysColor(COLOR_3DFACE), "", -1, NULL, 0, 0, 0, NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 9, -1);
expect_band_content(hRebar, 0, 0, 0, GetSysColor(COLOR_3DFACE), "ABC", -1, NULL, 15, 20, 0, NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 8 + 2*system_font_height, -1);
rb.fMask = RBBIM_HEADERSIZE;
rb.cxHeader = 50;
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFO failed\n");
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
expect_band_content(hRebar, 0, 0x40000000, 0, GetSysColor(COLOR_3DFACE), "ABC", -1, NULL, 15, 20, 0, NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 50, -1);
rb.cxHeader = 5;
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFO failed\n");
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
expect_band_content(hRebar, 0, 0x40000000, 0, GetSysColor(COLOR_3DFACE), "ABC", -1, NULL, 15, 20, 0, NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 5, -1);
rb.fMask = RBBIM_TEXT;
rb.lpText = szABCD;
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFO failed\n");
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
expect_band_content(hRebar, 0, 0x40000000, 0, GetSysColor(COLOR_3DFACE), "ABCD", -1, NULL, 15, 20, 0, NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 5, -1);
rb.fMask = RBBIM_STYLE | RBBIM_TEXT;
rb.fStyle = RBBS_VARIABLEHEIGHT;
rb.lpText = szABC;
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFO failed\n");
ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
expect_band_content(hRebar, 0, RBBS_VARIABLEHEIGHT, 0, GetSysColor(COLOR_3DFACE), "ABC", -1, NULL, 15, 20, 0, NULL, 0, 20, 0x7fffffff, 0, 0, 0, 8 + 2*system_font_height, 5);
DestroyWindow(hRebar);
@ -1013,15 +1014,15 @@ static void test_colors(void)
hRebar = create_rebar_control();
/* test default colors */
clr = SendMessage(hRebar, RB_GETTEXTCOLOR, 0, 0);
clr = SendMessageA(hRebar, RB_GETTEXTCOLOR, 0, 0);
compare(clr, CLR_NONE, "%x");
clr = SendMessage(hRebar, RB_GETBKCOLOR, 0, 0);
clr = SendMessageA(hRebar, RB_GETBKCOLOR, 0, 0);
compare(clr, CLR_NONE, "%x");
scheme.dwSize = sizeof(scheme);
scheme.clrBtnHighlight = 0;
scheme.clrBtnShadow = 0;
ret = SendMessage(hRebar, RB_GETCOLORSCHEME, 0, (LPARAM)&scheme);
ret = SendMessageA(hRebar, RB_GETCOLORSCHEME, 0, (LPARAM)&scheme);
if (ret)
{
compare(scheme.clrBtnHighlight, CLR_DEFAULT, "%x");
@ -1035,15 +1036,15 @@ static void test_colors(void)
bi.cbSize = REBARBANDINFOA_V6_SIZE;
bi.fMask = RBBIM_COLORS;
bi.clrFore = bi.clrBack = 0xc0ffe;
ret = SendMessage(hRebar, RB_GETBANDINFO, 0, (LPARAM)&bi);
ok(ret, "RB_GETBANDINFO failed\n");
ret = SendMessageA(hRebar, RB_GETBANDINFOA, 0, (LPARAM)&bi);
ok(ret, "RB_GETBANDINFOA failed\n");
compare(bi.clrFore, RGB(0, 0, 0), "%x");
compare(bi.clrBack, GetSysColor(COLOR_3DFACE), "%x");
SendMessage(hRebar, RB_SETTEXTCOLOR, 0, RGB(255, 0, 0));
SendMessageA(hRebar, RB_SETTEXTCOLOR, 0, RGB(255, 0, 0));
bi.clrFore = bi.clrBack = 0xc0ffe;
ret = SendMessage(hRebar, RB_GETBANDINFO, 0, (LPARAM)&bi);
ok(ret, "RB_GETBANDINFO failed\n");
ret = SendMessageA(hRebar, RB_GETBANDINFOA, 0, (LPARAM)&bi);
ok(ret, "RB_GETBANDINFOA failed\n");
compare(bi.clrFore, RGB(0, 0, 0), "%x");
DestroyWindow(hRebar);
@ -1059,7 +1060,7 @@ static BOOL register_parent_wnd_class(void)
wc.cbWndExtra = 0;
wc.hInstance = GetModuleHandleA(NULL);
wc.hIcon = NULL;
wc.hCursor = LoadCursorA(NULL, IDC_IBEAM);
wc.hCursor = LoadCursorA(NULL, (LPCSTR)IDC_IBEAM);
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = "MyTestWnd";
@ -1101,7 +1102,7 @@ static void test_showband(void)
rbi.cxMinChild = 100;
rbi.cyMinChild = 30;
rbi.hwndChild = NULL;
SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
/* index out of range */
ret = SendMessageA(hRebar, RB_SHOWBAND, 1, TRUE);

View file

@ -20,7 +20,6 @@
#include <wine/test.h>
#include <assert.h>
//#include <windows.h>
#include <wingdi.h>
#include <winuser.h>
@ -52,12 +51,12 @@ static HWND create_status_control(DWORD style, DWORD exstyle)
HWND hWndStatus;
/* make the control */
hWndStatus = CreateWindowEx(exstyle, STATUSCLASSNAME, NULL, style,
hWndStatus = CreateWindowExA(exstyle, STATUSCLASSNAMEA, NULL, style,
/* placement */
0, 0, 300, 20,
/* parent, etc */
NULL, NULL, hinst, NULL);
assert (hWndStatus);
ok(hWndStatus != NULL, "failed to create status wnd\n");
return hWndStatus;
}
@ -67,8 +66,8 @@ static LRESULT WINAPI create_test_wndproc(HWND hwnd, UINT msg, WPARAM wParam, LP
if (msg == WM_CREATE)
{
CREATESTRUCT *cs = (CREATESTRUCT *)lParam;
ret = CallWindowProc(g_status_wndproc, hwnd, msg, wParam, lParam);
CREATESTRUCTA *cs = (CREATESTRUCTA *)lParam;
ret = CallWindowProcA(g_status_wndproc, hwnd, msg, wParam, lParam);
GetWindowRect(hwnd, &g_rcCreated);
MapWindowPoints(HWND_DESKTOP, g_hMainWnd, (LPPOINT)&g_rcCreated, 2);
ok(cs->x == g_rcCreated.left, "CREATESTRUCT.x modified\n");
@ -76,25 +75,25 @@ static LRESULT WINAPI create_test_wndproc(HWND hwnd, UINT msg, WPARAM wParam, LP
} else if (msg == WM_SIZE)
{
g_wmsize_count++;
ret = CallWindowProc(g_status_wndproc, hwnd, msg, wParam, lParam);
ret = CallWindowProcA(g_status_wndproc, hwnd, msg, wParam, lParam);
}
else
ret = CallWindowProc(g_status_wndproc, hwnd, msg, wParam, lParam);
ret = CallWindowProcA(g_status_wndproc, hwnd, msg, wParam, lParam);
return ret;
}
static void register_subclass(void)
{
WNDCLASSEX cls;
WNDCLASSEXA cls;
cls.cbSize = sizeof(WNDCLASSEX);
GetClassInfoEx(NULL, STATUSCLASSNAME, &cls);
cls.cbSize = sizeof(WNDCLASSEXA);
GetClassInfoExA(NULL, STATUSCLASSNAMEA, &cls);
g_status_wndproc = cls.lpfnWndProc;
cls.lpfnWndProc = create_test_wndproc;
cls.lpszClassName = SUBCLASS_NAME;
cls.hInstance = NULL;
ok(RegisterClassEx(&cls), "RegisterClassEx failed\n");
ok(RegisterClassExA(&cls), "RegisterClassEx failed\n");
}
static void test_create(void)
@ -115,7 +114,7 @@ static void test_create(void)
DestroyWindow(hwnd);
}
static int CALLBACK check_height_font_enumproc(ENUMLOGFONTEX *enumlf, NEWTEXTMETRICEX *ntm, DWORD type, LPARAM lParam)
static int CALLBACK check_height_font_enumproc(ENUMLOGFONTEXA *enumlf, NEWTEXTMETRICEXA *ntm, DWORD type, LPARAM lParam)
{
HWND hwndStatus = (HWND)lParam;
HDC hdc = GetDC(NULL);
@ -132,18 +131,18 @@ static int CALLBACK check_height_font_enumproc(ENUMLOGFONTEX *enumlf, NEWTEXTMET
for (i = 0; i < sizeof(sizes)/sizeof(sizes[0]); i++)
{
HFONT hFont;
TEXTMETRIC tm;
TEXTMETRICA tm;
HFONT hCtrlFont;
HFONT hOldFont;
RECT rcCtrl;
enumlf->elfLogFont.lfHeight = sizes[i];
hFont = CreateFontIndirect(&enumlf->elfLogFont);
hCtrlFont = (HFONT)SendMessage(hwndStatus, WM_SETFONT, (WPARAM)hFont, TRUE);
hFont = CreateFontIndirectA(&enumlf->elfLogFont);
hCtrlFont = (HFONT)SendMessageA(hwndStatus, WM_SETFONT, (WPARAM)hFont, TRUE);
hOldFont = SelectObject(hdc, hFont);
GetClientRect(hwndStatus, &rcCtrl);
GetTextMetrics(hdc, &tm);
GetTextMetricsA(hdc, &tm);
y = tm.tmHeight + (tm.tmInternalLeading ? tm.tmInternalLeading : 2) + 4;
ok( (rcCtrl.bottom == max(y, g_ysize)) || (rcCtrl.bottom == max(y, g_dpisize)),
@ -151,37 +150,37 @@ static int CALLBACK check_height_font_enumproc(ENUMLOGFONTEX *enumlf, NEWTEXTMET
rcCtrl.bottom, max(y, g_ysize), max(y, g_dpisize), facename, sizes[i]);
SelectObject(hdc, hOldFont);
SendMessage(hwndStatus, WM_SETFONT, (WPARAM)hCtrlFont, TRUE);
SendMessageA(hwndStatus, WM_SETFONT, (WPARAM)hCtrlFont, TRUE);
DeleteObject(hFont);
}
ReleaseDC(NULL, hdc);
return 1;
}
static int CALLBACK check_height_family_enumproc(ENUMLOGFONTEX *enumlf, NEWTEXTMETRICEX *ntm, DWORD type, LPARAM lParam)
static int CALLBACK check_height_family_enumproc(ENUMLOGFONTEXA *enumlf, NEWTEXTMETRICEXA *ntm, DWORD type, LPARAM lParam)
{
HDC hdc = GetDC(NULL);
enumlf->elfLogFont.lfHeight = 0;
EnumFontFamiliesEx(hdc, &enumlf->elfLogFont, (FONTENUMPROC)check_height_font_enumproc, lParam, 0);
EnumFontFamiliesExA(hdc, &enumlf->elfLogFont, (FONTENUMPROCA)check_height_font_enumproc, lParam, 0);
ReleaseDC(NULL, hdc);
return 1;
}
static void test_height(void)
{
LOGFONT lf;
LOGFONTA lf;
HFONT hFont, hFontSm;
RECT rc1, rc2;
HWND hwndStatus = CreateWindow(SUBCLASS_NAME, NULL, WS_CHILD|WS_VISIBLE,
HWND hwndStatus = CreateWindowA(SUBCLASS_NAME, NULL, WS_CHILD|WS_VISIBLE,
0, 0, 300, 20, g_hMainWnd, NULL, NULL, NULL);
HDC hdc;
GetClientRect(hwndStatus, &rc1);
hFont = CreateFont(32, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET,
hFont = CreateFontA(32, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, "Tahoma");
g_wmsize_count = 0;
SendMessage(hwndStatus, WM_SETFONT, (WPARAM)hFont, TRUE);
SendMessageA(hwndStatus, WM_SETFONT, (WPARAM)hFont, TRUE);
if (!g_wmsize_count)
{
skip("Status control not resized in win95, skipping broken tests.\n");
@ -193,41 +192,41 @@ static void test_height(void)
expect_rect(0, 0, 672, 42, rc2); /* GetTextMetrics returns invalid tmInternalLeading for this font */
g_wmsize_count = 0;
SendMessage(hwndStatus, WM_SETFONT, (WPARAM)hFont, TRUE);
SendMessageA(hwndStatus, WM_SETFONT, (WPARAM)hFont, TRUE);
ok(g_wmsize_count > 0, "WM_SETFONT should issue WM_SIZE\n");
GetClientRect(hwndStatus, &rc2);
expect_rect(0, 0, 672, 42, rc2);
/* minheight < fontsize - no effects*/
SendMessage(hwndStatus, SB_SETMINHEIGHT, 12, 0);
SendMessage(hwndStatus, WM_SIZE, 0, 0);
SendMessageA(hwndStatus, SB_SETMINHEIGHT, 12, 0);
SendMessageA(hwndStatus, WM_SIZE, 0, 0);
GetClientRect(hwndStatus, &rc2);
expect_rect(0, 0, 672, 42, rc2);
/* minheight > fontsize - has an effect after WM_SIZE */
SendMessage(hwndStatus, SB_SETMINHEIGHT, 60, 0);
SendMessageA(hwndStatus, SB_SETMINHEIGHT, 60, 0);
GetClientRect(hwndStatus, &rc2);
expect_rect(0, 0, 672, 42, rc2);
SendMessage(hwndStatus, WM_SIZE, 0, 0);
SendMessageA(hwndStatus, WM_SIZE, 0, 0);
GetClientRect(hwndStatus, &rc2);
expect_rect(0, 0, 672, 62, rc2);
/* font changed to smaller than minheight - has an effect */
SendMessage(hwndStatus, SB_SETMINHEIGHT, 30, 0);
SendMessageA(hwndStatus, SB_SETMINHEIGHT, 30, 0);
expect_rect(0, 0, 672, 62, rc2);
SendMessage(hwndStatus, WM_SIZE, 0, 0);
SendMessageA(hwndStatus, WM_SIZE, 0, 0);
GetClientRect(hwndStatus, &rc2);
expect_rect(0, 0, 672, 42, rc2);
hFontSm = CreateFont(9, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET,
hFontSm = CreateFontA(9, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, "Tahoma");
SendMessage(hwndStatus, WM_SETFONT, (WPARAM)hFontSm, TRUE);
SendMessageA(hwndStatus, WM_SETFONT, (WPARAM)hFontSm, TRUE);
GetClientRect(hwndStatus, &rc2);
expect_rect(0, 0, 672, 32, rc2);
/* test the height formula */
ZeroMemory(&lf, sizeof(lf));
SendMessage(hwndStatus, SB_SETMINHEIGHT, 0, 0);
SendMessageA(hwndStatus, SB_SETMINHEIGHT, 0, 0);
hdc = GetDC(NULL);
/* used only for some fonts (tahoma as example) */
@ -242,7 +241,7 @@ static void test_height(void)
GetDeviceCaps(hdc, LOGPIXELSY), g_ysize, g_dpisize,
GetSystemMetrics(SM_CYSIZE));
EnumFontFamiliesEx(hdc, &lf, (FONTENUMPROC)check_height_family_enumproc, (LPARAM)hwndStatus, 0);
EnumFontFamiliesExA(hdc, &lf, (FONTENUMPROCA)check_height_family_enumproc, (LPARAM)hwndStatus, 0);
ReleaseDC(NULL, hdc);
DestroyWindow(hwndStatus);
@ -267,75 +266,75 @@ static void test_status_control(void)
hWndStatus = create_status_control(WS_VISIBLE | SBT_TOOLTIPS, 0);
/* Divide into parts and set text */
r = SendMessage(hWndStatus, SB_SETPARTS, 3, (LPARAM)nParts);
r = SendMessageA(hWndStatus, SB_SETPARTS, 3, (LPARAM)nParts);
expect(TRUE,r);
r = SendMessage(hWndStatus, SB_SETTEXT, SBT_POPOUT|0, (LPARAM)"First");
r = SendMessageA(hWndStatus, SB_SETTEXTA, SBT_POPOUT|0, (LPARAM)"First");
expect(TRUE,r);
r = SendMessage(hWndStatus, SB_SETTEXT, SBT_OWNERDRAW|1, (LPARAM)"Second");
r = SendMessageA(hWndStatus, SB_SETTEXTA, SBT_OWNERDRAW|1, (LPARAM)"Second");
expect(TRUE,r);
r = SendMessage(hWndStatus, SB_SETTEXT, SBT_NOBORDERS|2, (LPARAM)"Third");
r = SendMessageA(hWndStatus, SB_SETTEXTA, SBT_NOBORDERS|2, (LPARAM)"Third");
expect(TRUE,r);
/* Get RECT Information */
r = SendMessage(hWndStatus, SB_GETRECT, 0, (LPARAM)&rc);
r = SendMessageA(hWndStatus, SB_GETRECT, 0, (LPARAM)&rc);
expect(TRUE,r);
expect(2,rc.top);
/* The rc.bottom test is system dependent
expect(22,rc.bottom); */
expect(0,rc.left);
expect(50,rc.right);
r = SendMessage(hWndStatus, SB_GETRECT, -1, (LPARAM)&rc);
r = SendMessageA(hWndStatus, SB_GETRECT, -1, (LPARAM)&rc);
expect(FALSE,r);
r = SendMessage(hWndStatus, SB_GETRECT, 3, (LPARAM)&rc);
r = SendMessageA(hWndStatus, SB_GETRECT, 3, (LPARAM)&rc);
expect(FALSE,r);
/* Get text length and text */
r = SendMessage(hWndStatus, SB_GETTEXTLENGTH, 0, 0);
r = SendMessageA(hWndStatus, SB_GETTEXTLENGTHA, 0, 0);
expect(5,LOWORD(r));
expect(SBT_POPOUT,HIWORD(r));
r = SendMessageW(hWndStatus, WM_GETTEXTLENGTH, 0, 0);
ok(r == 5 || broken(0x02000005 /* NT4 */), "Expected 5, got %d\n", r);
r = SendMessage(hWndStatus, SB_GETTEXTLENGTH, 1, 0);
r = SendMessageA(hWndStatus, SB_GETTEXTLENGTHA, 1, 0);
expect(0,LOWORD(r));
expect(SBT_OWNERDRAW,HIWORD(r));
r = SendMessage(hWndStatus, SB_GETTEXTLENGTH, 2, 0);
r = SendMessageA(hWndStatus, SB_GETTEXTLENGTHA, 2, 0);
expect(5,LOWORD(r));
expect(SBT_NOBORDERS,HIWORD(r));
r = SendMessage(hWndStatus, SB_GETTEXT, 2, (LPARAM) charArray);
r = SendMessageA(hWndStatus, SB_GETTEXTA, 2, (LPARAM) charArray);
ok(strcmp(charArray,"Third") == 0, "Expected Third, got %s\n", charArray);
expect(5,LOWORD(r));
expect(SBT_NOBORDERS,HIWORD(r));
/* Get parts and borders */
r = SendMessage(hWndStatus, SB_GETPARTS, 3, (LPARAM)checkParts);
r = SendMessageA(hWndStatus, SB_GETPARTS, 3, (LPARAM)checkParts);
ok(r == 3, "Expected 3, got %d\n", r);
expect(50,checkParts[0]);
expect(150,checkParts[1]);
expect(-1,checkParts[2]);
r = SendMessage(hWndStatus, SB_GETBORDERS, 0, (LPARAM)borders);
r = SendMessageA(hWndStatus, SB_GETBORDERS, 0, (LPARAM)borders);
ok(r == TRUE, "Expected TRUE, got %d\n", r);
expect(0,borders[0]);
expect(2,borders[1]);
expect(2,borders[2]);
/* Test resetting text with different characters */
r = SendMessage(hWndStatus, SB_SETTEXT, 0, (LPARAM)"First@Again");
r = SendMessageA(hWndStatus, SB_SETTEXTA, 0, (LPARAM)"First@Again");
expect(TRUE,r);
r = SendMessage(hWndStatus, SB_SETTEXT, 1, (LPARAM)"Invalid\tChars\\7\7");
r = SendMessageA(hWndStatus, SB_SETTEXTA, 1, (LPARAM)"Invalid\tChars\\7\7");
expect(TRUE,r);
r = SendMessage(hWndStatus, SB_SETTEXT, 2, (LPARAM)"InvalidChars\\n\n");
r = SendMessageA(hWndStatus, SB_SETTEXTA, 2, (LPARAM)"InvalidChars\\n\n");
expect(TRUE,r);
/* Get text again */
r = SendMessage(hWndStatus, SB_GETTEXT, 0, (LPARAM) charArray);
r = SendMessageA(hWndStatus, SB_GETTEXTA, 0, (LPARAM) charArray);
ok(strcmp(charArray,"First@Again") == 0, "Expected First@Again, got %s\n", charArray);
expect(11,LOWORD(r));
expect(0,HIWORD(r));
r = SendMessage(hWndStatus, SB_GETTEXT, 1, (LPARAM) charArray);
r = SendMessageA(hWndStatus, SB_GETTEXTA, 1, (LPARAM) charArray);
ok(strcmp(charArray,"Invalid\tChars\\7 ") == 0, "Expected Invalid\tChars\\7 , got %s\n", charArray);
expect(16,LOWORD(r));
expect(0,HIWORD(r));
r = SendMessage(hWndStatus, SB_GETTEXT, 2, (LPARAM) charArray);
r = SendMessageA(hWndStatus, SB_GETTEXTA, 2, (LPARAM) charArray);
ok(strcmp(charArray,"InvalidChars\\n ") == 0, "Expected InvalidChars\\n , got %s\n", charArray);
expect(15,LOWORD(r));
@ -344,9 +343,9 @@ static void test_status_control(void)
/* test more nonprintable chars */
for(ch = 0x00; ch < 0x7F; ch++) {
chstr[5] = ch;
r = SendMessage(hWndStatus, SB_SETTEXT, 0, (LPARAM)chstr);
r = SendMessageA(hWndStatus, SB_SETTEXTA, 0, (LPARAM)chstr);
expect(TRUE,r);
r = SendMessage(hWndStatus, SB_GETTEXT, 0, (LPARAM)charArray);
r = SendMessageA(hWndStatus, SB_GETTEXTA, 0, (LPARAM)charArray);
/* substitution with single space */
if (ch > 0x00 && ch < 0x20 && ch != '\t')
chstr[5] = ' ';
@ -354,79 +353,79 @@ static void test_status_control(void)
}
/* Set background color */
crColor = SendMessage(hWndStatus, SB_SETBKCOLOR , 0, RGB(255,0,0));
crColor = SendMessageA(hWndStatus, SB_SETBKCOLOR , 0, RGB(255,0,0));
ok(crColor == CLR_DEFAULT ||
broken(crColor == RGB(0,0,0)), /* win95 */
"Expected 0x%.8x, got 0x%.8x\n", CLR_DEFAULT, crColor);
crColor = SendMessage(hWndStatus, SB_SETBKCOLOR , 0, CLR_DEFAULT);
crColor = SendMessageA(hWndStatus, SB_SETBKCOLOR , 0, CLR_DEFAULT);
ok(crColor == RGB(255,0,0) ||
broken(crColor == RGB(0,0,0)), /* win95 */
"Expected 0x%.8x, got 0x%.8x\n", RGB(255,0,0), crColor);
/* Add an icon to the status bar */
hIcon = LoadIcon(NULL, IDI_QUESTION);
r = SendMessage(hWndStatus, SB_SETICON, 1, 0);
hIcon = LoadIconA(NULL, (LPCSTR)IDI_QUESTION);
r = SendMessageA(hWndStatus, SB_SETICON, 1, 0);
ok(r != 0 ||
broken(r == 0), /* win95 */
"Expected non-zero, got %d\n", r);
r = SendMessage(hWndStatus, SB_SETICON, 1, (LPARAM) hIcon);
r = SendMessageA(hWndStatus, SB_SETICON, 1, (LPARAM) hIcon);
ok(r != 0 ||
broken(r == 0), /* win95 */
"Expected non-zero, got %d\n", r);
r = SendMessage(hWndStatus, SB_SETICON, 1, 0);
r = SendMessageA(hWndStatus, SB_SETICON, 1, 0);
ok(r != 0 ||
broken(r == 0), /* win95 */
"Expected non-zero, got %d\n", r);
/* Set the Unicode format */
r = SendMessage(hWndStatus, SB_SETUNICODEFORMAT, FALSE, 0);
r = SendMessageA(hWndStatus, SB_SETUNICODEFORMAT, FALSE, 0);
expect(FALSE,r);
r = SendMessage(hWndStatus, SB_GETUNICODEFORMAT, 0, 0);
r = SendMessageA(hWndStatus, SB_GETUNICODEFORMAT, 0, 0);
expect(FALSE,r);
r = SendMessage(hWndStatus, SB_SETUNICODEFORMAT, TRUE, 0);
r = SendMessageA(hWndStatus, SB_SETUNICODEFORMAT, TRUE, 0);
expect(FALSE,r);
r = SendMessage(hWndStatus, SB_GETUNICODEFORMAT, 0, 0);
r = SendMessageA(hWndStatus, SB_GETUNICODEFORMAT, 0, 0);
ok(r == TRUE ||
broken(r == FALSE), /* win95 */
"Expected TRUE, got %d\n", r);
/* Reset number of parts */
r = SendMessage(hWndStatus, SB_SETPARTS, 2, (LPARAM)nParts);
r = SendMessageA(hWndStatus, SB_SETPARTS, 2, (LPARAM)nParts);
expect(TRUE,r);
r = SendMessage(hWndStatus, SB_GETPARTS, 0, 0);
r = SendMessageA(hWndStatus, SB_GETPARTS, 0, 0);
ok(r == 2, "Expected 2, got %d\n", r);
r = SendMessage(hWndStatus, SB_SETPARTS, 0, 0);
r = SendMessageA(hWndStatus, SB_SETPARTS, 0, 0);
expect(FALSE,r);
r = SendMessage(hWndStatus, SB_GETPARTS, 0, 0);
r = SendMessageA(hWndStatus, SB_GETPARTS, 0, 0);
ok(r == 2, "Expected 2, got %d\n", r);
/* Set the minimum height and get rectangle information again */
SendMessage(hWndStatus, SB_SETMINHEIGHT, 50, 0);
r = SendMessage(hWndStatus, WM_SIZE, 0, 0);
SendMessageA(hWndStatus, SB_SETMINHEIGHT, 50, 0);
r = SendMessageA(hWndStatus, WM_SIZE, 0, 0);
expect(0,r);
r = SendMessage(hWndStatus, SB_GETRECT, 0, (LPARAM)&rc);
r = SendMessageA(hWndStatus, SB_GETRECT, 0, (LPARAM)&rc);
expect(TRUE,r);
expect(2,rc.top);
/* The rc.bottom test is system dependent
expect(22,rc.bottom); */
expect(0,rc.left);
expect(50,rc.right);
r = SendMessage(hWndStatus, SB_GETRECT, -1, (LPARAM)&rc);
r = SendMessageA(hWndStatus, SB_GETRECT, -1, (LPARAM)&rc);
expect(FALSE,r);
r = SendMessage(hWndStatus, SB_GETRECT, 3, (LPARAM)&rc);
r = SendMessageA(hWndStatus, SB_GETRECT, 3, (LPARAM)&rc);
expect(FALSE,r);
/* Set the ToolTip text */
SendMessage(hWndStatus, SB_SETTIPTEXT, 0,(LPARAM) "Tooltip Text");
SendMessageA(hWndStatus, SB_SETTIPTEXTA, 0,(LPARAM) "Tooltip Text");
lstrcpyA(charArray, "apple");
SendMessage(hWndStatus, SB_GETTIPTEXT, MAKEWPARAM (0, 20),(LPARAM) charArray);
SendMessageA(hWndStatus, SB_GETTIPTEXTA, MAKEWPARAM (0, 20),(LPARAM) charArray);
ok(strcmp(charArray,"Tooltip Text") == 0 ||
broken(!strcmp(charArray, "apple")), /* win95 */
"Expected Tooltip Text, got %s\n", charArray);
/* Make simple */
SendMessage(hWndStatus, SB_SIMPLE, TRUE, 0);
r = SendMessage(hWndStatus, SB_ISSIMPLE, 0, 0);
SendMessageA(hWndStatus, SB_SIMPLE, TRUE, 0);
r = SendMessageA(hWndStatus, SB_ISSIMPLE, 0, 0);
ok(r == TRUE ||
broken(r == FALSE), /* win95 */
"Expected TRUE, got %d\n", r);
@ -439,7 +438,7 @@ static LRESULT WINAPI ownerdraw_test_wndproc(HWND hwnd, UINT msg, WPARAM wParam,
LRESULT ret;
if (msg == WM_DRAWITEM)
g_wmdrawitm_ctr++;
ret = CallWindowProc(g_wndproc_saved, hwnd, msg, wParam, lParam);
ret = CallWindowProcA(g_wndproc_saved, hwnd, msg, wParam, lParam);
return ret;
}
@ -451,59 +450,59 @@ static void test_status_ownerdraw(void)
LONG oldstyle;
/* subclass the main window and make sure it is visible */
g_wndproc_saved = (WNDPROC) SetWindowLongPtr( g_hMainWnd, GWLP_WNDPROC,
g_wndproc_saved = (WNDPROC) SetWindowLongPtrA( g_hMainWnd, GWLP_WNDPROC,
(LONG_PTR)ownerdraw_test_wndproc );
ok( g_wndproc_saved != 0, "failed to set the WndProc\n");
SetWindowPos( g_hMainWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
oldstyle = GetWindowLong( g_hMainWnd, GWL_STYLE);
SetWindowLong( g_hMainWnd, GWL_STYLE, oldstyle | WS_VISIBLE);
oldstyle = GetWindowLongA( g_hMainWnd, GWL_STYLE);
SetWindowLongA( g_hMainWnd, GWL_STYLE, oldstyle | WS_VISIBLE);
/* create a status child window */
ok((hWndStatus = CreateWindowA(SUBCLASS_NAME, "", WS_CHILD|WS_VISIBLE, 0, 0, 100, 100,
g_hMainWnd, NULL, NULL, 0)) != NULL, "CreateWindowA failed\n");
/* set text */
g_wmdrawitm_ctr = 0;
r = SendMessage(hWndStatus, SB_SETTEXT, 0, (LPARAM)statustext);
r = SendMessageA(hWndStatus, SB_SETTEXTA, 0, (LPARAM)statustext);
ok( r == TRUE, "Sendmessage returned %d, expected 1\n", r);
ok( 0 == g_wmdrawitm_ctr, "got %d drawitem messages expected none\n", g_wmdrawitm_ctr);
/* set same text, with ownerdraw flag */
g_wmdrawitm_ctr = 0;
r = SendMessage(hWndStatus, SB_SETTEXT, SBT_OWNERDRAW, (LPARAM)statustext);
r = SendMessageA(hWndStatus, SB_SETTEXTA, SBT_OWNERDRAW, (LPARAM)statustext);
ok( r == TRUE, "Sendmessage returned %d, expected 1\n", r);
ok( 1 == g_wmdrawitm_ctr, "got %d drawitem messages expected 1\n", g_wmdrawitm_ctr);
/* and again */
g_wmdrawitm_ctr = 0;
r = SendMessage(hWndStatus, SB_SETTEXT, SBT_OWNERDRAW, (LPARAM)statustext);
r = SendMessageA(hWndStatus, SB_SETTEXTA, SBT_OWNERDRAW, (LPARAM)statustext);
ok( r == TRUE, "Sendmessage returned %d, expected 1\n", r);
ok( 1 == g_wmdrawitm_ctr, "got %d drawitem messages expected 1\n", g_wmdrawitm_ctr);
/* clean up */
DestroyWindow(hWndStatus);
SetWindowLong( g_hMainWnd, GWL_STYLE, oldstyle);
SetWindowLongPtr( g_hMainWnd, GWLP_WNDPROC, (LONG_PTR)g_wndproc_saved );
SetWindowLongA( g_hMainWnd, GWL_STYLE, oldstyle);
SetWindowLongPtrA( g_hMainWnd, GWLP_WNDPROC, (LONG_PTR)g_wndproc_saved );
}
static void test_gettext(void)
{
HWND hwndStatus = CreateWindow(SUBCLASS_NAME, NULL, WS_CHILD|WS_VISIBLE,
HWND hwndStatus = CreateWindowA(SUBCLASS_NAME, NULL, WS_CHILD|WS_VISIBLE,
0, 0, 300, 20, g_hMainWnd, NULL, NULL, NULL);
char buf[5];
int r;
r = SendMessage(hwndStatus, SB_SETTEXT, 0, (LPARAM)"Text");
r = SendMessageA(hwndStatus, SB_SETTEXTA, 0, (LPARAM)"Text");
expect(TRUE, r);
r = SendMessage(hwndStatus, WM_GETTEXTLENGTH, 0, 0);
r = SendMessageA(hwndStatus, WM_GETTEXTLENGTH, 0, 0);
expect(4, r);
/* A size of 0 returns the length of the text */
r = SendMessage(hwndStatus, WM_GETTEXT, 0, 0);
r = SendMessageA(hwndStatus, WM_GETTEXT, 0, 0);
ok( r == 4 || broken(r == 2) /* win8 */, "Expected 4 got %d\n", r );
/* A size of 1 only stores the NULL terminator */
buf[0] = 0xa;
r = SendMessage(hwndStatus, WM_GETTEXT, 1, (LPARAM)buf);
r = SendMessageA(hwndStatus, WM_GETTEXT, 1, (LPARAM)buf);
ok( r == 0 || broken(r == 4), "Expected 0 got %d\n", r );
if (!r) ok(!buf[0], "expected empty buffer\n");
/* A size of 2 returns a length 1 */
r = SendMessage(hwndStatus, WM_GETTEXT, 2, (LPARAM)buf);
r = SendMessageA(hwndStatus, WM_GETTEXT, 2, (LPARAM)buf);
ok( r == 1 || broken(r == 4), "Expected 1 got %d\n", r );
r = SendMessage(hwndStatus, WM_GETTEXT, sizeof(buf), (LPARAM)buf);
r = SendMessageA(hwndStatus, WM_GETTEXT, sizeof(buf), (LPARAM)buf);
expect(4, r);
ok(!strcmp(buf, "Text"), "expected Text, got %s\n", buf);
DestroyWindow(hwndStatus);
@ -559,30 +558,30 @@ static void test_notify(void)
ok(atom, "RegisterClass failed\n");
/* create parent */
hwndParent = CreateWindow(wclass.lpszClassName, "parent", WS_OVERLAPPEDWINDOW,
hwndParent = CreateWindowA(wclass.lpszClassName, "parent", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, 300, 20, NULL, NULL, NULL, NULL);
ok(hwndParent != NULL, "Parent creation failed!\n");
/* create status bar */
hwndStatus = CreateWindow(STATUSCLASSNAME, NULL, WS_VISIBLE | WS_CHILD,
hwndStatus = CreateWindowA(STATUSCLASSNAMEA, NULL, WS_VISIBLE | WS_CHILD,
0, 0, 300, 20, hwndParent, NULL, NULL, NULL);
ok(hwndStatus != NULL, "Status creation failed!\n");
/* Send various mouse event, and check that we get them */
g_got_dblclk = FALSE;
SendMessage(hwndStatus, WM_LBUTTONDBLCLK, 0, 0);
SendMessageA(hwndStatus, WM_LBUTTONDBLCLK, 0, 0);
ok(g_got_dblclk, "WM_LBUTTONDBLCLK was not processed correctly!\n");
g_got_rdblclk = FALSE;
SendMessage(hwndStatus, WM_RBUTTONDBLCLK, 0, 0);
SendMessageA(hwndStatus, WM_RBUTTONDBLCLK, 0, 0);
ok(g_got_rdblclk, "WM_RBUTTONDBLCLK was not processed correctly!\n");
g_got_click = FALSE;
SendMessage(hwndStatus, WM_LBUTTONUP, 0, 0);
SendMessageA(hwndStatus, WM_LBUTTONUP, 0, 0);
ok(g_got_click, "WM_LBUTTONUP was not processed correctly!\n");
/* For R-UP, check that we also get the context menu from the default processing */
g_got_contextmenu = FALSE;
g_got_rclick = FALSE;
SendMessage(hwndStatus, WM_RBUTTONUP, 0, 0);
SendMessageA(hwndStatus, WM_RBUTTONUP, 0, 0);
ok(g_got_rclick, "WM_RBUTTONUP was not processed correctly!\n");
ok(g_got_contextmenu, "WM_RBUTTONUP did not activate the context menu!\n");
}

View file

@ -166,7 +166,7 @@ static void ok_sequence(const struct message *expected, const char *context)
flush_sequence();
}
static LRESULT WINAPI WndProc1(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static LRESULT WINAPI wnd_proc_1(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
struct message msg;
@ -175,12 +175,12 @@ static LRESULT WINAPI WndProc1(HWND hwnd, UINT message, WPARAM wParam, LPARAM lP
msg.procnum = 1;
add_message(&msg);
}
return DefWindowProc(hwnd, message, wParam, lParam);
return DefWindowProcA(hwnd, message, wParam, lParam);
}
static WNDPROC origProc3;
static LRESULT WINAPI WndProc3(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static WNDPROC orig_proc_3;
static LRESULT WINAPI wnd_proc_3(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
struct message msg;
@ -189,10 +189,10 @@ static LRESULT WINAPI WndProc3(HWND hwnd, UINT message, WPARAM wParam, LPARAM lP
msg.procnum = 3;
add_message(&msg);
}
return CallWindowProc(origProc3, hwnd, message, wParam, lParam);
return CallWindowProcA(orig_proc_3, hwnd, message, wParam, lParam);
}
static LRESULT WINAPI WndProcSub(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, UINT_PTR uldSubclass, DWORD_PTR dwRefData)
static LRESULT WINAPI wnd_proc_sub(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, UINT_PTR uldSubclass, DWORD_PTR dwRefData)
{
struct message msg;
@ -203,13 +203,13 @@ static LRESULT WINAPI WndProcSub(HWND hwnd, UINT message, WPARAM wParam, LPARAM
if(lParam) {
if(dwRefData & DELETE_SELF) {
pRemoveWindowSubclass(hwnd, WndProcSub, uldSubclass);
pRemoveWindowSubclass(hwnd, WndProcSub, uldSubclass);
pRemoveWindowSubclass(hwnd, wnd_proc_sub, uldSubclass);
pRemoveWindowSubclass(hwnd, wnd_proc_sub, uldSubclass);
}
if(dwRefData & DELETE_PREV)
pRemoveWindowSubclass(hwnd, WndProcSub, uldSubclass-1);
pRemoveWindowSubclass(hwnd, wnd_proc_sub, uldSubclass-1);
if(dwRefData & SEND_NEST)
SendMessage(hwnd, WM_USER, wParam+1, 0);
SendMessageA(hwnd, WM_USER, wParam+1, 0);
}
}
return pDefSubclassProc(hwnd, message, wParam, lParam);
@ -219,53 +219,54 @@ static void test_subclass(void)
{
HWND hwnd = CreateWindowExA(0, "TestSubclass", "Test subclass", WS_OVERLAPPEDWINDOW,
100, 100, 200, 200, 0, 0, 0, NULL);
assert(hwnd);
ok(hwnd != NULL, "failed to create test subclass wnd\n");
pSetWindowSubclass(hwnd, WndProcSub, 2, 0);
SendMessage(hwnd, WM_USER, 1, 0);
SendMessage(hwnd, WM_USER, 2, 0);
pSetWindowSubclass(hwnd, wnd_proc_sub, 2, 0);
SendMessageA(hwnd, WM_USER, 1, 0);
SendMessageA(hwnd, WM_USER, 2, 0);
ok_sequence(Sub_BasicTest, "Basic");
pSetWindowSubclass(hwnd, WndProcSub, 2, DELETE_SELF);
SendMessage(hwnd, WM_USER, 1, 1);
pSetWindowSubclass(hwnd, wnd_proc_sub, 2, DELETE_SELF);
SendMessageA(hwnd, WM_USER, 1, 1);
ok_sequence(Sub_DeletedTest, "Deleted");
SendMessage(hwnd, WM_USER, 1, 0);
SendMessageA(hwnd, WM_USER, 1, 0);
ok_sequence(Sub_AfterDeletedTest, "After Deleted");
pSetWindowSubclass(hwnd, WndProcSub, 2, 0);
origProc3 = (WNDPROC)SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)WndProc3);
SendMessage(hwnd, WM_USER, 1, 0);
SendMessage(hwnd, WM_USER, 2, 0);
pSetWindowSubclass(hwnd, wnd_proc_sub, 2, 0);
orig_proc_3 = (WNDPROC)SetWindowLongPtrA(hwnd, GWLP_WNDPROC, (LONG_PTR)wnd_proc_3);
SendMessageA(hwnd, WM_USER, 1, 0);
SendMessageA(hwnd, WM_USER, 2, 0);
ok_sequence(Sub_OldAfterNewTest, "Old after New");
pSetWindowSubclass(hwnd, WndProcSub, 4, 0);
SendMessage(hwnd, WM_USER, 1, 0);
pSetWindowSubclass(hwnd, wnd_proc_sub, 4, 0);
SendMessageA(hwnd, WM_USER, 1, 0);
ok_sequence(Sub_MixTest, "Mix");
/* Now the fun starts */
pSetWindowSubclass(hwnd, WndProcSub, 4, SEND_NEST);
SendMessage(hwnd, WM_USER, 1, 1);
pSetWindowSubclass(hwnd, wnd_proc_sub, 4, SEND_NEST);
SendMessageA(hwnd, WM_USER, 1, 1);
ok_sequence(Sub_MixAndNestTest, "Mix and nest");
pSetWindowSubclass(hwnd, WndProcSub, 4, SEND_NEST | DELETE_SELF);
SendMessage(hwnd, WM_USER, 1, 1);
pSetWindowSubclass(hwnd, wnd_proc_sub, 4, SEND_NEST | DELETE_SELF);
SendMessageA(hwnd, WM_USER, 1, 1);
ok_sequence(Sub_MixNestDelTest, "Mix, nest, del");
pSetWindowSubclass(hwnd, WndProcSub, 4, 0);
pSetWindowSubclass(hwnd, WndProcSub, 5, DELETE_PREV);
SendMessage(hwnd, WM_USER, 1, 1);
pSetWindowSubclass(hwnd, wnd_proc_sub, 4, 0);
pSetWindowSubclass(hwnd, wnd_proc_sub, 5, DELETE_PREV);
SendMessageA(hwnd, WM_USER, 1, 1);
ok_sequence(Sub_MixDelPrevTest, "Mix and del prev");
DestroyWindow(hwnd);
}
static BOOL RegisterWindowClasses(void)
static BOOL register_window_classes(void)
{
WNDCLASSA cls;
ATOM atom;
cls.style = 0;
cls.lpfnWndProc = WndProc1;
cls.lpfnWndProc = wnd_proc_1;
cls.cbClsExtra = 0;
cls.cbWndExtra = 0;
cls.hInstance = GetModuleHandleA(0);
@ -274,18 +275,19 @@ static BOOL RegisterWindowClasses(void)
cls.hbrBackground = NULL;
cls.lpszMenuName = NULL;
cls.lpszClassName = "TestSubclass";
if(!RegisterClassA(&cls)) return FALSE;
return TRUE;
atom = RegisterClassA(&cls);
ok(atom, "failed to register test class\n");
return atom != 0;
}
static int init_function_pointers(void)
static BOOL init_function_pointers(void)
{
HMODULE hmod;
void *ptr;
hmod = GetModuleHandleA("comctl32.dll");
assert(hmod);
ok(hmod != NULL, "got %p\n", hmod);
/* Functions have to be loaded by ordinal. Only XP and W2K3 export
* them by name.
@ -299,7 +301,7 @@ static int init_function_pointers(void)
if(!pSetWindowSubclass || !pRemoveWindowSubclass || !pDefSubclassProc)
{
win_skip("SetWindowSubclass and friends are not available\n");
return 0;
return FALSE;
}
/* test named exports */
@ -316,14 +318,14 @@ static int init_function_pointers(void)
#undef TESTNAMED
}
return 1;
return TRUE;
}
START_TEST(subclass)
{
if(!init_function_pointers()) return;
if(!RegisterWindowClasses()) assert(0);
if(!register_window_classes()) return;
test_subclass();
}

View file

@ -73,7 +73,7 @@ static void flush_events(void)
while (diff > 0)
{
if (MsgWaitForMultipleObjects( 0, NULL, FALSE, min_timeout, QS_ALLINPUT ) == WAIT_TIMEOUT) break;
while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
while (PeekMessageA( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
diff = time - GetTickCount();
}
}
@ -248,8 +248,8 @@ START_TEST(syslink)
/* Make the SysLink control visible */
flush_sequences(sequences, NUM_MSG_SEQUENCE);
oldstyle = GetWindowLong(hWndSysLink, GWL_STYLE);
SetWindowLong(hWndSysLink, GWL_STYLE, oldstyle | WS_VISIBLE);
oldstyle = GetWindowLongA(hWndSysLink, GWL_STYLE);
SetWindowLongA(hWndSysLink, GWL_STYLE, oldstyle | WS_VISIBLE);
RedrawWindow(hWndSysLink, NULL, NULL, RDW_INVALIDATE);
flush_events();
ok_sequence(sequences, SYSLINK_SEQ_INDEX, visible_syslink_wnd_seq, "visible SysLink", TRUE);

View file

@ -48,7 +48,7 @@ static void CheckSize(HWND hwnd, INT width, INT height, const char *msg, int lin
{
RECT r;
SendMessage(hwnd, TCM_GETITEMRECT, 0, (LPARAM)&r);
SendMessageA(hwnd, TCM_GETITEMRECT, 0, (LPARAM)&r);
if (width >= 0 && height < 0)
ok_(__FILE__,line) (width == r.right - r.left, "%s: Expected width [%d] got [%d]\n",
msg, width, r.right - r.left);
@ -66,8 +66,8 @@ static void CheckSize(HWND hwnd, INT width, INT height, const char *msg, int lin
static void TabCheckSetSize(HWND hwnd, INT set_width, INT set_height, INT exp_width,
INT exp_height, const char *msg, int line)
{
SendMessage(hwnd, TCM_SETITEMSIZE, 0,
(LPARAM) MAKELPARAM((set_width >= 0) ? set_width : 0, (set_height >= 0) ? set_height : 0));
SendMessageA(hwnd, TCM_SETITEMSIZE, 0,
MAKELPARAM((set_width >= 0) ? set_width : 0, (set_height >= 0) ? set_height : 0));
if (winetest_interactive) RedrawWindow (hwnd, NULL, 0, RDW_UPDATENOW);
CheckSize(hwnd, exp_width, exp_height, msg, line);
}
@ -252,13 +252,13 @@ static const struct message getset_tooltip_parent_seq[] = {
static const struct message insert_focus_seq[] = {
{ TCM_GETITEMCOUNT, sent|wparam|lparam, 0, 0 },
{ TCM_GETCURFOCUS, sent|wparam|lparam, 0, 0 },
{ TCM_INSERTITEM, sent|wparam, 1 },
{ TCM_INSERTITEMA, sent|wparam, 1 },
{ WM_NOTIFYFORMAT, sent|defwinproc|optional },
{ WM_QUERYUISTATE, sent|defwinproc|optional },
{ WM_PARENTNOTIFY, sent|defwinproc|optional },
{ TCM_GETITEMCOUNT, sent|wparam|lparam, 0, 0 },
{ TCM_GETCURFOCUS, sent|wparam|lparam, 0, 0 },
{ TCM_INSERTITEM, sent|wparam, 2 },
{ TCM_INSERTITEMA, sent|wparam, 2 },
{ WM_NOTIFYFORMAT, sent|defwinproc|optional },
{ WM_QUERYUISTATE, sent|defwinproc|optional, },
{ WM_PARENTNOTIFY, sent|defwinproc|optional },
@ -266,7 +266,7 @@ static const struct message insert_focus_seq[] = {
{ TCM_GETCURFOCUS, sent|wparam|lparam, 0, 0 },
{ TCM_SETCURFOCUS, sent|wparam|lparam, -1, 0 },
{ TCM_GETCURFOCUS, sent|wparam|lparam, 0, 0 },
{ TCM_INSERTITEM, sent|wparam, 3 },
{ TCM_INSERTITEMA, sent|wparam, 3 },
{ TCM_GETCURFOCUS, sent|wparam|lparam, 0, 0 },
{ 0 }
};
@ -295,33 +295,29 @@ static HWND
create_tabcontrol (DWORD style, DWORD mask)
{
HWND handle;
TCITEM tcNewTab;
TCITEMA tcNewTab;
static char text1[] = "Tab 1",
text2[] = "Wide Tab 2",
text3[] = "T 3";
handle = CreateWindow (
WC_TABCONTROLA,
"TestTab",
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_FOCUSNEVER | style,
10, 10, 300, 100,
NULL, NULL, NULL, 0);
handle = CreateWindowA(WC_TABCONTROLA, "TestTab",
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_FOCUSNEVER | style, 10, 10, 300, 100, NULL,
NULL, NULL, 0);
ok(handle != NULL, "failed to create tab wnd\n");
assert (handle);
SetWindowLong(handle, GWL_STYLE, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_FOCUSNEVER | style);
SendMessage (handle, WM_SETFONT, 0, (LPARAM) hFont);
SetWindowLongA(handle, GWL_STYLE, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_FOCUSNEVER | style);
SendMessageA(handle, WM_SETFONT, 0, (LPARAM)hFont);
tcNewTab.mask = mask;
tcNewTab.pszText = text1;
tcNewTab.iImage = 0;
SendMessage (handle, TCM_INSERTITEM, 0, (LPARAM) &tcNewTab);
SendMessageA(handle, TCM_INSERTITEMA, 0, (LPARAM)&tcNewTab);
tcNewTab.pszText = text2;
tcNewTab.iImage = 1;
SendMessage (handle, TCM_INSERTITEM, 1, (LPARAM) &tcNewTab);
SendMessageA(handle, TCM_INSERTITEMA, 1, (LPARAM)&tcNewTab);
tcNewTab.pszText = text3;
tcNewTab.iImage = 2;
SendMessage (handle, TCM_INSERTITEM, 2, (LPARAM) &tcNewTab);
SendMessageA(handle, TCM_INSERTITEMA, 2, (LPARAM)&tcNewTab);
if (winetest_interactive)
{
@ -380,7 +376,7 @@ static BOOL registerParentWindowClass(void)
cls.cbWndExtra = 0;
cls.hInstance = GetModuleHandleA(NULL);
cls.hIcon = 0;
cls.hCursor = LoadCursorA(0, IDC_ARROW);
cls.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
cls.hbrBackground = GetStockObject(WHITE_BRUSH);
cls.lpszMenuName = NULL;
cls.lpszClassName = "Tab test parent class";
@ -392,12 +388,9 @@ static HWND createParentWindow(void)
if (!registerParentWindowClass())
return NULL;
return CreateWindowEx(0, "Tab test parent class",
"Tab test parent window",
WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX |
WS_MAXIMIZEBOX | WS_VISIBLE,
0, 0, 100, 100,
GetDesktopWindow(), NULL, GetModuleHandleA(NULL), NULL);
return CreateWindowExA(0, "Tab test parent class", "Tab test parent window",
WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE, 0, 0, 100, 100,
GetDesktopWindow(), NULL, GetModuleHandleA(NULL), NULL);
}
static LRESULT WINAPI tabSubclassProcess(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
@ -437,21 +430,17 @@ static LRESULT WINAPI tabSubclassProcess(HWND hwnd, UINT message, WPARAM wParam,
static HWND createFilledTabControl(HWND parent_wnd, DWORD style, DWORD mask, INT nTabs)
{
HWND tabHandle;
TCITEM tcNewTab;
TCITEMA tcNewTab;
WNDPROC oldproc;
RECT rect;
INT i;
GetClientRect(parent_wnd, &rect);
tabHandle = CreateWindow (
WC_TABCONTROLA,
"TestTab",
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_FOCUSNEVER | style,
0, 0, rect.right, rect.bottom,
parent_wnd, NULL, NULL, 0);
assert(tabHandle);
tabHandle = CreateWindowA(WC_TABCONTROLA, "TestTab",
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_FOCUSNEVER | style, 0, 0, rect.right,
rect.bottom, parent_wnd, NULL, NULL, 0);
ok(tabHandle != NULL, "failed to create tab wnd\n");
oldproc = (WNDPROC)SetWindowLongPtrA(tabHandle, GWLP_WNDPROC, (LONG_PTR)tabSubclassProcess);
SetWindowLongPtrA(tabHandle, GWLP_USERDATA, (LONG_PTR)oldproc);
@ -465,7 +454,7 @@ static HWND createFilledTabControl(HWND parent_wnd, DWORD style, DWORD mask, INT
sprintf(tabName, "Tab %d", i+1);
tcNewTab.pszText = tabName;
tcNewTab.iImage = i;
SendMessage (tabHandle, TCM_INSERTITEM, i, (LPARAM) &tcNewTab);
SendMessageA(tabHandle, TCM_INSERTITEMA, i, (LPARAM)&tcNewTab);
}
if (winetest_interactive)
@ -482,18 +471,14 @@ static HWND create_tooltip (HWND hTab, char toolTipText[])
{
HWND hwndTT;
TOOLINFO ti;
LPTSTR lptstr = toolTipText;
TTTOOLINFOA ti;
LPSTR lptstr = toolTipText;
RECT rect;
/* Creating a tooltip window*/
hwndTT = CreateWindowEx(
WS_EX_TOPMOST,
TOOLTIPS_CLASS,
NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
hTab, NULL, 0, NULL);
hwndTT = CreateWindowExA(WS_EX_TOPMOST, TOOLTIPS_CLASSA, NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hTab, NULL, 0, NULL);
SetWindowPos(
hwndTT,
@ -504,7 +489,7 @@ static HWND create_tooltip (HWND hTab, char toolTipText[])
GetClientRect (hTab, &rect);
/* Initialize members of toolinfo*/
ti.cbSize = sizeof(TOOLINFO);
ti.cbSize = sizeof(TTTOOLINFOA);
ti.uFlags = TTF_SUBCLASS;
ti.hwnd = hTab;
ti.hinst = 0;
@ -514,7 +499,7 @@ static HWND create_tooltip (HWND hTab, char toolTipText[])
ti.rect = rect;
/* Add toolinfo structure to the tooltip control */
SendMessage(hwndTT, TTM_ADDTOOL, 0, (LPARAM) &ti);
SendMessageA(hwndTT, TTM_ADDTOOLA, 0, (LPARAM)&ti);
return hwndTT;
}
@ -530,14 +515,14 @@ static void test_tab(INT nMinTabWidth)
INT i, dpi, exp;
hwTab = create_tabcontrol(TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE);
SendMessage(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
SendMessageA(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
/* Get System default MinTabWidth */
if (nMinTabWidth < 0)
nMinTabWidth = SendMessage(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
nMinTabWidth = SendMessageA(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
hdc = GetDC(hwTab);
dpi = GetDeviceCaps(hdc, LOGPIXELSX);
hOldFont = SelectObject(hdc, (HFONT)SendMessage(hwTab, WM_GETFONT, 0, 0));
hOldFont = SelectObject(hdc, (HFONT)SendMessageA(hwTab, WM_GETFONT, 0, 0));
GetTextExtentPoint32A(hdc, "Tab 1", strlen("Tab 1"), &size);
trace("Tab1 text size: size.cx=%d size.cy=%d\n", size.cx, size.cy);
SelectObject(hdc, hOldFont);
@ -548,7 +533,7 @@ static void test_tab(INT nMinTabWidth)
TABCHECKSETSIZE(hwTab, 50, 20, 50, 20, "set size");
TABCHECKSETSIZE(hwTab, 0, 1, 0, 1, "min size");
SendMessage(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
SendMessageA(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
trace (" TCS_FIXEDWIDTH tabs with icon...\n");
TABCHECKSETSIZE(hwTab, 50, 30, 50, 30, "set size > icon");
@ -558,7 +543,7 @@ static void test_tab(INT nMinTabWidth)
DestroyWindow (hwTab);
hwTab = create_tabcontrol(TCS_FIXEDWIDTH | TCS_BUTTONS, TCIF_TEXT|TCIF_IMAGE);
SendMessage(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
SendMessageA(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
hdc = GetDC(hwTab);
dpi = GetDeviceCaps(hdc, LOGPIXELSX);
@ -569,19 +554,19 @@ static void test_tab(INT nMinTabWidth)
TABCHECKSETSIZE(hwTab, 10, 50, 10, 50, "set size 2");
TABCHECKSETSIZE(hwTab, 0, 1, 0, 1, "min size");
SendMessage(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
SendMessageA(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
trace (" TCS_FIXEDWIDTH buttons with icon...\n");
TABCHECKSETSIZE(hwTab, 50, 30, 50, 30, "set size > icon");
TABCHECKSETSIZE(hwTab, 20, 20, 25, 20, "set size < icon");
TABCHECKSETSIZE(hwTab, 0, 1, 25, 1, "min size");
SendMessage(hwTab, TCM_SETPADDING, 0, MAKELPARAM(4,4));
SendMessageA(hwTab, TCM_SETPADDING, 0, MAKELPARAM(4, 4));
TABCHECKSETSIZE(hwTab, 0, 1, 25, 1, "set padding, min size");
DestroyWindow (hwTab);
hwTab = create_tabcontrol(TCS_FIXEDWIDTH | TCS_BOTTOM, TCIF_TEXT|TCIF_IMAGE);
SendMessage(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
SendMessageA(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
hdc = GetDC(hwTab);
dpi = GetDeviceCaps(hdc, LOGPIXELSX);
@ -593,22 +578,22 @@ static void test_tab(INT nMinTabWidth)
TABCHECKSETSIZE(hwTab, 10, 50, 10, 50, "no icon, set size 2");
TABCHECKSETSIZE(hwTab, 0, 1, 0, 1, "no icon, min size");
SendMessage(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
SendMessageA(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
TABCHECKSETSIZE(hwTab, 50, 30, 50, 30, "with icon, set size > icon");
TABCHECKSETSIZE(hwTab, 20, 20, 25, 20, "with icon, set size < icon");
TABCHECKSETSIZE(hwTab, 0, 1, 25, 1, "with icon, min size");
SendMessage(hwTab, TCM_SETPADDING, 0, MAKELPARAM(4,4));
SendMessageA(hwTab, TCM_SETPADDING, 0, MAKELPARAM(4, 4));
TABCHECKSETSIZE(hwTab, 0, 1, 25, 1, "set padding, min size");
DestroyWindow (hwTab);
hwTab = create_tabcontrol(0, TCIF_TEXT|TCIF_IMAGE);
SendMessage(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
SendMessageA(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
trace (" non fixed width, with text...\n");
exp = max(size.cx +TAB_PADDING_X*2, (nMinTabWidth < 0) ? DEFAULT_MIN_TAB_WIDTH : nMinTabWidth);
SendMessage( hwTab, TCM_GETITEMRECT, 0, (LPARAM)&rTab );
SendMessageA( hwTab, TCM_GETITEMRECT, 0, (LPARAM)&rTab );
ok( rTab.right - rTab.left == exp || broken(rTab.right - rTab.left == DEFAULT_MIN_TAB_WIDTH),
"no icon, default width: Expected width [%d] got [%d]\n", exp, rTab.right - rTab.left );
@ -616,13 +601,13 @@ static void test_tab(INT nMinTabWidth)
{
INT nTabWidth = (nMinTabWidth < 0) ? TabWidthPadded(i, 2) : nMinTabWidth;
SendMessage(hwTab, TCM_SETIMAGELIST, 0, 0);
SendMessage(hwTab, TCM_SETPADDING, 0, MAKELPARAM(i,i));
SendMessageA(hwTab, TCM_SETIMAGELIST, 0, 0);
SendMessageA(hwTab, TCM_SETPADDING, 0, MAKELPARAM(i, i));
TABCHECKSETSIZE(hwTab, 50, 20, max(size.cx + i*2, nTabWidth), 20, "no icon, set size");
TABCHECKSETSIZE(hwTab, 0, 1, max(size.cx + i*2, nTabWidth), 1, "no icon, min size");
SendMessage(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
SendMessageA(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
nTabWidth = (nMinTabWidth < 0) ? TabWidthPadded(i, 3) : nMinTabWidth;
TABCHECKSETSIZE(hwTab, 50, 30, max(size.cx + 21 + i*3, nTabWidth), 30, "with icon, set size > icon");
@ -632,11 +617,11 @@ static void test_tab(INT nMinTabWidth)
DestroyWindow (hwTab);
hwTab = create_tabcontrol(0, TCIF_IMAGE);
SendMessage(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
SendMessageA(hwTab, TCM_SETMINTABWIDTH, 0, nMinTabWidth);
trace (" non fixed width, no text...\n");
exp = (nMinTabWidth < 0) ? DEFAULT_MIN_TAB_WIDTH : nMinTabWidth;
SendMessage( hwTab, TCM_GETITEMRECT, 0, (LPARAM)&rTab );
SendMessageA( hwTab, TCM_GETITEMRECT, 0, (LPARAM)&rTab );
ok( rTab.right - rTab.left == exp || broken(rTab.right - rTab.left == DEFAULT_MIN_TAB_WIDTH),
"no icon, default width: Expected width [%d] got [%d]\n", exp, rTab.right - rTab.left );
@ -644,13 +629,13 @@ static void test_tab(INT nMinTabWidth)
{
INT nTabWidth = (nMinTabWidth < 0) ? TabWidthPadded(i, 2) : nMinTabWidth;
SendMessage(hwTab, TCM_SETIMAGELIST, 0, 0);
SendMessage(hwTab, TCM_SETPADDING, 0, MAKELPARAM(i,i));
SendMessageA(hwTab, TCM_SETIMAGELIST, 0, 0);
SendMessageA(hwTab, TCM_SETPADDING, 0, MAKELPARAM(i, i));
TABCHECKSETSIZE(hwTab, 50, 20, nTabWidth, 20, "no icon, set size");
TABCHECKSETSIZE(hwTab, 0, 1, nTabWidth, 1, "no icon, min size");
SendMessage(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
SendMessageA(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
if (i > 1 && nMinTabWidth > 0 && nMinTabWidth < DEFAULT_MIN_TAB_WIDTH)
nTabWidth += EXTRA_ICON_PADDING *(i-1);
@ -690,21 +675,21 @@ static void test_curfocus(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Testing CurFocus with largest appropriate value */
SendMessage(hTab, TCM_SETCURFOCUS, nTabs-1, 0);
focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
SendMessageA(hTab, TCM_SETCURFOCUS, nTabs - 1, 0);
focusIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(nTabs-1, focusIndex);
/* Testing CurFocus with negative value */
SendMessage(hTab, TCM_SETCURFOCUS, -10, 0);
focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
SendMessageA(hTab, TCM_SETCURFOCUS, -10, 0);
focusIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(-1, focusIndex);
/* Testing CurFocus with value larger than number of tabs */
focusIndex = SendMessage(hTab, TCM_SETCURSEL, 1, 0);
focusIndex = SendMessageA(hTab, TCM_SETCURSEL, 1, 0);
expect(-1, focusIndex);
SendMessage(hTab, TCM_SETCURFOCUS, nTabs+1, 0);
focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
SendMessageA(hTab, TCM_SETCURFOCUS, nTabs + 1, 0);
focusIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(1, focusIndex);
ok_sequence(sequences, TAB_SEQ_INDEX, getset_cur_focus_seq, "Getset curFoc test sequence", FALSE);
@ -717,7 +702,7 @@ static void test_cursel(void)
const INT nTabs = 5;
INT selectionIndex;
INT focusIndex;
TCITEM tcItem;
TCITEMA tcItem;
HWND hTab;
hTab = createFilledTabControl(parent_wnd, TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE, nTabs);
@ -726,27 +711,27 @@ static void test_cursel(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Testing CurSel with largest appropriate value */
selectionIndex = SendMessage(hTab, TCM_SETCURSEL, nTabs-1, 0);
selectionIndex = SendMessageA(hTab, TCM_SETCURSEL, nTabs - 1, 0);
expect(0, selectionIndex);
selectionIndex = SendMessage(hTab, TCM_GETCURSEL, 0, 0);
selectionIndex = SendMessageA(hTab, TCM_GETCURSEL, 0, 0);
expect(nTabs-1, selectionIndex);
/* Focus should switch with selection */
focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
focusIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(nTabs-1, focusIndex);
/* Testing CurSel with negative value */
SendMessage(hTab, TCM_SETCURSEL, -10, 0);
selectionIndex = SendMessage(hTab, TCM_GETCURSEL, 0, 0);
SendMessageA(hTab, TCM_SETCURSEL, -10, 0);
selectionIndex = SendMessageA(hTab, TCM_GETCURSEL, 0, 0);
expect(-1, selectionIndex);
/* Testing CurSel with value larger than number of tabs */
selectionIndex = SendMessage(hTab, TCM_SETCURSEL, 1, 0);
selectionIndex = SendMessageA(hTab, TCM_SETCURSEL, 1, 0);
expect(-1, selectionIndex);
selectionIndex = SendMessage(hTab, TCM_SETCURSEL, nTabs+1, 0);
selectionIndex = SendMessageA(hTab, TCM_SETCURSEL, nTabs + 1, 0);
expect(-1, selectionIndex);
selectionIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
selectionIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(1, selectionIndex);
ok_sequence(sequences, TAB_SEQ_INDEX, getset_cur_sel_seq, "Getset curSel test sequence", FALSE);
@ -754,14 +739,32 @@ static void test_cursel(void)
/* selected item should have TCIS_BUTTONPRESSED state
It doesn't depend on button state */
memset(&tcItem, 0, sizeof(TCITEM));
memset(&tcItem, 0, sizeof(TCITEMA));
tcItem.mask = TCIF_STATE;
tcItem.dwStateMask = TCIS_BUTTONPRESSED;
selectionIndex = SendMessage(hTab, TCM_GETCURSEL, 0, 0);
SendMessage(hTab, TCM_GETITEM, selectionIndex, (LPARAM) &tcItem);
selectionIndex = SendMessageA(hTab, TCM_GETCURSEL, 0, 0);
SendMessageA(hTab, TCM_GETITEMA, selectionIndex, (LPARAM)&tcItem);
ok (tcItem.dwState & TCIS_BUTTONPRESSED || broken(tcItem.dwState == 0), /* older comctl32 */
"Selected item should have TCIS_BUTTONPRESSED\n");
/* now deselect all and check previously selected item state */
focusIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
ok(focusIndex == 1, "got %d\n", focusIndex);
selectionIndex = SendMessageA(hTab, TCM_SETCURSEL, -1, 0);
ok(selectionIndex == 1, "got %d\n", selectionIndex);
memset(&tcItem, 0, sizeof(TCITEMA));
/* focus is reset too */
focusIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
ok(focusIndex == -1, "got %d\n", focusIndex);
tcItem.mask = TCIF_STATE;
tcItem.dwStateMask = TCIS_BUTTONPRESSED;
SendMessageA(hTab, TCM_GETITEMA, selectionIndex, (LPARAM)&tcItem);
ok(tcItem.dwState == 0, "got state %d\n", tcItem.dwState);
DestroyWindow(hTab);
}
@ -778,18 +781,18 @@ static void test_extendedstyle(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Testing Flat Separators */
extendedStyle = SendMessage(hTab, TCM_GETEXTENDEDSTYLE, 0, 0);
prevExtendedStyle = SendMessage(hTab, TCM_SETEXTENDEDSTYLE, 0, TCS_EX_FLATSEPARATORS);
extendedStyle = SendMessageA(hTab, TCM_GETEXTENDEDSTYLE, 0, 0);
prevExtendedStyle = SendMessageA(hTab, TCM_SETEXTENDEDSTYLE, 0, TCS_EX_FLATSEPARATORS);
expect(extendedStyle, prevExtendedStyle);
extendedStyle = SendMessage(hTab, TCM_GETEXTENDEDSTYLE, 0, 0);
extendedStyle = SendMessageA(hTab, TCM_GETEXTENDEDSTYLE, 0, 0);
expect(TCS_EX_FLATSEPARATORS, extendedStyle);
/* Testing Register Drop */
prevExtendedStyle = SendMessage(hTab, TCM_SETEXTENDEDSTYLE, 0, TCS_EX_REGISTERDROP);
prevExtendedStyle = SendMessageA(hTab, TCM_SETEXTENDEDSTYLE, 0, TCS_EX_REGISTERDROP);
expect(extendedStyle, prevExtendedStyle);
extendedStyle = SendMessage(hTab, TCM_GETEXTENDEDSTYLE, 0, 0);
extendedStyle = SendMessageA(hTab, TCM_GETEXTENDEDSTYLE, 0, 0);
todo_wine{
expect(TCS_EX_REGISTERDROP, extendedStyle);
}
@ -811,19 +814,19 @@ static void test_unicodeformat(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
unicodeFormat = SendMessage(hTab, TCM_SETUNICODEFORMAT, TRUE, 0);
unicodeFormat = SendMessageA(hTab, TCM_SETUNICODEFORMAT, TRUE, 0);
todo_wine{
expect(0, unicodeFormat);
}
unicodeFormat = SendMessage(hTab, TCM_GETUNICODEFORMAT, 0, 0);
unicodeFormat = SendMessageA(hTab, TCM_GETUNICODEFORMAT, 0, 0);
expect(1, unicodeFormat);
unicodeFormat = SendMessage(hTab, TCM_SETUNICODEFORMAT, FALSE, 0);
unicodeFormat = SendMessageA(hTab, TCM_SETUNICODEFORMAT, FALSE, 0);
expect(1, unicodeFormat);
unicodeFormat = SendMessage(hTab, TCM_GETUNICODEFORMAT, 0, 0);
unicodeFormat = SendMessageA(hTab, TCM_GETUNICODEFORMAT, 0, 0);
expect(0, unicodeFormat);
unicodeFormat = SendMessage(hTab, TCM_SETUNICODEFORMAT, TRUE, 0);
unicodeFormat = SendMessageA(hTab, TCM_SETUNICODEFORMAT, TRUE, 0);
expect(0, unicodeFormat);
ok_sequence(sequences, TAB_SEQ_INDEX, getset_unicode_format_seq, "Getset unicodeFormat test sequence", FALSE);
@ -836,7 +839,7 @@ static void test_getset_item(void)
{
char szText[32] = "New Label";
const INT nTabs = 5;
TCITEM tcItem;
TCITEMA tcItem;
LPARAM lparam;
DWORD ret;
HWND hTab;
@ -864,7 +867,7 @@ static void test_getset_item(void)
memset(&lparam, 0xaa, sizeof(lparam));
tcItem.lParam = lparam;
tcItem.mask = TCIF_PARAM;
ret = SendMessage(hTab, TCM_GETITEM, 0, (LPARAM)&tcItem);
ret = SendMessageA(hTab, TCM_GETITEMA, 0, (LPARAM)&tcItem);
expect(TRUE, ret);
/* everything higher specified size is preserved */
memset(&lparam, 0xff, sizeof(lparam)-1);
@ -881,13 +884,13 @@ static void test_getset_item(void)
/* valid range here is [0,4] */
memset(&tcItem, 0xcc, sizeof(tcItem));
tcItem.mask = TCIF_PARAM;
ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem);
ret = SendMessageA(hTab, TCM_GETITEMA, 5, (LPARAM)&tcItem);
expect(FALSE, ret);
ok(tcItem.lParam == 0, "Expected zero lParam, got %lu\n", tcItem.lParam);
memset(&tcItem, 0xcc, sizeof(tcItem));
tcItem.mask = TCIF_IMAGE;
ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem);
ret = SendMessageA(hTab, TCM_GETITEMA, 5, (LPARAM)&tcItem);
expect(FALSE, ret);
expect(0, tcItem.iImage);
@ -895,7 +898,7 @@ static void test_getset_item(void)
tcItem.mask = TCIF_TEXT;
tcItem.pszText = szText;
szText[0] = 'a';
ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem);
ret = SendMessageA(hTab, TCM_GETITEMA, 5, (LPARAM)&tcItem);
expect(FALSE, ret);
expect('a', szText[0]);
@ -903,7 +906,7 @@ static void test_getset_item(void)
tcItem.mask = TCIF_STATE;
tcItem.dwStateMask = 0;
tcItem.dwState = TCIS_BUTTONPRESSED;
ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem);
ret = SendMessageA(hTab, TCM_GETITEMA, 5, (LPARAM)&tcItem);
expect(FALSE, ret);
ok(tcItem.dwState == 0, "Expected zero dwState, got %u\n", tcItem.dwState);
@ -911,20 +914,20 @@ static void test_getset_item(void)
tcItem.mask = TCIF_STATE;
tcItem.dwStateMask = TCIS_BUTTONPRESSED;
tcItem.dwState = TCIS_BUTTONPRESSED;
ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem);
ret = SendMessageA(hTab, TCM_GETITEMA, 5, (LPARAM)&tcItem);
expect(FALSE, ret);
ok(tcItem.dwState == 0, "Expected zero dwState\n");
/* check with negative index to be sure */
memset(&tcItem, 0xcc, sizeof(tcItem));
tcItem.mask = TCIF_PARAM;
ret = SendMessage(hTab, TCM_GETITEM, -1, (LPARAM)&tcItem);
ret = SendMessageA(hTab, TCM_GETITEMA, -1, (LPARAM)&tcItem);
expect(FALSE, ret);
ok(tcItem.lParam == 0, "Expected zero lParam, got %lu\n", tcItem.lParam);
memset(&tcItem, 0xcc, sizeof(tcItem));
tcItem.mask = TCIF_PARAM;
ret = SendMessage(hTab, TCM_GETITEM, -2, (LPARAM)&tcItem);
ret = SendMessageA(hTab, TCM_GETITEMA, -2, (LPARAM)&tcItem);
expect(FALSE, ret);
ok(tcItem.lParam == 0, "Expected zero lParam, got %lu\n", tcItem.lParam);
@ -935,11 +938,11 @@ static void test_getset_item(void)
tcItem.cchTextMax = sizeof(szText);
strcpy(szText, "New Label");
ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n");
ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n");
ok(SendMessageA(hTab, TCM_SETITEMA, 0, (LPARAM)&tcItem), "Setting new item failed.\n");
ok(SendMessageA(hTab, TCM_GETITEMA, 0, (LPARAM)&tcItem), "Getting item failed.\n");
expect_str("New Label", tcItem.pszText);
ok ( SendMessage(hTab, TCM_GETITEM, 1, (LPARAM) &tcItem), "Getting item failed.\n");
ok(SendMessageA(hTab, TCM_GETITEMA, 1, (LPARAM)&tcItem), "Getting item failed.\n");
expect_str("Tab 2", tcItem.pszText);
ok_sequence(sequences, TAB_SEQ_INDEX, getset_item_seq, "Getset item test sequence", FALSE);
@ -950,9 +953,9 @@ static void test_getset_item(void)
tcItem.mask = TCIF_STATE;
tcItem.dwStateMask = TCIS_BUTTONPRESSED;
tcItem.dwState = TCIS_BUTTONPRESSED;
ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n");
ok(SendMessageA(hTab, TCM_SETITEMA, 0, (LPARAM)&tcItem), "Setting new item failed.\n");
tcItem.dwState = 0;
ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n");
ok(SendMessageA(hTab, TCM_GETITEMA, 0, (LPARAM)&tcItem), "Getting item failed.\n");
if (tcItem.dwState)
{
ok (tcItem.dwState == TCIS_BUTTONPRESSED, "TCIS_BUTTONPRESSED should be set.\n");
@ -960,14 +963,14 @@ static void test_getset_item(void)
tcItem.mask = TCIF_STATE;
tcItem.dwStateMask = TCIS_HIGHLIGHTED;
tcItem.dwState = TCIS_HIGHLIGHTED;
ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n");
ok(SendMessageA(hTab, TCM_SETITEMA, 0, (LPARAM)&tcItem), "Setting new item failed.\n");
tcItem.dwState = 0;
ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n");
ok(SendMessageA(hTab, TCM_GETITEMA, 0, (LPARAM)&tcItem), "Getting item failed.\n");
ok (tcItem.dwState == TCIS_HIGHLIGHTED, "TCIS_HIGHLIGHTED should be set.\n");
tcItem.mask = TCIF_STATE;
tcItem.dwStateMask = TCIS_BUTTONPRESSED;
tcItem.dwState = 0;
ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n");
ok(SendMessageA(hTab, TCM_GETITEMA, 0, (LPARAM)&tcItem), "Getting item failed.\n");
ok (tcItem.dwState == TCIS_BUTTONPRESSED, "TCIS_BUTTONPRESSED should be set.\n");
}
else win_skip( "Item state mask not supported\n" );
@ -987,11 +990,11 @@ static void test_getset_tooltips(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
toolTip = create_tooltip(hTab, toolTipText);
SendMessage(hTab, TCM_SETTOOLTIPS, (LPARAM) toolTip, 0);
ok (toolTip == (HWND) SendMessage(hTab,TCM_GETTOOLTIPS,0,0), "ToolTip was set incorrectly.\n");
SendMessageA(hTab, TCM_SETTOOLTIPS, (LPARAM)toolTip, 0);
ok(toolTip == (HWND)SendMessageA(hTab, TCM_GETTOOLTIPS, 0,0), "ToolTip was set incorrectly.\n");
SendMessage(hTab, TCM_SETTOOLTIPS, 0, 0);
ok (NULL == (HWND) SendMessage(hTab,TCM_GETTOOLTIPS,0,0), "ToolTip was set incorrectly.\n");
SendMessageA(hTab, TCM_SETTOOLTIPS, 0, 0);
ok(!SendMessageA(hTab, TCM_GETTOOLTIPS, 0,0), "ToolTip was set incorrectly.\n");
ok_sequence(sequences, TAB_SEQ_INDEX, getset_tooltip_seq, "Getset tooltip test sequence", TRUE);
ok_sequence(sequences, PARENT_SEQ_INDEX, getset_tooltip_parent_seq, "Getset tooltip test parent sequence", TRUE);
@ -1030,26 +1033,26 @@ static void test_misc(void)
"Parent after sequence, adding tab control to parent", TRUE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
ok(SendMessage(hTab, TCM_SETMINTABWIDTH, 0, -1) > 0,"TCM_SETMINTABWIDTH returned < 0\n");
ok(SendMessageA(hTab, TCM_SETMINTABWIDTH, 0, -1) > 0, "TCM_SETMINTABWIDTH returned < 0\n");
ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Set minTabWidth test parent sequence", FALSE);
/* Testing GetItemCount */
flush_sequences(sequences, NUM_MSG_SEQUENCES);
nTabsRetrieved = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
nTabsRetrieved = SendMessageA(hTab, TCM_GETITEMCOUNT, 0, 0);
expect(nTabs, nTabsRetrieved);
ok_sequence(sequences, TAB_SEQ_INDEX, get_item_count_seq, "Get itemCount test sequence", FALSE);
ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Getset itemCount test parent sequence", FALSE);
/* Testing GetRowCount */
flush_sequences(sequences, NUM_MSG_SEQUENCES);
rowCount = SendMessage(hTab, TCM_GETROWCOUNT, 0, 0);
rowCount = SendMessageA(hTab, TCM_GETROWCOUNT, 0, 0);
expect(1, rowCount);
ok_sequence(sequences, TAB_SEQ_INDEX, get_row_count_seq, "Get rowCount test sequence", FALSE);
ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Get rowCount test parent sequence", FALSE);
/* Testing GetItemRect */
flush_sequences(sequences, NUM_MSG_SEQUENCES);
ok(SendMessage(hTab, TCM_GETITEMRECT, 0, (LPARAM) &rTab), "GetItemRect failed.\n");
ok(SendMessageA(hTab, TCM_GETITEMRECT, 0, (LPARAM)&rTab), "GetItemRect failed.\n");
hdc = GetDC(hTab);
dpi = GetDeviceCaps(hdc, LOGPIXELSX);
@ -1071,10 +1074,10 @@ static void test_adjustrect(void)
hTab = createFilledTabControl(parent_wnd, TCS_FIXEDWIDTH, 0, 0);
ok(hTab != NULL, "Failed to create tab control\n");
r = SendMessage(hTab, TCM_ADJUSTRECT, FALSE, 0);
r = SendMessageA(hTab, TCM_ADJUSTRECT, FALSE, 0);
expect(-1, r);
r = SendMessage(hTab, TCM_ADJUSTRECT, TRUE, 0);
r = SendMessageA(hTab, TCM_ADJUSTRECT, TRUE, 0);
expect(-1, r);
}
@ -1083,7 +1086,7 @@ static void test_insert_focus(void)
HWND hTab;
INT nTabsRetrieved;
INT r;
TCITEM tcNewTab;
TCITEMA tcNewTab;
DWORD mask = TCIF_TEXT|TCIF_IMAGE;
static char tabName[] = "TAB";
tcNewTab.mask = mask;
@ -1094,48 +1097,48 @@ static void test_insert_focus(void)
hTab = createFilledTabControl(parent_wnd, TCS_FIXEDWIDTH, mask, 0);
ok(hTab != NULL, "Failed to create tab control\n");
r = SendMessage(hTab, TCM_GETCURSEL, 0, 0);
r = SendMessageA(hTab, TCM_GETCURSEL, 0, 0);
expect(-1, r);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
nTabsRetrieved = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
nTabsRetrieved = SendMessageA(hTab, TCM_GETITEMCOUNT, 0, 0);
expect(0, nTabsRetrieved);
r = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
r = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(-1, r);
tcNewTab.iImage = 1;
r = SendMessage(hTab, TCM_INSERTITEM, 1, (LPARAM) &tcNewTab);
r = SendMessageA(hTab, TCM_INSERTITEMA, 1, (LPARAM)&tcNewTab);
expect(0, r);
nTabsRetrieved = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
nTabsRetrieved = SendMessageA(hTab, TCM_GETITEMCOUNT, 0, 0);
expect(1, nTabsRetrieved);
r = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
r = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(0, r);
tcNewTab.iImage = 2;
r = SendMessage(hTab, TCM_INSERTITEM, 2, (LPARAM) &tcNewTab);
r = SendMessageA(hTab, TCM_INSERTITEMA, 2, (LPARAM)&tcNewTab);
expect(1, r);
nTabsRetrieved = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
nTabsRetrieved = SendMessageA(hTab, TCM_GETITEMCOUNT, 0, 0);
expect(2, nTabsRetrieved);
r = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
r = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(0, r);
r = SendMessage(hTab, TCM_SETCURFOCUS, -1, 0);
r = SendMessageA(hTab, TCM_SETCURFOCUS, -1, 0);
expect(0, r);
r = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
r = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(-1, r);
tcNewTab.iImage = 3;
r = SendMessage(hTab, TCM_INSERTITEM, 3, (LPARAM) &tcNewTab);
r = SendMessageA(hTab, TCM_INSERTITEMA, 3, (LPARAM)&tcNewTab);
expect(2, r);
r = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
r = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(2, r);
ok_sequence(sequences, TAB_SEQ_INDEX, insert_focus_seq, "insert_focus test sequence", FALSE);
@ -1157,34 +1160,34 @@ static void test_delete_focus(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
nTabsRetrieved = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
nTabsRetrieved = SendMessageA(hTab, TCM_GETITEMCOUNT, 0, 0);
expect(2, nTabsRetrieved);
r = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
r = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(0, r);
r = SendMessage(hTab, TCM_DELETEITEM, 1, 0);
r = SendMessageA(hTab, TCM_DELETEITEM, 1, 0);
expect(1, r);
nTabsRetrieved = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
nTabsRetrieved = SendMessageA(hTab, TCM_GETITEMCOUNT, 0, 0);
expect(1, nTabsRetrieved);
r = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
r = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(0, r);
r = SendMessage(hTab, TCM_SETCURFOCUS, -1, 0);
r = SendMessageA(hTab, TCM_SETCURFOCUS, -1, 0);
expect(0, r);
r = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
r = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(-1, r);
r = SendMessage(hTab, TCM_DELETEITEM, 0, 0);
r = SendMessageA(hTab, TCM_DELETEITEM, 0, 0);
expect(1, r);
nTabsRetrieved = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
nTabsRetrieved = SendMessageA(hTab, TCM_GETITEMCOUNT, 0, 0);
expect(0, nTabsRetrieved);
r = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
r = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0);
expect(-1, r);
ok_sequence(sequences, TAB_SEQ_INDEX, delete_focus_seq, "delete_focus test sequence", FALSE);
@ -1198,7 +1201,7 @@ static void test_removeimage(void)
static const BYTE bits[32];
HWND hwTab;
INT i;
TCITEM item;
TCITEMA item;
HICON hicon;
HIMAGELIST himl = ImageList_Create(16, 16, ILC_COLOR, 3, 4);
@ -1208,46 +1211,46 @@ static void test_removeimage(void)
ImageList_AddIcon(himl, hicon);
hwTab = create_tabcontrol(TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE);
SendMessage(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
SendMessageA(hwTab, TCM_SETIMAGELIST, 0, (LPARAM)himl);
memset(&item, 0, sizeof(TCITEM));
memset(&item, 0, sizeof(TCITEMA));
item.mask = TCIF_IMAGE;
for(i = 0; i < 3; i++) {
SendMessage(hwTab, TCM_GETITEM, i, (LPARAM)&item);
SendMessageA(hwTab, TCM_GETITEMA, i, (LPARAM)&item);
expect(i, item.iImage);
}
/* remove image middle image */
SendMessage(hwTab, TCM_REMOVEIMAGE, 1, 0);
SendMessageA(hwTab, TCM_REMOVEIMAGE, 1, 0);
expect(2, ImageList_GetImageCount(himl));
item.iImage = -1;
SendMessage(hwTab, TCM_GETITEM, 0, (LPARAM)&item);
SendMessageA(hwTab, TCM_GETITEMA, 0, (LPARAM)&item);
expect(0, item.iImage);
item.iImage = 0;
SendMessage(hwTab, TCM_GETITEM, 1, (LPARAM)&item);
SendMessageA(hwTab, TCM_GETITEMA, 1, (LPARAM)&item);
expect(-1, item.iImage);
item.iImage = 0;
SendMessage(hwTab, TCM_GETITEM, 2, (LPARAM)&item);
SendMessageA(hwTab, TCM_GETITEMA, 2, (LPARAM)&item);
expect(1, item.iImage);
/* remove first image */
SendMessage(hwTab, TCM_REMOVEIMAGE, 0, 0);
SendMessageA(hwTab, TCM_REMOVEIMAGE, 0, 0);
expect(1, ImageList_GetImageCount(himl));
item.iImage = 0;
SendMessage(hwTab, TCM_GETITEM, 0, (LPARAM)&item);
SendMessageA(hwTab, TCM_GETITEMA, 0, (LPARAM)&item);
expect(-1, item.iImage);
item.iImage = 0;
SendMessage(hwTab, TCM_GETITEM, 1, (LPARAM)&item);
SendMessageA(hwTab, TCM_GETITEMA, 1, (LPARAM)&item);
expect(-1, item.iImage);
item.iImage = -1;
SendMessage(hwTab, TCM_GETITEM, 2, (LPARAM)&item);
SendMessageA(hwTab, TCM_GETITEMA, 2, (LPARAM)&item);
expect(0, item.iImage);
/* remove the last one */
SendMessage(hwTab, TCM_REMOVEIMAGE, 0, 0);
SendMessageA(hwTab, TCM_REMOVEIMAGE, 0, 0);
expect(0, ImageList_GetImageCount(himl));
for(i = 0; i < 3; i++) {
item.iImage = 0;
SendMessage(hwTab, TCM_GETITEM, i, (LPARAM)&item);
SendMessageA(hwTab, TCM_GETITEMA, i, (LPARAM)&item);
expect(-1, item.iImage);
}
@ -1264,15 +1267,15 @@ static void test_delete_selection(void)
hTab = createFilledTabControl(parent_wnd, TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE, 4);
ok(hTab != NULL, "Failed to create tab control\n");
ret = SendMessage(hTab, TCM_SETCURSEL, 3, 0);
ret = SendMessageA(hTab, TCM_SETCURSEL, 3, 0);
expect(0, ret);
ret = SendMessage(hTab, TCM_GETCURSEL, 0, 0);
ret = SendMessageA(hTab, TCM_GETCURSEL, 0, 0);
expect(3, ret);
/* delete selected item - selection goes to -1 */
ret = SendMessage(hTab, TCM_DELETEITEM, 3, 0);
ret = SendMessageA(hTab, TCM_DELETEITEM, 3, 0);
expect(TRUE, ret);
ret = SendMessage(hTab, TCM_GETCURSEL, 0, 0);
ret = SendMessageA(hTab, TCM_GETCURSEL, 0, 0);
expect(-1, ret);
DestroyWindow(hTab);

View file

@ -3,6 +3,7 @@
#define STANDALONE
#include <wine/test.h>
extern void func_button(void);
extern void func_comboex(void);
extern void func_datetime(void);
extern void func_dpa(void);
@ -29,6 +30,7 @@ extern void func_updown(void);
const struct test winetest_testlist[] =
{
{ "button", func_button },
{ "comboex", func_comboex },
{ "datetime", func_datetime },
{ "dpa", func_dpa },

View file

@ -97,7 +97,7 @@ static LRESULT parent_wnd_notify(LPARAM lParam)
{
NMHDR *hdr = (NMHDR *)lParam;
NMTBHOTITEM *nmhi;
NMTBDISPINFO *nmdisp;
NMTBDISPINFOA *nmdisp;
switch (hdr->code)
{
case TBN_HOTITEMCHANGE:
@ -196,45 +196,45 @@ static void basic_test(void)
buttons, sizeof(buttons)/sizeof(buttons[0]),
0, 0, 20, 16, sizeof(TBBUTTON));
ok(hToolbar != NULL, "Toolbar creation\n");
SendMessage(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)"test\000");
SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)"test\000");
/* test for exclusion working inside a separator-separated :-) group */
SendMessage(hToolbar, TB_CHECKBUTTON, 1000, 1); /* press A1 */
ok(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 pressed\n");
ok(!SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1001, 0), "A2 not pressed\n");
SendMessageA(hToolbar, TB_CHECKBUTTON, 1000, 1); /* press A1 */
ok(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 pressed\n");
ok(!SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1001, 0), "A2 not pressed\n");
SendMessage(hToolbar, TB_CHECKBUTTON, 1004, 1); /* press A5, release A1 */
ok(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1004, 0), "A5 pressed\n");
ok(!SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 not pressed anymore\n");
SendMessageA(hToolbar, TB_CHECKBUTTON, 1004, 1); /* press A5, release A1 */
ok(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1004, 0), "A5 pressed\n");
ok(!SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 not pressed anymore\n");
SendMessage(hToolbar, TB_CHECKBUTTON, 1005, 1); /* press A6, release A5 */
ok(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1005, 0), "A6 pressed\n");
ok(!SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1004, 0), "A5 not pressed anymore\n");
SendMessageA(hToolbar, TB_CHECKBUTTON, 1005, 1); /* press A6, release A5 */
ok(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1005, 0), "A6 pressed\n");
ok(!SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1004, 0), "A5 not pressed anymore\n");
/* test for inter-group crosstalk, ie. two radio groups interfering with each other */
SendMessage(hToolbar, TB_CHECKBUTTON, 1007, 1); /* press B2 */
ok(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1005, 0), "A6 still pressed, no inter-group crosstalk\n");
ok(!SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 still not pressed\n");
ok(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1007, 0), "B2 pressed\n");
SendMessageA(hToolbar, TB_CHECKBUTTON, 1007, 1); /* press B2 */
ok(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1005, 0), "A6 still pressed, no inter-group crosstalk\n");
ok(!SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 still not pressed\n");
ok(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1007, 0), "B2 pressed\n");
SendMessage(hToolbar, TB_CHECKBUTTON, 1000, 1); /* press A1 and ensure B group didn't suffer */
ok(!SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1005, 0), "A6 not pressed anymore\n");
ok(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 pressed\n");
ok(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1007, 0), "B2 still pressed\n");
SendMessageA(hToolbar, TB_CHECKBUTTON, 1000, 1); /* press A1 and ensure B group didn't suffer */
ok(!SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1005, 0), "A6 not pressed anymore\n");
ok(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 pressed\n");
ok(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1007, 0), "B2 still pressed\n");
SendMessage(hToolbar, TB_CHECKBUTTON, 1008, 1); /* press B3, and ensure A group didn't suffer */
ok(!SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1005, 0), "A6 pressed\n");
ok(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 pressed\n");
ok(!SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1007, 0), "B2 not pressed\n");
ok(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 1008, 0), "B3 pressed\n");
SendMessageA(hToolbar, TB_CHECKBUTTON, 1008, 1); /* press B3, and ensure A group didn't suffer */
ok(!SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1005, 0), "A6 pressed\n");
ok(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1000, 0), "A1 pressed\n");
ok(!SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1007, 0), "B2 not pressed\n");
ok(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 1008, 0), "B3 pressed\n");
/* tests with invalid index */
compare(SendMessage(hToolbar, TB_ISBUTTONCHECKED, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessage(hToolbar, TB_ISBUTTONPRESSED, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessage(hToolbar, TB_ISBUTTONENABLED, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessage(hToolbar, TB_ISBUTTONINDETERMINATE, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessage(hToolbar, TB_ISBUTTONHIGHLIGHTED, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessage(hToolbar, TB_ISBUTTONHIDDEN, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessageA(hToolbar, TB_ISBUTTONCHECKED, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessageA(hToolbar, TB_ISBUTTONPRESSED, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessageA(hToolbar, TB_ISBUTTONENABLED, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessageA(hToolbar, TB_ISBUTTONINDETERMINATE, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessageA(hToolbar, TB_ISBUTTONHIGHLIGHTED, 0xdeadbeef, 0), -1L, "%ld");
compare(SendMessageA(hToolbar, TB_ISBUTTONHIDDEN, 0xdeadbeef, 0), -1L, "%ld");
DestroyWindow(hToolbar);
}
@ -243,12 +243,12 @@ static void rebuild_toolbar(HWND *hToolbar)
{
if (*hToolbar)
DestroyWindow(*hToolbar);
*hToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (HMENU)5, GetModuleHandle(NULL), NULL);
*hToolbar = CreateWindowExA(0, TOOLBARCLASSNAMEA, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (HMENU)5, GetModuleHandleA(NULL), NULL);
ok(*hToolbar != NULL, "Toolbar creation problem\n");
ok(SendMessage(*hToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0) == 0, "TB_BUTTONSTRUCTSIZE failed\n");
ok(SendMessage(*hToolbar, TB_AUTOSIZE, 0, 0) == 0, "TB_AUTOSIZE failed\n");
ok(SendMessage(*hToolbar, WM_SETFONT, (WPARAM)GetStockObject(SYSTEM_FONT), 0)==1, "WM_SETFONT\n");
ok(SendMessageA(*hToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0) == 0, "TB_BUTTONSTRUCTSIZE failed\n");
ok(SendMessageA(*hToolbar, TB_AUTOSIZE, 0, 0) == 0, "TB_AUTOSIZE failed\n");
ok(SendMessageA(*hToolbar, WM_SETFONT, (WPARAM)GetStockObject(SYSTEM_FONT), 0)==1, "WM_SETFONT\n");
}
static void rebuild_toolbar_with_buttons(HWND *hToolbar)
@ -277,14 +277,14 @@ static void rebuild_toolbar_with_buttons(HWND *hToolbar)
buttons[4].fsStyle = BTNS_BUTTON;
buttons[4].fsState = 0; /* disabled */
buttons[4].iString = -1;
ok(SendMessage(*hToolbar, TB_ADDBUTTONS, 5, (LPARAM)buttons) == 1, "TB_ADDBUTTONS failed\n");
ok(SendMessage(*hToolbar, TB_AUTOSIZE, 0, 0) == 0, "TB_AUTOSIZE failed\n");
ok(SendMessageA(*hToolbar, TB_ADDBUTTONSA, 5, (LPARAM)buttons) == 1, "TB_ADDBUTTONSA failed\n");
ok(SendMessageA(*hToolbar, TB_AUTOSIZE, 0, 0) == 0, "TB_AUTOSIZE failed\n");
}
static void add_128x15_bitmap(HWND hToolbar, int nCmds)
{
TBADDBITMAP bmp128;
bmp128.hInst = GetModuleHandle(NULL);
bmp128.hInst = GetModuleHandleA(NULL);
bmp128.nID = IDB_BITMAP_128x15;
ok(SendMessageA(hToolbar, TB_ADDBITMAP, nCmds, (LPARAM)&bmp128) == 0, "TB_ADDBITMAP - unexpected return\n");
}
@ -311,11 +311,11 @@ static void test_add_bitmap(void)
INT ret;
/* empty 128x15 bitmap */
bmp128.hInst = GetModuleHandle(NULL);
bmp128.hInst = GetModuleHandleA(NULL);
bmp128.nID = IDB_BITMAP_128x15;
/* empty 80x15 bitmap */
bmp80.hInst = GetModuleHandle(NULL);
bmp80.hInst = GetModuleHandleA(NULL);
bmp80.nID = IDB_BITMAP_80x15;
/* standard bitmap - 240x15 pixels */
@ -432,7 +432,8 @@ static void test_add_bitmap(void)
/* the control can add bitmaps to an existing image list */
rebuild_toolbar(&hToolbar);
himl = ImageList_LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP_80x15), 20, 2, CLR_NONE, IMAGE_BITMAP, LR_DEFAULTCOLOR);
himl = ImageList_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");
CHECK_IMAGELIST(4, 20, 15);
@ -489,12 +490,12 @@ static void test_add_bitmap(void)
INT _i; \
CHAR _buf[260]; \
for (_i = 0; _i < (count); _i++) {\
ret = SendMessageA(hToolbar, TB_GETSTRING, MAKEWPARAM(260, _i), (LPARAM)_buf); \
ok(ret >= 0, "TB_GETSTRING - unexpected return %d while checking string %d\n", ret, _i); \
ret = SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(260, _i), (LPARAM)_buf); \
ok(ret >= 0, "TB_GETSTRINGA - unexpected return %d while checking string %d\n", ret, _i); \
if (ret >= 0) \
ok(strcmp(_buf, (tab)[_i]) == 0, "Invalid string #%d - '%s' vs '%s'\n", _i, (tab)[_i], _buf); \
} \
ok(SendMessageA(hToolbar, TB_GETSTRING, MAKEWPARAM(260, (count)), (LPARAM)_buf) == -1, \
ok(SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(260, (count)), (LPARAM)_buf) == -1, \
"Too many strings in table\n"); \
}
@ -517,10 +518,10 @@ static void test_add_string(void)
rebuild_toolbar(&hToolbar);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)test1);
ok(ret == 0, "TB_ADDSTRINGA - unexpected return %d\n", ret);
ret = SendMessageA(hToolbar, TB_GETSTRING, MAKEWPARAM(260, 1), (LPARAM)buf);
ret = SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(260, 1), (LPARAM)buf);
if (ret == 0)
{
win_skip("TB_GETSTRING needs 5.80\n");
win_skip("TB_GETSTRINGA needs 5.80\n");
return;
}
CHECK_STRING_TABLE(2, ret1);
@ -536,22 +537,22 @@ static void test_add_string(void)
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, 0xdeadbeef, IDS_TBADD1);
ok(ret == -1, "TB_ADDSTRINGA - unexpected return %d\n", ret);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandle(NULL), IDS_TBADD1);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandleA(NULL), IDS_TBADD1);
ok(ret == 3, "TB_ADDSTRINGA - unexpected return %d\n", ret);
CHECK_STRING_TABLE(3, ret2);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandle(NULL), IDS_TBADD2);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandleA(NULL), IDS_TBADD2);
ok(ret == 3, "TB_ADDSTRINGA - unexpected return %d\n", ret);
CHECK_STRING_TABLE(5, ret3);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandle(NULL), IDS_TBADD3);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandleA(NULL), IDS_TBADD3);
ok(ret == 5, "TB_ADDSTRINGA - unexpected return %d\n", ret);
CHECK_STRING_TABLE(6, ret4);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandle(NULL), IDS_TBADD4);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandleA(NULL), IDS_TBADD4);
ok(ret == 6, "TB_ADDSTRINGA - unexpected return %d\n", ret);
CHECK_STRING_TABLE(8, ret5);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandle(NULL), IDS_TBADD5);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandleA(NULL), IDS_TBADD5);
ok(ret == 8, "TB_ADDSTRINGA - unexpected return %d\n", ret);
CHECK_STRING_TABLE(11, ret6);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandle(NULL), IDS_TBADD7);
ret = SendMessageA(hToolbar, TB_ADDSTRINGA, (WPARAM)GetModuleHandleA(NULL), IDS_TBADD7);
ok(ret == 11, "TB_ADDSTRINGA - unexpected return %d\n", ret);
CHECK_STRING_TABLE(14, ret7);
@ -579,7 +580,7 @@ static void expect_hot_notify(int idold, int idnew)
static void test_hotitem(void)
{
HWND hToolbar = NULL;
TBBUTTONINFO tbinfo;
TBBUTTONINFOA tbinfo;
LRESULT ret;
g_fBlockHotItemChange = FALSE;
@ -587,82 +588,82 @@ static void test_hotitem(void)
rebuild_toolbar_with_buttons(&hToolbar);
/* set TBSTYLE_FLAT. comctl5 allows hot items only for such toolbars.
* comctl6 doesn't have this requirement even when theme == NULL */
SetWindowLong(hToolbar, GWL_STYLE, TBSTYLE_FLAT | GetWindowLong(hToolbar, GWL_STYLE));
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
SetWindowLongA(hToolbar, GWL_STYLE, TBSTYLE_FLAT | GetWindowLongA(hToolbar, GWL_STYLE));
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == -1, "Hot item: %ld, expected -1\n", ret);
ret = SendMessage(hToolbar, TB_SETHOTITEM, 1, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, 1, 0);
ok(ret == -1, "TB_SETHOTITEM returned %ld, expected -1\n", ret);
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == 1, "Hot item: %ld, expected 1\n", ret);
ret = SendMessage(hToolbar, TB_SETHOTITEM, 2, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, 2, 0);
ok(ret == 1, "TB_SETHOTITEM returned %ld, expected 1\n", ret);
ret = SendMessage(hToolbar, TB_SETHOTITEM, 0xbeef, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, 0xbeef, 0);
ok(ret == 2, "TB_SETHOTITEM returned %ld, expected 2\n", ret);
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == 2, "Hot item: %lx, expected 2\n", ret);
ret = SendMessage(hToolbar, TB_SETHOTITEM, -0xbeef, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, -0xbeef, 0);
ok(ret == 2, "TB_SETHOTITEM returned %ld, expected 2\n", ret);
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == -1, "Hot item: %lx, expected -1\n", ret);
expect_hot_notify(0, 7);
ret = SendMessage(hToolbar, TB_SETHOTITEM, 3, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, 3, 0);
ok(ret == -1, "TB_SETHOTITEM returned %ld, expected -1\n", ret);
check_hot_notify();
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == 3, "Hot item: %lx, expected 3\n", ret);
g_fBlockHotItemChange = TRUE;
ret = SendMessage(hToolbar, TB_SETHOTITEM, 2, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, 2, 0);
ok(ret == 3, "TB_SETHOTITEM returned %ld, expected 2\n", ret);
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == 3, "Hot item: %lx, expected 3\n", ret);
g_fBlockHotItemChange = FALSE;
g_fReceivedHotItemChange = FALSE;
ret = SendMessage(hToolbar, TB_SETHOTITEM, 0xbeaf, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, 0xbeaf, 0);
ok(ret == 3, "TB_SETHOTITEM returned %ld, expected 3\n", ret);
ok(g_fReceivedHotItemChange == FALSE, "TBN_HOTITEMCHANGE received for invalid parameter\n");
g_fReceivedHotItemChange = FALSE;
ret = SendMessage(hToolbar, TB_SETHOTITEM, 3, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, 3, 0);
ok(ret == 3, "TB_SETHOTITEM returned %ld, expected 3\n", ret);
ok(g_fReceivedHotItemChange == FALSE, "TBN_HOTITEMCHANGE received after a duplication\n");
expect_hot_notify(7, 0);
ret = SendMessage(hToolbar, TB_SETHOTITEM, -0xbeaf, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, -0xbeaf, 0);
ok(ret == 3, "TB_SETHOTITEM returned %ld, expected 3\n", ret);
check_hot_notify();
SendMessage(hToolbar, TB_SETHOTITEM, 3, 0);
SendMessageA(hToolbar, TB_SETHOTITEM, 3, 0);
/* setting disabled buttons will generate a notify with the button id but no button will be hot */
expect_hot_notify(7, 9);
ret = SendMessage(hToolbar, TB_SETHOTITEM, 4, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, 4, 0);
ok(ret == 3, "TB_SETHOTITEM returned %ld, expected 3\n", ret);
check_hot_notify();
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == -1, "Hot item: %lx, expected -1\n", ret);
/* enabling the button won't change that */
SendMessage(hToolbar, TB_ENABLEBUTTON, 9, TRUE);
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
SendMessageA(hToolbar, TB_ENABLEBUTTON, 9, TRUE);
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == -1, "TB_SETHOTITEM returned %ld, expected -1\n", ret);
/* disabling a hot button works */
ret = SendMessage(hToolbar, TB_SETHOTITEM, 3, 0);
ret = SendMessageA(hToolbar, TB_SETHOTITEM, 3, 0);
ok(ret == -1, "TB_SETHOTITEM returned %ld, expected -1\n", ret);
g_fReceivedHotItemChange = FALSE;
SendMessage(hToolbar, TB_ENABLEBUTTON, 7, FALSE);
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
SendMessageA(hToolbar, TB_ENABLEBUTTON, 7, FALSE);
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == 3, "TB_SETHOTITEM returned %ld, expected 3\n", ret);
ok(g_fReceivedHotItemChange == FALSE, "Unexpected TBN_HOTITEMCHANGE\n");
SendMessage(hToolbar, TB_SETHOTITEM, 1, 0);
tbinfo.cbSize = sizeof(TBBUTTONINFO);
SendMessageA(hToolbar, TB_SETHOTITEM, 1, 0);
tbinfo.cbSize = sizeof(TBBUTTONINFOA);
tbinfo.dwMask = TBIF_STATE;
tbinfo.fsState = 0; /* disabled */
g_fReceivedHotItemChange = FALSE;
ok(SendMessage(hToolbar, TB_SETBUTTONINFO, 1, (LPARAM)&tbinfo) == TRUE, "TB_SETBUTTONINFO failed\n");
ret = SendMessage(hToolbar, TB_GETHOTITEM, 0, 0);
ok(SendMessageA(hToolbar, TB_SETBUTTONINFOA, 1, (LPARAM)&tbinfo) == TRUE, "TB_SETBUTTONINFOA failed\n");
ret = SendMessageA(hToolbar, TB_GETHOTITEM, 0, 0);
ok(ret == 1, "TB_SETHOTITEM returned %ld, expected 1\n", ret);
ok(g_fReceivedHotItemChange == FALSE, "Unexpected TBN_HOTITEMCHANGE\n");
@ -675,7 +676,7 @@ static void dump_sizes(HWND hToolbar)
{
SIZE sz;
RECT r;
int count = SendMessage(hToolbar, TB_BUTTONCOUNT, 0, 0);
int count = SendMessageA(hToolbar, TB_BUTTONCOUNT, 0, 0);
int i;
GetClientRect(hToolbar, &r);
@ -697,10 +698,10 @@ static void dump_sizes(HWND hToolbar)
static int system_font_height(void) {
HDC hDC;
TEXTMETRIC tm;
TEXTMETRICA tm;
hDC = CreateCompatibleDC(NULL);
GetTextMetrics(hDC, &tm);
GetTextMetricsA(hDC, &tm);
DeleteDC(NULL);
return tm.tmHeight;
@ -1026,7 +1027,7 @@ static DWORD tbsize_alt_numtests = 0;
tbsize_result_t *res = &tbsize_results[tbsize_numtests]; \
GetClientRect(hToolbar, &rc); \
/*check_rect("client", rc, res->rcClient);*/ \
buttonCount = SendMessage(hToolbar, TB_BUTTONCOUNT, 0, 0); \
buttonCount = SendMessageA(hToolbar, TB_BUTTONCOUNT, 0, 0); \
compare(buttonCount, res->nButtons, "%d"); \
for (i=0; i<min(buttonCount, res->nButtons); i++) { \
ok(SendMessageA(hToolbar, TB_GETITEMRECT, i, (LPARAM)&rc) == 1, "TB_GETITEMRECT\n"); \
@ -1067,7 +1068,7 @@ static void test_sizes(void)
{
HWND hToolbar = NULL;
HIMAGELIST himl, himl2;
TBBUTTONINFO tbinfo;
TBBUTTONINFOA tbinfo;
int style;
int i;
int fontheight = system_font_height();
@ -1075,45 +1076,45 @@ static void test_sizes(void)
init_tbsize_results();
rebuild_toolbar_with_buttons(&hToolbar);
style = GetWindowLong(hToolbar, GWL_STYLE);
style = GetWindowLongA(hToolbar, GWL_STYLE);
ok(style == (WS_CHILD|WS_VISIBLE|CCS_TOP), "Invalid style %x\n", style);
check_sizes();
/* the TBSTATE_WRAP makes a second row */
SendMessageA(hToolbar, TB_ADDBUTTONS, 2, (LPARAM)buttons1);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons1);
check_sizes();
SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0);
check_sizes();
/* after setting the TBSTYLE_WRAPABLE the TBSTATE_WRAP is ignored */
SetWindowLong(hToolbar, GWL_STYLE, style|TBSTYLE_WRAPABLE);
SetWindowLongA(hToolbar, GWL_STYLE, style|TBSTYLE_WRAPABLE);
check_sizes();
/* adding new buttons with TBSTYLE_WRAPABLE doesn't add a new row */
SendMessageA(hToolbar, TB_ADDBUTTONS, 2, (LPARAM)buttons1);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons1);
check_sizes();
/* only after adding enough buttons the bar will be wrapped on a
* separator and then on the first button */
for (i=0; i<15; i++)
SendMessageA(hToolbar, TB_ADDBUTTONS, 2, (LPARAM)buttons1);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons1);
check_sizes_todo(0x4);
rebuild_toolbar_with_buttons(&hToolbar);
SendMessageA(hToolbar, TB_ADDBUTTONS, 2, (LPARAM)buttons1);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons1);
/* setting the buttons vertical will only change the window client size */
SetWindowLong(hToolbar, GWL_STYLE, style | CCS_VERT);
SendMessage(hToolbar, TB_AUTOSIZE, 0, 0);
SetWindowLongA(hToolbar, GWL_STYLE, style | CCS_VERT);
SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0);
check_sizes_todo(0x3c);
/* with a TBSTYLE_WRAPABLE a wrapping will occur on the separator */
SetWindowLong(hToolbar, GWL_STYLE, style | TBSTYLE_WRAPABLE | CCS_VERT);
SendMessage(hToolbar, TB_AUTOSIZE, 0, 0);
SetWindowLongA(hToolbar, GWL_STYLE, style | TBSTYLE_WRAPABLE | CCS_VERT);
SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0);
check_sizes_todo(0x7c);
rebuild_toolbar_with_buttons(&hToolbar);
SendMessageA(hToolbar, TB_ADDBUTTONS, 2, (LPARAM)buttons1);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons1);
/* a TB_SETBITMAPSIZE changes button sizes*/
SendMessageA(hToolbar, TB_SETBITMAPSIZE, 0, MAKELONG(24, 24));
check_sizes();
/* setting a TBSTYLE_FLAT doesn't change anything - even after a TB_AUTOSIZE */
SetWindowLong(hToolbar, GWL_STYLE, style | TBSTYLE_FLAT);
SetWindowLongA(hToolbar, GWL_STYLE, style | TBSTYLE_FLAT);
SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0);
check_sizes();
/* but after a TB_SETBITMAPSIZE the top margins is changed */
@ -1121,13 +1122,13 @@ static void test_sizes(void)
SendMessageA(hToolbar, TB_SETBITMAPSIZE, 0, MAKELONG(24, 24));
check_sizes();
/* some vertical toolbar sizes */
SetWindowLong(hToolbar, GWL_STYLE, style | TBSTYLE_FLAT | TBSTYLE_WRAPABLE | CCS_VERT);
SetWindowLongA(hToolbar, GWL_STYLE, style | TBSTYLE_FLAT | TBSTYLE_WRAPABLE | CCS_VERT);
check_sizes_todo(0x7c);
rebuild_toolbar_with_buttons(&hToolbar);
SetWindowLong(hToolbar, GWL_STYLE, style | TBSTYLE_FLAT);
SetWindowLongA(hToolbar, GWL_STYLE, style | TBSTYLE_FLAT);
/* newly added buttons will be use the previous margin */
SendMessageA(hToolbar, TB_ADDBUTTONS, 2, (LPARAM)buttons2);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons2);
check_sizes();
/* TB_SETBUTTONSIZE can't be used to reduce the size of a button below the default */
check_button_size(hToolbar, 23, 22);
@ -1141,12 +1142,12 @@ static void test_sizes(void)
check_button_size(hToolbar, 23, 100);
check_sizes();
/* add some buttons with non-default sizes */
SendMessageA(hToolbar, TB_ADDBUTTONS, 2, (LPARAM)buttons2);
SendMessageA(hToolbar, TB_INSERTBUTTON, -1, (LPARAM)&buttons2[0]);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons2);
SendMessageA(hToolbar, TB_INSERTBUTTONA, -1, (LPARAM)&buttons2[0]);
check_sizes();
SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[0]);
/* TB_ADDSTRING resets the size */
SendMessageA(hToolbar, TB_ADDSTRING, 0, (LPARAM) STRING0 "\0" STRING1 "\0");
SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[0]);
/* TB_ADDSTRINGA resets the size */
SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM) STRING0 "\0" STRING1 "\0");
check_button_size(hToolbar, 23, 23 + fontheight);
check_sizes();
/* TB_SETBUTTONSIZE can be used to crop the text */
@ -1181,24 +1182,24 @@ static void test_sizes(void)
rebuild_toolbar(&hToolbar);
SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)STRING0 "\0" STRING1 "\0");
/* the height is increased after a TB_ADDSTRING */
/* the height is increased after a TB_ADDSTRINGA */
check_button_size(hToolbar, 23, 23 + fontheight);
SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELONG(100, 100));
/* if a string is in the pool, even adding a button without a string resets the size */
SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons2[0]);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons2[0]);
check_button_size(hToolbar, 23, 22);
SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELONG(100, 100));
/* an BTNS_AUTOSIZE button is also considered when computing the new size */
SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[2]);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[2]);
check_button_size(hToolbar, 7 + string_width(STRING1), 23 + fontheight);
SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[0]);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[0]);
check_sizes();
/* delete button doesn't change the buttons size */
SendMessageA(hToolbar, TB_DELETEBUTTON, 2, 0);
SendMessageA(hToolbar, TB_DELETEBUTTON, 1, 0);
check_button_size(hToolbar, 7 + string_width(STRING1), 23 + fontheight);
/* TB_INSERTBUTTONS will */
SendMessageA(hToolbar, TB_INSERTBUTTON, 1, (LPARAM)&buttons2[0]);
/* TB_INSERTBUTTONAS will */
SendMessageA(hToolbar, TB_INSERTBUTTONA, 1, (LPARAM)&buttons2[0]);
check_button_size(hToolbar, 23, 22);
/* TB_HIDEBUTTON and TB_MOVEBUTTON doesn't force a recalc */
@ -1215,13 +1216,15 @@ 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_LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP_80x15), 20, 2, CLR_NONE, IMAGE_BITMAP, LR_DEFAULTCOLOR);
himl = ImageList_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_LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP_128x15), 20, 2, CLR_NONE, IMAGE_BITMAP, LR_DEFAULTCOLOR);
himl2 = ImageList_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);
SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELONG(1, 1));
@ -1234,13 +1237,13 @@ static void test_sizes(void)
check_button_size(hToolbar, 27, 21)
/* the text is taken into account */
SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)STRING0 "\0" STRING1 "\0");
SendMessageA(hToolbar, TB_ADDBUTTONS, 4, (LPARAM)buttons3);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 4, (LPARAM)buttons3);
check_button_size(hToolbar, 7 + string_width(STRING1), 22 + fontheight);
ok(SendMessageA(hToolbar, TB_SETIMAGELIST, 0, 0) == (LRESULT)himl, "TB_SETIMAGELIST failed\n");
check_button_size(hToolbar, 7 + string_width(STRING1), 8 + fontheight);
/* the style change also comes into effect */
check_sizes();
SetWindowLong(hToolbar, GWL_STYLE, GetWindowLong(hToolbar, GWL_STYLE) | TBSTYLE_FLAT);
SetWindowLongA(hToolbar, GWL_STYLE, GetWindowLongA(hToolbar, GWL_STYLE) | TBSTYLE_FLAT);
ok(SendMessageA(hToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl) == 0, "TB_SETIMAGELIST failed\n");
check_sizes_todo(0x30); /* some small problems with BTNS_AUTOSIZE button sizes */
@ -1248,7 +1251,7 @@ static void test_sizes(void)
ImageList_Destroy(himl);
ImageList_Destroy(himl2);
SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[3]);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[3]);
check_button_size(hToolbar, 7 + string_width(STRING2), 23 + fontheight);
SendMessageA(hToolbar, TB_DELETEBUTTON, 0, 0);
check_button_size(hToolbar, 7 + string_width(STRING2), 23 + fontheight);
@ -1257,47 +1260,47 @@ static void test_sizes(void)
ok(SendMessageA(hToolbar, TB_SETBITMAPSIZE, 0, MAKELPARAM(32, 32)) == 1, "TB_SETBITMAPSIZE failed\n");
ok(SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(100, 100)) == 1, "TB_SETBUTTONSIZE failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons2[0]) == 1, "TB_ADDBUTTONS failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[2]) == 1, "TB_ADDBUTTONS failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[0]) == 1, "TB_ADDBUTTONS failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons2[0]) == 1, "TB_ADDBUTTONSA failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[2]) == 1, "TB_ADDBUTTONSA failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[0]) == 1, "TB_ADDBUTTONSA failed\n");
SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0 );
check_sizes();
rebuild_toolbar(&hToolbar);
SetWindowLong(hToolbar, GWL_STYLE, TBSTYLE_LIST | GetWindowLong(hToolbar, GWL_STYLE));
SetWindowLongA(hToolbar, GWL_STYLE, TBSTYLE_LIST | GetWindowLongA(hToolbar, GWL_STYLE));
ok(SendMessageA(hToolbar, TB_SETBITMAPSIZE, 0, MAKELPARAM(32, 32)) == 1, "TB_SETBITMAPSIZE failed\n");
ok(SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(100, 100)) == 1, "TB_SETBUTTONSIZE failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons2[0]) == 1, "TB_ADDBUTTONS failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[2]) == 1, "TB_ADDBUTTONS failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[3]) == 1, "TB_ADDBUTTONS failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons2[0]) == 1, "TB_ADDBUTTONSA failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[2]) == 1, "TB_ADDBUTTONSA failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[3]) == 1, "TB_ADDBUTTONSA failed\n");
SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0 );
check_sizes_todo(0xff);
rebuild_toolbar(&hToolbar);
SetWindowLong(hToolbar, GWL_STYLE, TBSTYLE_LIST | GetWindowLong(hToolbar, GWL_STYLE));
SetWindowLongA(hToolbar, GWL_STYLE, TBSTYLE_LIST | GetWindowLongA(hToolbar, GWL_STYLE));
ok(SendMessageA(hToolbar, TB_SETBITMAPSIZE, 0, MAKELPARAM(32, 32)) == 1, "TB_SETBITMAPSIZE failed\n");
ok(SendMessageA(hToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(100, 100)) == 1, "TB_SETBUTTONSIZE failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[3]) == 1, "TB_ADDBUTTONS failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[3]) == 1, "TB_ADDBUTTONSA failed\n");
SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0 );
check_sizes();
rebuild_toolbar(&hToolbar);
SetWindowLong(hToolbar, GWL_STYLE, TBSTYLE_WRAPABLE | GetWindowLong(hToolbar, GWL_STYLE));
ok(SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[3]) == 1, "TB_ADDBUTTONS failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[3]) == 1, "TB_ADDBUTTONS failed\n");
SetWindowLongA(hToolbar, GWL_STYLE, TBSTYLE_WRAPABLE | GetWindowLongA(hToolbar, GWL_STYLE));
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[3]) == 1, "TB_ADDBUTTONSA failed\n");
ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[3]) == 1, "TB_ADDBUTTONSA failed\n");
tbinfo.cx = 672;
tbinfo.cbSize = sizeof(TBBUTTONINFO);
tbinfo.cbSize = sizeof(TBBUTTONINFOA);
tbinfo.dwMask = TBIF_SIZE | TBIF_BYINDEX;
if (SendMessageA(hToolbar, TB_SETBUTTONINFO, 0, (LPARAM)&tbinfo))
if (SendMessageA(hToolbar, TB_SETBUTTONINFOA, 0, (LPARAM)&tbinfo))
{
ok(SendMessageA(hToolbar, TB_SETBUTTONINFO, 1, (LPARAM)&tbinfo) != 0, "TB_SETBUTTONINFO failed\n");
ok(SendMessageA(hToolbar, TB_SETBUTTONINFOA, 1, (LPARAM)&tbinfo) != 0, "TB_SETBUTTONINFOA failed\n");
SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0);
check_sizes();
}
else /* TBIF_BYINDEX probably not supported, confirm that this was the reason for the failure */
{
tbinfo.dwMask = TBIF_SIZE;
ok(SendMessageA(hToolbar, TB_SETBUTTONINFO, 33, (LPARAM)&tbinfo) != 0, "TB_SETBUTTONINFO failed\n");
ok(SendMessageA(hToolbar, TB_SETBUTTONINFOA, 33, (LPARAM)&tbinfo) != 0, "TB_SETBUTTONINFOA failed\n");
}
free_tbsize_results();
@ -1314,9 +1317,9 @@ static void prepare_recalc_test(HWND *phToolbar)
{
RECT rect;
rebuild_toolbar_with_buttons(phToolbar);
SetWindowLong(*phToolbar, GWL_STYLE,
GetWindowLong(*phToolbar, GWL_STYLE) | TBSTYLE_FLAT);
SendMessage(*phToolbar, TB_GETITEMRECT, 1, (LPARAM)&rect);
SetWindowLongA(*phToolbar, GWL_STYLE,
GetWindowLongA(*phToolbar, GWL_STYLE) | TBSTYLE_FLAT);
SendMessageA(*phToolbar, TB_GETITEMRECT, 1, (LPARAM)&rect);
ok(rect.top == 2, "Test will make no sense because initial top is %d instead of 2\n",
rect.top);
}
@ -1324,7 +1327,7 @@ static void prepare_recalc_test(HWND *phToolbar)
static BOOL did_recalc(HWND hToolbar)
{
RECT rect;
SendMessage(hToolbar, TB_GETITEMRECT, 1, (LPARAM)&rect);
SendMessageA(hToolbar, TB_GETITEMRECT, 1, (LPARAM)&rect);
ok(rect.top == 2 || rect.top == 0, "Unexpected top margin %d in recalc test\n",
rect.top);
return (rect.top == 0);
@ -1335,15 +1338,15 @@ static void restore_recalc_state(HWND hToolbar)
{
RECT rect;
/* return to style with a 2px top margin */
SetWindowLong(hToolbar, GWL_STYLE,
GetWindowLong(hToolbar, GWL_STYLE) & ~TBSTYLE_FLAT);
SetWindowLongA(hToolbar, GWL_STYLE,
GetWindowLongA(hToolbar, GWL_STYLE) & ~TBSTYLE_FLAT);
/* recalc */
SendMessage(hToolbar, TB_ADDBUTTONS, 1, (LPARAM)&buttons3[3]);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 1, (LPARAM)&buttons3[3]);
/* top margin will be 0px if a recalc occurs */
SetWindowLong(hToolbar, GWL_STYLE,
GetWindowLong(hToolbar, GWL_STYLE) | TBSTYLE_FLAT);
SetWindowLongA(hToolbar, GWL_STYLE,
GetWindowLongA(hToolbar, GWL_STYLE) | TBSTYLE_FLAT);
/* safety check */
SendMessage(hToolbar, TB_GETITEMRECT, 1, (LPARAM)&rect);
SendMessageA(hToolbar, TB_GETITEMRECT, 1, (LPARAM)&rect);
ok(rect.top == 2, "Test will make no sense because initial top is %d instead of 2\n",
rect.top);
}
@ -1351,30 +1354,30 @@ static void restore_recalc_state(HWND hToolbar)
static void test_recalc(void)
{
HWND hToolbar = NULL;
TBBUTTONINFO bi;
TBBUTTONINFOA bi;
CHAR test[] = "Test";
const int EX_STYLES_COUNT = 5;
int i;
BOOL recalc;
/* Like TB_ADDBUTTONS tested in test_sized, inserting a button without text
/* Like TB_ADDBUTTONSA tested in test_sized, inserting a button without text
* results in a relayout, while adding one with text forces a recalc */
prepare_recalc_test(&hToolbar);
SendMessage(hToolbar, TB_INSERTBUTTON, 1, (LPARAM)&buttons3[0]);
SendMessageA(hToolbar, TB_INSERTBUTTONA, 1, (LPARAM)&buttons3[0]);
recalc = did_recalc(hToolbar);
ok(!recalc, "Unexpected recalc - adding button without text\n");
prepare_recalc_test(&hToolbar);
SendMessage(hToolbar, TB_INSERTBUTTON, 1, (LPARAM)&buttons3[3]);
SendMessageA(hToolbar, TB_INSERTBUTTONA, 1, (LPARAM)&buttons3[3]);
recalc = did_recalc(hToolbar);
ok(recalc, "Expected a recalc - adding button with text\n");
/* TB_SETBUTTONINFO, even when adding a text, results only in a relayout */
/* TB_SETBUTTONINFOA, even when adding a text, results only in a relayout */
prepare_recalc_test(&hToolbar);
bi.cbSize = sizeof(bi);
bi.dwMask = TBIF_TEXT;
bi.pszText = test;
SendMessage(hToolbar, TB_SETBUTTONINFO, 1, (LPARAM)&bi);
SendMessageA(hToolbar, TB_SETBUTTONINFOA, 1, (LPARAM)&bi);
recalc = did_recalc(hToolbar);
ok(!recalc, "Unexpected recalc - setting a button text\n");
@ -1385,35 +1388,35 @@ static void test_recalc(void)
if (i == 1 || i == 3) /* an undoc style and TBSTYLE_EX_MIXEDBUTTONS */
continue;
prepare_recalc_test(&hToolbar);
expect(0, (int)SendMessage(hToolbar, TB_GETEXTENDEDSTYLE, 0, 0));
SendMessage(hToolbar, TB_SETEXTENDEDSTYLE, 0, (1 << i));
expect(0, (int)SendMessageA(hToolbar, TB_GETEXTENDEDSTYLE, 0, 0));
SendMessageA(hToolbar, TB_SETEXTENDEDSTYLE, 0, (1 << i));
recalc = did_recalc(hToolbar);
ok(!recalc, "Unexpected recalc - setting bit %d\n", i);
SendMessage(hToolbar, TB_SETEXTENDEDSTYLE, 0, 0);
SendMessageA(hToolbar, TB_SETEXTENDEDSTYLE, 0, 0);
recalc = did_recalc(hToolbar);
ok(!recalc, "Unexpected recalc - clearing bit %d\n", i);
expect(0, (int)SendMessage(hToolbar, TB_GETEXTENDEDSTYLE, 0, 0));
expect(0, (int)SendMessageA(hToolbar, TB_GETEXTENDEDSTYLE, 0, 0));
}
/* TBSTYLE_EX_MIXEDBUTTONS does a recalc on change */
prepare_recalc_test(&hToolbar);
SendMessage(hToolbar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
SendMessageA(hToolbar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
recalc = did_recalc(hToolbar);
if (recalc)
{
ok(recalc, "Expected a recalc - setting TBSTYLE_EX_MIXEDBUTTONS\n");
restore_recalc_state(hToolbar);
SendMessage(hToolbar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
SendMessageA(hToolbar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
recalc = did_recalc(hToolbar);
ok(!recalc, "Unexpected recalc - setting TBSTYLE_EX_MIXEDBUTTONS again\n");
restore_recalc_state(hToolbar);
SendMessage(hToolbar, TB_SETEXTENDEDSTYLE, 0, 0);
SendMessageA(hToolbar, TB_SETEXTENDEDSTYLE, 0, 0);
recalc = did_recalc(hToolbar);
ok(recalc, "Expected a recalc - clearing TBSTYLE_EX_MIXEDBUTTONS\n");
}
else win_skip( "No recalc on TBSTYLE_EX_MIXEDBUTTONS\n" );
/* undocumented exstyle 0x2 seems to changes the top margin, what
/* undocumented exstyle 0x2 seems to change the top margin, which
* interferes with these tests */
DestroyWindow(hToolbar);
@ -1427,13 +1430,13 @@ static void test_getbuttoninfo(void)
rebuild_toolbar_with_buttons(&hToolbar);
for (i = 0; i < 128; i++)
{
TBBUTTONINFO tbi;
TBBUTTONINFOA tbi;
int ret;
tbi.cbSize = i;
tbi.dwMask = TBIF_COMMAND;
ret = (int)SendMessage(hToolbar, TB_GETBUTTONINFO, 1, (LPARAM)&tbi);
if (i == sizeof(TBBUTTONINFO)) {
ret = (int)SendMessageA(hToolbar, TB_GETBUTTONINFOA, 1, (LPARAM)&tbi);
if (i == sizeof(TBBUTTONINFOA)) {
compare(ret, 0, "%d");
} else {
compare(ret, -1, "%d");
@ -1448,46 +1451,46 @@ static void test_createtoolbarex(void)
TBBUTTON btns[3];
ZeroMemory(&btns, sizeof(btns));
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandle(NULL), IDB_BITMAP_128x15, btns,
hToolbar = CreateToolbarEx(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)SendMessage(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x1a001b, "%x");
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x1a001b, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandle(NULL), IDB_BITMAP_128x15, btns,
hToolbar = CreateToolbarEx(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)SendMessage(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0xa000b, "%x");
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0xa000b, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandle(NULL), IDB_BITMAP_128x15, btns,
hToolbar = CreateToolbarEx(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)SendMessage(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x120013, "%x");
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x120013, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandle(NULL), IDB_BITMAP_128x15, btns,
hToolbar = CreateToolbarEx(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)SendMessage(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0xe0013, "%x");
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0xe0013, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandle(NULL), IDB_BITMAP_128x15, btns,
hToolbar = CreateToolbarEx(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)SendMessage(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0xe0017, "%x");
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0xe0017, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandle(NULL), IDB_BITMAP_128x15, btns,
hToolbar = CreateToolbarEx(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)SendMessage(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x160013, "%x");
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x160013, "%x");
DestroyWindow(hToolbar);
hToolbar = CreateToolbarEx(hMainWnd, WS_VISIBLE, 1, 16, GetModuleHandle(NULL), IDB_BITMAP_128x15, btns,
hToolbar = CreateToolbarEx(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)SendMessage(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x160017, "%x");
compare((int)SendMessageA(hToolbar, TB_GETBUTTONSIZE, 0, 0), 0x160017, "%x");
DestroyWindow(hToolbar);
}
@ -1502,7 +1505,7 @@ static void test_dispinfo(void)
rebuild_toolbar(&hToolbar);
SendMessageA(hToolbar, TB_LOADIMAGES, IDB_HIST_SMALL_COLOR, (LPARAM)HINST_COMMCTRL);
SendMessageA(hToolbar, TB_ADDBUTTONS, 2, (LPARAM)buttons_disp);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons_disp);
g_dwExpectedDispInfoMask = TBNF_IMAGE;
/* Some TBN_GETDISPINFO tests will be done in MyWnd_Notify function.
* We will receive TBN_GETDISPINFOW even if the control is ANSI */
@ -1591,29 +1594,29 @@ static void test_getstring(void)
static const WCHAR answerW[] = { 'S','T','R',0 };
INT r;
hToolbar = CreateWindowExA(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hMainWnd, (HMENU)5, GetModuleHandle(NULL), NULL);
hToolbar = CreateWindowExA(0, TOOLBARCLASSNAMEA, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hMainWnd, (HMENU)5, GetModuleHandleA(NULL), NULL);
ok(hToolbar != NULL, "Toolbar creation problem\n");
r = SendMessage(hToolbar, TB_GETSTRING, MAKEWPARAM(0, 0), 0);
r = SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(0, 0), 0);
if (r == 0)
{
win_skip("TB_GETSTRING and TB_GETSTRINGW need 5.80\n");
win_skip("TB_GETSTRINGA and TB_GETSTRINGW need 5.80\n");
DestroyWindow(hToolbar);
return;
}
expect(-1, r);
r = SendMessage(hToolbar, TB_GETSTRINGW, MAKEWPARAM(0, 0), 0);
r = SendMessageW(hToolbar, TB_GETSTRINGW, MAKEWPARAM(0, 0), 0);
expect(-1, r);
r = SendMessage(hToolbar, TB_ADDSTRING, 0, (LPARAM)answer);
r = SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)answer);
expect(0, r);
r = SendMessage(hToolbar, TB_GETSTRING, MAKEWPARAM(0, 0), 0);
r = SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(0, 0), 0);
expect(lstrlenA(answer), r);
r = SendMessage(hToolbar, TB_GETSTRINGW, MAKEWPARAM(0, 0), 0);
r = SendMessageW(hToolbar, TB_GETSTRINGW, MAKEWPARAM(0, 0), 0);
expect(lstrlenA(answer), r);
r = SendMessage(hToolbar, TB_GETSTRING, MAKEWPARAM(sizeof(str), 0), (LPARAM)str);
r = SendMessageA(hToolbar, TB_GETSTRINGA, MAKEWPARAM(sizeof(str), 0), (LPARAM)str);
expect(lstrlenA(answer), r);
expect(0, lstrcmp(answer, str));
r = SendMessage(hToolbar, TB_GETSTRINGW, MAKEWPARAM(sizeof(strW), 0), (LPARAM)strW);
expect(0, lstrcmpA(answer, str));
r = SendMessageW(hToolbar, TB_GETSTRINGW, MAKEWPARAM(sizeof(strW), 0), (LPARAM)strW);
expect(lstrlenA(answer), r);
expect(0, lstrcmpW(answerW, strW));
@ -1632,7 +1635,7 @@ static void test_tooltip(void)
rebuild_toolbar(&hToolbar);
SendMessageA(hToolbar, TB_ADDBUTTONS, 2, (LPARAM)buttons_disp);
SendMessageA(hToolbar, TB_ADDBUTTONSA, 2, (LPARAM)buttons_disp);
/* W used to get through toolbar code that assumes tooltip is always Unicode */
memset(&nmtti, 0, sizeof(nmtti));
@ -1653,8 +1656,8 @@ static void test_tooltip(void)
DestroyWindow(hToolbar);
/* TBSTYLE_TOOLTIPS */
hToolbar = CreateWindowExA(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (HMENU)5, GetModuleHandle(NULL), NULL);
hToolbar = CreateWindowExA(0, TOOLBARCLASSNAMEA, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (HMENU)5, GetModuleHandleA(NULL), NULL);
tooltip = (HWND)SendMessageA(hToolbar, TB_GETTOOLTIPS, 0, 0);
ok(tooltip == NULL, "got %p\n", tooltip);
DestroyWindow(hToolbar);
@ -1680,7 +1683,7 @@ static void test_get_set_style(void)
buttons, sizeof(buttons)/sizeof(buttons[0]),
0, 0, 20, 16, sizeof(TBBUTTON));
ok(hToolbar != NULL, "Toolbar creation\n");
SendMessage(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)"test\000");
SendMessageA(hToolbar, TB_ADDSTRINGA, 0, (LPARAM)"test\000");
style = SendMessageA(hToolbar, TB_GETSTYLE, 0, 0);
style2 = GetWindowLongA(hToolbar, GWL_STYLE);
@ -1809,8 +1812,8 @@ static void test_create(void)
SET_EXPECT(g_hook_WM_NCCREATE);
SET_EXPECT(g_hook_WM_CREATE);
hwnd = CreateWindowExA(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (HMENU)5, GetModuleHandle(NULL), NULL);
hwnd = CreateWindowExA(0, TOOLBARCLASSNAMEA, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
hMainWnd, (HMENU)5, GetModuleHandleA(NULL), NULL);
CHECK_CALLED(g_hook_create);
CHECK_CALLED(g_hook_WM_NCCREATE);
@ -1827,9 +1830,9 @@ static void test_create(void)
UnhookWindowsHook(WH_CBT, cbt_hook_proc);
/* TBSTYLE_TRANSPARENT */
hwnd = CreateWindowExA(0, TOOLBARCLASSNAME, NULL,
hwnd = CreateWindowExA(0, TOOLBARCLASSNAMEA, NULL,
WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|TBSTYLE_FLAT|TBSTYLE_TOOLTIPS|TBSTYLE_GROUP,
0, 0, 0, 0, hMainWnd, (HMENU)5, GetModuleHandle(NULL), NULL);
0, 0, 0, 0, hMainWnd, (HMENU)5, GetModuleHandleA(NULL), NULL);
style = GetWindowLongA(hwnd, GWL_STYLE);
ok((style & TBSTYLE_TRANSPARENT) == TBSTYLE_TRANSPARENT, "got 0x%08x\n", style);
@ -1907,6 +1910,16 @@ static void test_TB_GET_SET_EXTENDEDSTYLE(void)
ok(style == ptr->style_set, "%d: got style 0x%08x, expected 0x%08x\n", i, style, ptr->style_set);
}
/* Windows sets CCS_VERT when TB_GETEXTENDEDSTYLE is set */
oldstyle2 = SendMessageA(hwnd, TB_GETEXTENDEDSTYLE, 0, 0);
oldstyle = SendMessageA(hwnd, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_VERTICAL);
ok(oldstyle == oldstyle2, "got old style 0x%08x, expected 0x%08x\n", oldstyle, oldstyle2);
style = SendMessageA(hwnd, TB_GETEXTENDEDSTYLE, 0, 0);
ok(style == TBSTYLE_EX_VERTICAL, "got style 0x%08x, expected 0x%08x\n", style, TBSTYLE_EX_VERTICAL);
style = SendMessageA(hwnd, TB_GETSTYLE, 0, 0);
todo_wine
ok(style == CCS_VERT, "got style 0x%08x, expected 0x%08x\n", style, CCS_VERT);
DestroyWindow(hwnd);
}
@ -1925,7 +1938,7 @@ START_TEST(toolbar)
wc.cbWndExtra = 0;
wc.hInstance = GetModuleHandleA(NULL);
wc.hIcon = NULL;
wc.hCursor = LoadCursorA(NULL, IDC_IBEAM);
wc.hCursor = LoadCursorA(NULL, (LPCSTR)IDC_IBEAM);
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = "Toolbar test parent";

View file

@ -33,17 +33,17 @@ static void test_create_tooltip(void)
HWND parent, hwnd;
DWORD style, exp_style;
parent = CreateWindowEx(0, "static", NULL, WS_POPUP,
parent = CreateWindowExA(0, "static", NULL, WS_POPUP,
0, 0, 0, 0,
NULL, NULL, NULL, 0);
assert(parent);
ok(parent != NULL, "failed to create parent wnd\n");
hwnd = CreateWindowEx(0, TOOLTIPS_CLASS, NULL, 0x7fffffff | WS_POPUP,
hwnd = CreateWindowExA(0, TOOLTIPS_CLASSA, NULL, 0x7fffffff | WS_POPUP,
10, 10, 300, 100,
parent, NULL, NULL, 0);
assert(hwnd);
ok(hwnd != NULL, "failed to create tooltip wnd\n");
style = GetWindowLong(hwnd, GWL_STYLE);
style = GetWindowLongA(hwnd, GWL_STYLE);
trace("style = %08x\n", style);
exp_style = 0x7fffffff | WS_POPUP;
exp_style &= ~(WS_CHILD | WS_MAXIMIZE | WS_BORDER | WS_DLGFRAME);
@ -52,12 +52,12 @@ static void test_create_tooltip(void)
DestroyWindow(hwnd);
hwnd = CreateWindowEx(0, TOOLTIPS_CLASS, NULL, 0,
hwnd = CreateWindowExA(0, TOOLTIPS_CLASSA, NULL, 0,
10, 10, 300, 100,
parent, NULL, NULL, 0);
assert(hwnd);
ok(hwnd != NULL, "failed to create tooltip wnd\n");
style = GetWindowLong(hwnd, GWL_STYLE);
style = GetWindowLongA(hwnd, GWL_STYLE);
trace("style = %08x\n", style);
ok(style == (WS_POPUP | WS_CLIPSIBLINGS | WS_BORDER),
"wrong style %08x\n", style);
@ -77,7 +77,7 @@ static void flush_events(int waitTime)
while (diff > 0)
{
if (MsgWaitForMultipleObjects( 0, NULL, FALSE, min(100,diff), QS_ALLEVENTS) == WAIT_TIMEOUT) break;
while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
while (PeekMessageA( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
diff = time - GetTickCount();
}
}
@ -96,7 +96,7 @@ static HWND g_hwnd;
#define TEST_CDDS_ITEMPOSTERASE 0x00000080
#define TEST_CDDS_SUBITEM 0x00000100
static LRESULT CALLBACK CustomDrawWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static LRESULT CALLBACK custom_draw_wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg) {
@ -161,12 +161,12 @@ static void test_customdraw(void) {
wc.cbWndExtra = 0;
wc.hInstance = GetModuleHandleA(NULL);
wc.hIcon = NULL;
wc.hCursor = LoadCursorA(NULL, IDC_ARROW);
wc.hCursor = LoadCursorA(NULL, (LPCSTR)IDC_ARROW);
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = "CustomDrawClass";
wc.lpfnWndProc = CustomDrawWndProc;
RegisterClass(&wc);
wc.lpfnWndProc = custom_draw_wnd_proc;
RegisterClassA(&wc);
for (iterationNumber = 0;
iterationNumber < sizeof(expectedResults)/sizeof(expectedResults[0]);
@ -174,10 +174,10 @@ static void test_customdraw(void) {
HWND parent, hwndTip;
RECT rect;
TOOLINFO toolInfo = { 0 };
TTTOOLINFOA toolInfo = { 0 };
/* Create a main window */
parent = CreateWindowEx(0, "CustomDrawClass", NULL,
parent = CreateWindowExA(0, "CustomDrawClass", NULL,
WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX |
WS_MAXIMIZEBOX | WS_VISIBLE,
50, 50,
@ -190,7 +190,7 @@ static void test_customdraw(void) {
flush_events(100);
/* Create Tooltip */
hwndTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS,
hwndTip = CreateWindowExA(WS_EX_TOPMOST, TOOLTIPS_CLASSA,
NULL, TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
@ -207,7 +207,7 @@ static void test_customdraw(void) {
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
/* Create a tool */
toolInfo.cbSize = TTTOOLINFO_V1_SIZE;
toolInfo.cbSize = TTTOOLINFOA_V1_SIZE;
toolInfo.hwnd = parent;
toolInfo.hinst = GetModuleHandleA(NULL);
toolInfo.uFlags = TTF_SUBCLASS;
@ -215,11 +215,11 @@ static void test_customdraw(void) {
toolInfo.lpszText = (LPSTR)"This is a test tooltip";
toolInfo.lParam = 0xdeadbeef;
GetClientRect (parent, &toolInfo.rect);
lResult = SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo);
lResult = SendMessageA(hwndTip, TTM_ADDTOOLA, 0, (LPARAM)&toolInfo);
ok(lResult, "Adding the tool to the tooltip failed\n");
/* Make tooltip appear quickly */
SendMessage(hwndTip, TTM_SETDELAYTIME, TTDT_INITIAL, MAKELPARAM(1,0));
SendMessageA(hwndTip, TTM_SETDELAYTIME, TTDT_INITIAL, MAKELPARAM(1,0));
/* Put cursor inside window, tooltip will appear immediately */
GetWindowRect( parent, &rect );
@ -252,7 +252,7 @@ static LRESULT WINAPI parent_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LP
NMTTDISPINFOA *ttnmdi = (NMTTDISPINFOA*)lParam;
if (ttnmdi->hdr.code == TTN_GETDISPINFOA)
lstrcpy(ttnmdi->lpszText, testcallbackA);
lstrcpyA(ttnmdi->lpszText, testcallbackA);
}
return DefWindowProcA(hwnd, message, wParam, lParam);
@ -268,7 +268,7 @@ static BOOL register_parent_wnd_class(void)
cls.cbWndExtra = 0;
cls.hInstance = GetModuleHandleA(NULL);
cls.hIcon = 0;
cls.hCursor = LoadCursorA(0, IDC_ARROW);
cls.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
cls.hbrBackground = GetStockObject(WHITE_BRUSH);
cls.lpszMenuName = NULL;
cls.lpszClassName = "Tooltips test parent class";
@ -280,7 +280,7 @@ static HWND create_parent_window(void)
if (!register_parent_wnd_class())
return NULL;
return CreateWindowEx(0, "Tooltips test parent class",
return CreateWindowExA(0, "Tooltips test parent class",
"Tooltips test parent window",
WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX |
WS_MAXIMIZEBOX | WS_VISIBLE,
@ -305,7 +305,7 @@ static void test_gettext(void)
hwnd = CreateWindowExA(0, TOOLTIPS_CLASSA, NULL, 0,
10, 10, 300, 100,
NULL, NULL, NULL, 0);
assert(hwnd);
ok(hwnd != NULL, "failed to create tooltip wnd\n");
/* use sizeof(TTTOOLINFOA) instead of TTTOOLINFOA_V1_SIZE so that adding it fails on Win9x */
/* otherwise it crashes on the NULL lpszText */
@ -317,7 +317,7 @@ static void test_gettext(void)
toolinfoA.lpszText = NULL;
toolinfoA.lParam = 0xdeadbeef;
GetClientRect(hwnd, &toolinfoA.rect);
r = SendMessageA(hwnd, TTM_ADDTOOL, 0, (LPARAM)&toolinfoA);
r = SendMessageA(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&toolinfoA);
if (r)
{
toolinfoA.hwnd = NULL;
@ -348,13 +348,13 @@ static void test_gettext(void)
toolinfoA.lpszText = bufA;
toolinfoA.lParam = 0xdeadbeef;
GetClientRect(hwnd, &toolinfoA.rect);
r = SendMessageA(hwnd, TTM_ADDTOOL, 0, (LPARAM)&toolinfoA);
r = SendMessageA(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&toolinfoA);
ok(r, "Adding the tool to the tooltip failed\n");
if (r)
{
DWORD length;
length = SendMessage(hwnd, WM_GETTEXTLENGTH, 0, 0);
length = SendMessageA(hwnd, WM_GETTEXTLENGTH, 0, 0);
ok(length == 0, "Expected 0, got %d\n", length);
toolinfoA.hwnd = NULL;
@ -369,7 +369,7 @@ static void test_gettext(void)
ok(strcmp(toolinfoA.lpszText, testtipA) == 0,
"expected %s, got %p\n", testtipA, toolinfoA.lpszText);
length = SendMessage(hwnd, WM_GETTEXTLENGTH, 0, 0);
length = SendMessageA(hwnd, WM_GETTEXTLENGTH, 0, 0);
ok(length == 0, "Expected 0, got %d\n", length);
}
@ -382,7 +382,7 @@ static void test_gettext(void)
toolinfoA.lpszText = LPSTR_TEXTCALLBACKA;
toolinfoA.lParam = 0xdeadbeef;
GetClientRect(hwnd, &toolinfoA.rect);
r = SendMessageA(hwnd, TTM_ADDTOOL, 0, (LPARAM)&toolinfoA);
r = SendMessageA(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&toolinfoA);
ok(r, "Adding the tool to the tooltip failed\n");
if (r)
{
@ -411,8 +411,7 @@ static void test_gettext(void)
win_skip("CreateWindowExW is not implemented\n");
return;
}
assert(hwnd);
ok(hwnd != NULL, "failed to create tooltip wnd\n");
toolinfoW.cbSize = sizeof(TTTOOLINFOW);
toolinfoW.hwnd = NULL;
@ -422,8 +421,8 @@ static void test_gettext(void)
toolinfoW.lpszText = NULL;
toolinfoW.lParam = 0xdeadbeef;
GetClientRect(hwnd, &toolinfoW.rect);
r = SendMessageW(hwnd, TTM_ADDTOOL, 0, (LPARAM)&toolinfoW);
ok(r, "Adding the tool to the tooltip failed\n");
r = SendMessageW(hwnd, TTM_ADDTOOLW, 0, (LPARAM)&toolinfoW);
ok(!r, "Adding the tool to the tooltip succeeded!\n");
if (0) /* crashes on NT4 */
{
@ -505,16 +504,16 @@ static void test_ttm_gettoolinfo(void)
ti.lpszText = NULL;
ti.lParam = 0xdeadbeef;
GetClientRect(hwnd, &ti.rect);
r = SendMessage(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&ti);
r = SendMessageA(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&ti);
ok(r, "Adding the tool to the tooltip failed\n");
r = SendMessage(hwnd, TTM_GETTOOLCOUNT, 0, 0);
r = SendMessageA(hwnd, TTM_GETTOOLCOUNT, 0, 0);
expect(1, r);
ti.cbSize = TTTOOLINFOA_V1_SIZE - 1;
ti.hwnd = NULL;
ti.uId = 0x1234ABCD;
SendMessage(hwnd, TTM_DELTOOLA, 0, (LPARAM)&ti);
r = SendMessage(hwnd, TTM_GETTOOLCOUNT, 0, 0);
SendMessageA(hwnd, TTM_DELTOOLA, 0, (LPARAM)&ti);
r = SendMessageA(hwnd, TTM_GETTOOLCOUNT, 0, 0);
expect(0, r);
ti.cbSize = TTTOOLINFOA_V2_SIZE - 1;
@ -525,16 +524,16 @@ static void test_ttm_gettoolinfo(void)
ti.lpszText = NULL;
ti.lParam = 0xdeadbeef;
GetClientRect(hwnd, &ti.rect);
r = SendMessage(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&ti);
r = SendMessageA(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&ti);
ok(r, "Adding the tool to the tooltip failed\n");
r = SendMessage(hwnd, TTM_GETTOOLCOUNT, 0, 0);
r = SendMessageA(hwnd, TTM_GETTOOLCOUNT, 0, 0);
expect(1, r);
ti.cbSize = TTTOOLINFOA_V2_SIZE - 1;
ti.hwnd = NULL;
ti.uId = 0x1234ABCD;
SendMessage(hwnd, TTM_DELTOOLA, 0, (LPARAM)&ti);
r = SendMessage(hwnd, TTM_GETTOOLCOUNT, 0, 0);
SendMessageA(hwnd, TTM_DELTOOLA, 0, (LPARAM)&ti);
r = SendMessageA(hwnd, TTM_GETTOOLCOUNT, 0, 0);
expect(0, r);
ti.cbSize = TTTOOLINFOA_V2_SIZE + 1;
@ -545,16 +544,16 @@ static void test_ttm_gettoolinfo(void)
ti.lpszText = NULL;
ti.lParam = 0xdeadbeef;
GetClientRect(hwnd, &ti.rect);
r = SendMessage(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&ti);
r = SendMessageA(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&ti);
ok(r, "Adding the tool to the tooltip failed\n");
r = SendMessage(hwnd, TTM_GETTOOLCOUNT, 0, 0);
r = SendMessageA(hwnd, TTM_GETTOOLCOUNT, 0, 0);
expect(1, r);
ti.cbSize = TTTOOLINFOA_V2_SIZE + 1;
ti.hwnd = NULL;
ti.uId = 0x1234ABCD;
SendMessage(hwnd, TTM_DELTOOLA, 0, (LPARAM)&ti);
r = SendMessage(hwnd, TTM_GETTOOLCOUNT, 0, 0);
SendMessageA(hwnd, TTM_DELTOOLA, 0, (LPARAM)&ti);
r = SendMessageA(hwnd, TTM_GETTOOLCOUNT, 0, 0);
expect(0, r);
DestroyWindow(hwnd);
@ -761,6 +760,62 @@ static void test_longtextW(void)
DestroyWindow(hwnd);
}
static BOOL almost_eq(int a, int b)
{
return a-5<b && a+5>b;
}
static void test_track(void)
{
WCHAR textW[] = {'t','e','x','t',0};
TTTOOLINFOW info = { 0 };
HWND parent, tt;
LRESULT res;
RECT pos;
parent = CreateWindowExW(0, WC_STATICW, NULL, WS_CAPTION | WS_VISIBLE,
50, 50, 300, 300, NULL, NULL, NULL, 0);
ok(parent != NULL, "creation of parent window failed\n");
ShowWindow(parent, SW_SHOWNORMAL);
flush_events(100);
tt = CreateWindowExW(WS_EX_TOPMOST, TOOLTIPS_CLASSW, NULL, TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
parent, NULL, GetModuleHandleW(NULL), 0);
ok(tt != NULL, "creation of tooltip window failed\n");
info.cbSize = TTTOOLINFOW_V1_SIZE;
info.uFlags = TTF_IDISHWND | TTF_TRACK | TTF_ABSOLUTE;
info.hwnd = parent;
info.hinst = GetModuleHandleW(NULL);
info.lpszText = textW;
info.uId = (UINT_PTR)parent;
GetClientRect(parent, &info.rect);
res = SendMessageW(tt, TTM_ADDTOOLW, 0, (LPARAM)&info);
ok(res, "adding the tool to the tooltip failed\n");
SendMessageW(tt, TTM_SETDELAYTIME, TTDT_INITIAL, MAKELPARAM(1,0));
SendMessageW(tt, TTM_TRACKACTIVATE, (WPARAM)TRUE, (LPARAM)&info);
SendMessageW(tt, TTM_TRACKPOSITION, 0, MAKELPARAM(10, 10));
GetWindowRect(tt, &pos);
ok(almost_eq(pos.left, 10), "pos.left = %d\n", pos.left);
ok(almost_eq(pos.top, 10), "pos.top = %d\n", pos.top);
info.uFlags = TTF_IDISHWND | TTF_ABSOLUTE;
SendMessageW(tt, TTM_SETTOOLINFOW, 0, (LPARAM)&info);
SendMessageW(tt, TTM_TRACKPOSITION, 0, MAKELPARAM(10, 10));
GetWindowRect(tt, &pos);
ok(!almost_eq(pos.left, 10), "pos.left = %d\n", pos.left);
ok(!almost_eq(pos.top, 10), "pos.top = %d\n", pos.top);
DestroyWindow(tt);
DestroyWindow(parent);
}
START_TEST(tooltips)
{
InitCommonControls();
@ -771,4 +826,5 @@ START_TEST(tooltips)
test_ttm_gettoolinfo();
test_longtextA();
test_longtextW();
test_track();
}

View file

@ -414,7 +414,7 @@ static BOOL register_parent_wnd_class(void){
cls.cbWndExtra = 0;
cls.hInstance = GetModuleHandleA(NULL);
cls.hIcon = 0;
cls.hCursor = LoadCursorA(0, IDC_ARROW);
cls.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
cls.hbrBackground = GetStockObject(WHITE_BRUSH);
cls.lpszMenuName = NULL;
cls.lpszClassName = "Trackbar test parent class";
@ -425,12 +425,9 @@ static HWND create_parent_window(void){
if (!register_parent_wnd_class())
return NULL;
return CreateWindowEx(0, "Trackbar test parent class",
"Trackbar test parent window",
WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX |
WS_MAXIMIZEBOX | WS_VISIBLE,
0, 0, 100, 100,
GetDesktopWindow(), NULL, GetModuleHandleA(NULL), NULL);
return CreateWindowA("Trackbar test parent class", "Trackbar test parent window",
WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE,
0, 0, 100, 100, GetDesktopWindow(), NULL, GetModuleHandleA(NULL), NULL);
}
static LRESULT WINAPI trackbar_subclass_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
@ -462,10 +459,9 @@ static HWND create_trackbar(DWORD style, HWND parent){
RECT rect;
GetClientRect(parent, &rect);
hWndTrack = CreateWindowEx(
0, TRACKBAR_CLASS,"Trackbar Control", style,
rect.right,rect.bottom, 100, 50,
parent, NULL,GetModuleHandleA(NULL) ,NULL);
hWndTrack = CreateWindowA(TRACKBAR_CLASSA, "Trackbar Control", style,
rect.right, rect.bottom, 100, 50,
parent, NULL, GetModuleHandleA(NULL), NULL);
if (!hWndTrack) return NULL;
@ -485,42 +481,40 @@ static void test_trackbar_buddy(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
hWndLeftBuddy = CreateWindowEx(0, STATUSCLASSNAME, NULL, 0,
0,0,300,20, NULL, NULL, NULL, NULL);
hWndLeftBuddy = CreateWindowA(STATUSCLASSNAMEA, NULL, 0, 0, 0, 300, 20, NULL, NULL, NULL, NULL);
ok(hWndLeftBuddy != NULL, "Expected non NULL value\n");
if (hWndLeftBuddy != NULL){
hWndCurrentBuddy = (HWND) SendMessage(hWndTrackbar, TBM_GETBUDDY, TRUE, 0);
rTest = (HWND) SendMessage(hWndTrackbar, TBM_SETBUDDY, FALSE, (LPARAM) hWndLeftBuddy);
hWndCurrentBuddy = (HWND) SendMessageA(hWndTrackbar, TBM_GETBUDDY, TRUE, 0);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_SETBUDDY, FALSE, (LPARAM) hWndLeftBuddy);
ok(rTest == hWndCurrentBuddy, "Expected hWndCurrentBuddy\n");
rTest = (HWND) SendMessage(hWndTrackbar, TBM_SETBUDDY, FALSE, (LPARAM) hWndLeftBuddy);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_SETBUDDY, FALSE, (LPARAM) hWndLeftBuddy);
ok(rTest == hWndLeftBuddy, "Expected hWndLeftBuddy\n");
} else
skip ("left buddy control not present?\n");
hWndRightBuddy = CreateWindowEx(0, STATUSCLASSNAME, NULL, 0,
0,0,300,20,NULL,NULL, NULL, NULL);
hWndRightBuddy = CreateWindowA(STATUSCLASSNAMEA, NULL, 0, 0, 0, 300, 20, NULL, NULL, NULL, NULL);
ok(hWndRightBuddy != NULL, "expected non NULL value\n");
/* test TBM_SETBUDDY */
if (hWndRightBuddy != NULL){
hWndCurrentBuddy = (HWND) SendMessage(hWndTrackbar, TBM_GETBUDDY, TRUE, 0);
rTest = (HWND) SendMessage(hWndTrackbar, TBM_SETBUDDY, TRUE, (LPARAM) hWndRightBuddy);
hWndCurrentBuddy = (HWND) SendMessageA(hWndTrackbar, TBM_GETBUDDY, TRUE, 0);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_SETBUDDY, TRUE, (LPARAM) hWndRightBuddy);
ok(rTest == hWndCurrentBuddy, "Expected hWndCurrentBuddy\n");
rTest = (HWND) SendMessage(hWndTrackbar, TBM_SETBUDDY, TRUE, (LPARAM) hWndRightBuddy);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_SETBUDDY, TRUE, (LPARAM) hWndRightBuddy);
ok(rTest == hWndRightBuddy, "Expected hWndRightbuddy\n");
} else
skip("Right buddy control not present?\n");
/* test TBM_GETBUDDY */
if (hWndLeftBuddy != NULL){
rTest = (HWND) SendMessage(hWndTrackbar, TBM_GETBUDDY, FALSE, 0);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_GETBUDDY, FALSE, 0);
ok(rTest == hWndLeftBuddy, "Expected hWndLeftBuddy\n");
DestroyWindow(hWndLeftBuddy);
}
if (hWndRightBuddy != NULL){
rTest = (HWND) SendMessage(hWndTrackbar, TBM_GETBUDDY, TRUE,0);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_GETBUDDY, TRUE,0);
ok(rTest == hWndRightBuddy, "Expected hWndRightBuddy\n");
DestroyWindow(hWndRightBuddy);
}
@ -536,13 +530,13 @@ static void test_line_size(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* test TBM_SETLINESIZE */
r = SendMessage(hWndTrackbar, TBM_SETLINESIZE, 0, 10);
r = SendMessageA(hWndTrackbar, TBM_SETLINESIZE, 0, 10);
expect(1,r);
r = SendMessage(hWndTrackbar, TBM_SETLINESIZE, 0, 4);
r = SendMessageA(hWndTrackbar, TBM_SETLINESIZE, 0, 4);
expect(10, r);
/* test TBM_GETLINESIZE */
r = SendMessage(hWndTrackbar, TBM_GETLINESIZE, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETLINESIZE, 0,0);
expect(4, r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, line_size_test_seq, "linesize test sequence", FALSE);
@ -556,32 +550,32 @@ static void test_page_size(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* test TBM_SETPAGESIZE */
r = SendMessage(hWndTrackbar, TBM_SETPAGESIZE, 0, 10);
r = SendMessageA(hWndTrackbar, TBM_SETPAGESIZE, 0, 10);
expect(20, r);
r = SendMessage(hWndTrackbar, TBM_SETPAGESIZE, 0, -1);
r = SendMessageA(hWndTrackbar, TBM_SETPAGESIZE, 0, -1);
expect(10, r);
/* test TBM_GETPAGESIZE */
r = SendMessage(hWndTrackbar, TBM_GETPAGESIZE, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETPAGESIZE, 0,0);
expect(20, r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, page_size_test_seq, "page size test sequence", FALSE);
ok_sequence(sequences, PARENT_SEQ_INDEX, empty_seq, "parent page size test sequence", FALSE);
/* check for zero page size */
r = SendMessage(hWndTrackbar, TBM_SETPAGESIZE, 0, 0);
r = SendMessageA(hWndTrackbar, TBM_SETPAGESIZE, 0, 0);
expect(20, r);
r = SendMessage(hWndTrackbar, TBM_GETPAGESIZE, 0, 0);
r = SendMessageA(hWndTrackbar, TBM_GETPAGESIZE, 0, 0);
expect(0, r);
/* revert to default */
r = SendMessage(hWndTrackbar, TBM_SETPAGESIZE, 0, -1);
r = SendMessageA(hWndTrackbar, TBM_SETPAGESIZE, 0, -1);
expect(0, r);
r = SendMessage(hWndTrackbar, TBM_GETPAGESIZE, 0, 0);
r = SendMessageA(hWndTrackbar, TBM_GETPAGESIZE, 0, 0);
expect(20, r);
/* < -1 */
r = SendMessage(hWndTrackbar, TBM_SETPAGESIZE, 0, -2);
r = SendMessageA(hWndTrackbar, TBM_SETPAGESIZE, 0, -2);
expect(20, r);
r = SendMessage(hWndTrackbar, TBM_GETPAGESIZE, 0, 0);
r = SendMessageA(hWndTrackbar, TBM_GETPAGESIZE, 0, 0);
expect(-2, r);
}
@ -590,23 +584,23 @@ static void test_position(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* test TBM_SETPOS */
SendMessage(hWndTrackbar, TBM_SETPOS, TRUE, -1);
r = SendMessage(hWndTrackbar, TBM_GETPOS, 0, 0);
SendMessageA(hWndTrackbar, TBM_SETPOS, TRUE, -1);
r = SendMessageA(hWndTrackbar, TBM_GETPOS, 0, 0);
expect(0, r);
SendMessage(hWndTrackbar, TBM_SETPOS, TRUE, 5);
r = SendMessage(hWndTrackbar, TBM_GETPOS, 0,0);
SendMessageA(hWndTrackbar, TBM_SETPOS, TRUE, 5);
r = SendMessageA(hWndTrackbar, TBM_GETPOS, 0,0);
expect(5, r);
SendMessage(hWndTrackbar, TBM_SETPOS, TRUE, 5);
SendMessage(hWndTrackbar, TBM_SETPOS, TRUE, 1000);
r = SendMessage(hWndTrackbar, TBM_GETPOS, 0,0);
SendMessageA(hWndTrackbar, TBM_SETPOS, TRUE, 5);
SendMessageA(hWndTrackbar, TBM_SETPOS, TRUE, 1000);
r = SendMessageA(hWndTrackbar, TBM_GETPOS, 0,0);
expect(100, r);
SendMessage(hWndTrackbar, TBM_SETPOS, FALSE, 20);
r = SendMessage(hWndTrackbar, TBM_GETPOS, 0,0);
SendMessageA(hWndTrackbar, TBM_SETPOS, FALSE, 20);
r = SendMessageA(hWndTrackbar, TBM_GETPOS, 0,0);
expect(20, r);
SendMessage(hWndTrackbar, TBM_SETPOS, TRUE, 20);
SendMessageA(hWndTrackbar, TBM_SETPOS, TRUE, 20);
/* test TBM_GETPOS */
r = SendMessage(hWndTrackbar, TBM_GETPOS, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETPOS, 0,0);
expect(20, r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, position_test_seq, "position test sequence", TRUE);
@ -618,58 +612,58 @@ static void test_range(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* test TBM_SETRANGE */
SendMessage(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(0, 10));
r = SendMessage(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(0, 10));
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
expect(10, r);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
expect(0, r);
SendMessage(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(-1, 1000));
r = SendMessage(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(-1, 1000));
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
expect(1000, r);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
expect(-1, r);
SendMessage(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(10, 0));
r = SendMessage(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(10, 0));
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
expect(0, r);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
expect(10, r);
SendMessage(hWndTrackbar, TBM_SETRANGE, FALSE, MAKELONG(0,10));
r = SendMessage(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGE, FALSE, MAKELONG(0,10));
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
expect(10, r);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
expect(0, r);
/*test TBM_SETRANGEMAX */
SendMessage(hWndTrackbar, TBM_SETRANGEMAX, TRUE, 10);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMAX, TRUE, 10);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
expect(10, r);
SendMessage(hWndTrackbar, TBM_SETRANGEMAX, TRUE, -1);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMAX, TRUE, -1);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
expect(-1, r);
SendMessage(hWndTrackbar, TBM_SETRANGEMAX, FALSE, 10);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMAX, FALSE, 10);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
expect(10, r);
/* testing TBM_SETRANGEMIN */
SendMessage(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 0);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 0);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
expect(0, r);
SendMessage(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 10);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 10);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
expect(10, r);
SendMessage(hWndTrackbar, TBM_SETRANGEMIN, TRUE, -10);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMIN, TRUE, -10);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
expect(-10, r);
SendMessage(hWndTrackbar, TBM_SETRANGEMIN, FALSE, 5);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMIN, FALSE, 5);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
expect(5, r);
/* test TBM_GETRANGEMAX */
r = SendMessage(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMAX, 0,0);
expect(10, r);
/* test TBM_GETRANGEMIN */
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0,0);
expect(5, r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, range_test_seq, "range test sequence", TRUE);
@ -681,60 +675,60 @@ static void test_selection(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* test TBM_SETSEL */
SendMessage(hWndTrackbar, TBM_SETSEL, TRUE, MAKELONG(0,10));
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSEL, TRUE, MAKELONG(0,10));
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(10, r);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(5, r);
SendMessage(hWndTrackbar, TBM_SETSEL, TRUE, MAKELONG(5, 20));
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSEL, TRUE, MAKELONG(5, 20));
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(10, r);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(5, r);
SendMessage(hWndTrackbar, TBM_SETSEL, FALSE, MAKELONG(5, 10));
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSEL, FALSE, MAKELONG(5, 10));
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(10, r);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(5, r);
/* test TBM_SETSELEND */
SendMessage(hWndTrackbar, TBM_SETSELEND, TRUE, 10);
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELEND, TRUE, 10);
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(10, r);
SendMessage(hWndTrackbar, TBM_SETSELEND, TRUE, 20);
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELEND, TRUE, 20);
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(10, r);
SendMessage(hWndTrackbar, TBM_SETSELEND, TRUE, 4);
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELEND, TRUE, 4);
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(4, r);
SendMessage(hWndTrackbar, TBM_SETSELEND, FALSE, 2);
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELEND, FALSE, 2);
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(2, r);
/* test TBM_GETSELEND */
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(2, r);
/* testing TBM_SETSELSTART */
SendMessage(hWndTrackbar, TBM_SETSELSTART, TRUE, 5);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELSTART, TRUE, 5);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(5, r);
SendMessage(hWndTrackbar, TBM_SETSELSTART, TRUE, 0);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELSTART, TRUE, 0);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(5, r);
SendMessage(hWndTrackbar, TBM_SETSELSTART, TRUE, 20);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELSTART, TRUE, 20);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(20, r);
SendMessage(hWndTrackbar, TBM_SETSELSTART, FALSE, 8);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELSTART, FALSE, 8);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(8, r);
/* test TBM_GETSELSTART */
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(8, r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, selection_test_seq, "selection test sequence", TRUE);
ok_sequence(sequences, PARENT_SEQ_INDEX, parent_selection_test_seq, "parent selection test seqence", TRUE);
ok_sequence(sequences, PARENT_SEQ_INDEX, parent_selection_test_seq, "parent selection test sequence", TRUE);
}
static void test_thumb_length(HWND hWndTrackbar){
@ -742,24 +736,24 @@ static void test_thumb_length(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* testing TBM_SETTHUMBLENGTH */
SendMessage(hWndTrackbar, TBM_SETTHUMBLENGTH, 15, 0);
r = SendMessage(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
SendMessageA(hWndTrackbar, TBM_SETTHUMBLENGTH, 15, 0);
r = SendMessageA(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
expect(15, r);
SendMessage(hWndTrackbar, TBM_SETTHUMBLENGTH, 20, 0);
r = SendMessage(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
SendMessageA(hWndTrackbar, TBM_SETTHUMBLENGTH, 20, 0);
r = SendMessageA(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
expect(20, r);
/* test TBM_GETTHUMBLENGTH */
r = SendMessage(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
expect(20, r);
r = SendMessage(hWndTrackbar, WM_SIZE, 0,0);
r = SendMessageA(hWndTrackbar, WM_SIZE, 0,0);
expect(0, r);
r = SendMessage(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
expect(20, r);
r = SendMessage(hWndTrackbar, WM_SIZE, 0, MAKELPARAM(50, 50) );
r = SendMessageA(hWndTrackbar, WM_SIZE, 0, MAKELPARAM(50, 50) );
expect(0, r);
r = SendMessage(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETTHUMBLENGTH, 0,0);
expect(20, r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, thumb_length_test_seq, "thumb length test sequence", TRUE);
@ -772,59 +766,59 @@ static void test_tic_settings(HWND hWndTrackbar){
/* testing TBM_SETTIC */
/* Set tics at 5 and 10 */
/* 0 and 20 are out of range and should not be set */
r = SendMessage(hWndTrackbar, TBM_GETRANGEMAX, 0, 0);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMAX, 0, 0);
expect(10, r);
r = SendMessage(hWndTrackbar, TBM_GETRANGEMIN, 0, 0);
r = SendMessageA(hWndTrackbar, TBM_GETRANGEMIN, 0, 0);
expect(5, r);
flush_sequences(sequences, NUM_MSG_SEQUENCE);
r = SendMessage(hWndTrackbar, TBM_SETTIC, 0, 0);
r = SendMessageA(hWndTrackbar, TBM_SETTIC, 0, 0);
ok(r == FALSE, "Expected FALSE, got %d\n", r);
r = SendMessage(hWndTrackbar, TBM_SETTIC, 0, 5);
r = SendMessageA(hWndTrackbar, TBM_SETTIC, 0, 5);
ok(r == TRUE, "Expected TRUE, got %d\n", r);
r = SendMessage(hWndTrackbar, TBM_SETTIC, 0, 10);
r = SendMessageA(hWndTrackbar, TBM_SETTIC, 0, 10);
ok(r == TRUE, "Expected TRUE, got %d\n", r);
r = SendMessage(hWndTrackbar, TBM_SETTIC, 0, 20);
ok(r == FALSE, "Expected False, got %d\n", r);
r = SendMessageA(hWndTrackbar, TBM_SETTIC, 0, 20);
ok(r == FALSE, "Expected FALSE, got %d\n", r);
/* test TBM_SETTICFREQ */
SendMessage(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(0, 10));
SendMessage(hWndTrackbar, TBM_SETTICFREQ, 2, 0);
r = SendMessage(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
SendMessageA(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(0, 10));
SendMessageA(hWndTrackbar, TBM_SETTICFREQ, 2, 0);
r = SendMessageA(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
expect(6, r);
SendMessage(hWndTrackbar, TBM_SETTICFREQ, 5, 0);
r = SendMessage(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
SendMessageA(hWndTrackbar, TBM_SETTICFREQ, 5, 0);
r = SendMessageA(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
expect(3, r);
SendMessage(hWndTrackbar, TBM_SETTICFREQ, 15, 0);
r = SendMessage(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
SendMessageA(hWndTrackbar, TBM_SETTICFREQ, 15, 0);
r = SendMessageA(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
expect(2, r);
/* test TBM_GETNUMTICS */
/* since TIC FREQ is 15, there should be only 2 tics now */
r = SendMessage(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
r = SendMessageA(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
expect(2, r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, tic_settings_test_seq, "tic settings test sequence", TRUE);
ok_sequence(sequences, PARENT_SEQ_INDEX, parent_tic_settings_test_seq, "parent tic settings test sequence", TRUE);
/* range [0,0], freq = 1 */
SendMessage(hWndTrackbar, TBM_SETRANGEMAX, TRUE, 0);
SendMessage(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 0);
SendMessage(hWndTrackbar, TBM_SETTICFREQ, 1, 0);
r = SendMessage(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMAX, TRUE, 0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 0);
SendMessageA(hWndTrackbar, TBM_SETTICFREQ, 1, 0);
r = SendMessageA(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
expect(2, r);
/* range [0,1], freq = 1 */
SendMessage(hWndTrackbar, TBM_SETRANGEMAX, TRUE, 1);
SendMessage(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 0);
SendMessage(hWndTrackbar, TBM_SETTICFREQ, 1, 0);
r = SendMessage(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMAX, TRUE, 1);
SendMessageA(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 0);
SendMessageA(hWndTrackbar, TBM_SETTICFREQ, 1, 0);
r = SendMessageA(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
expect(2, r);
/* range [0,2], freq = 1 */
SendMessage(hWndTrackbar, TBM_SETRANGEMAX, TRUE, 2);
SendMessage(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 0);
SendMessage(hWndTrackbar, TBM_SETTICFREQ, 1, 0);
r = SendMessage(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
SendMessageA(hWndTrackbar, TBM_SETRANGEMAX, TRUE, 2);
SendMessageA(hWndTrackbar, TBM_SETRANGEMIN, TRUE, 0);
SendMessageA(hWndTrackbar, TBM_SETTICFREQ, 1, 0);
r = SendMessageA(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
expect(3, r);
}
@ -833,32 +827,32 @@ static void test_tic_placement(HWND hWndTrackbar){
DWORD *rPTics;
DWORD numtics;
SendMessage(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(1, 6));
SendMessage(hWndTrackbar, TBM_SETTICFREQ, 1, 0);
SendMessageA(hWndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(1, 6));
SendMessageA(hWndTrackbar, TBM_SETTICFREQ, 1, 0);
numtics = SendMessage(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
numtics = SendMessageA(hWndTrackbar, TBM_GETNUMTICS, 0, 0);
ok(numtics == 6, "Expected 6, got %d\n", numtics);
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* test TBM_GETPTICS */
rPTics = (DWORD *) SendMessage(hWndTrackbar, TBM_GETPTICS, 0,0);
rPTics = (DWORD *) SendMessageA(hWndTrackbar, TBM_GETPTICS, 0,0);
expect(2, rPTics[0]);
expect(3, rPTics[1]);
expect(4, rPTics[2]);
expect(5, rPTics[3]);
/* test TBM_GETTIC */
r = SendMessage(hWndTrackbar, TBM_GETTIC, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETTIC, 0,0);
expect(2, r);
r = SendMessage(hWndTrackbar, TBM_GETTIC, 2,0);
r = SendMessageA(hWndTrackbar, TBM_GETTIC, 2,0);
expect(4, r);
r = SendMessage(hWndTrackbar, TBM_GETTIC, 4,0);
r = SendMessageA(hWndTrackbar, TBM_GETTIC, 4,0);
expect(-1, r);
/* test TBM_GETTICPIC */
r = SendMessage(hWndTrackbar, TBM_GETTICPOS, 0, 0);
r = SendMessageA(hWndTrackbar, TBM_GETTICPOS, 0, 0);
ok(r > 0, "Expected r > 0, got %d\n", r);
r = SendMessage(hWndTrackbar, TBM_GETTICPOS, 2, 0);
r = SendMessageA(hWndTrackbar, TBM_GETTICPOS, 2, 0);
ok(r > 0, "Expected r > 0, got %d\n", r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, tic_placement_test_seq, "get tic placement test sequence", FALSE);
@ -873,36 +867,36 @@ static void test_tool_tips(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* testing TBM_SETTIPSIDE */
r = SendMessage(hWndTrackbar, TBM_SETTIPSIDE, TBTS_TOP, 0);
r = SendMessageA(hWndTrackbar, TBM_SETTIPSIDE, TBTS_TOP, 0);
expect(TBTS_TOP, r);
r = SendMessage(hWndTrackbar, TBM_SETTIPSIDE, TBTS_LEFT, 0);
r = SendMessageA(hWndTrackbar, TBM_SETTIPSIDE, TBTS_LEFT, 0);
expect(TBTS_TOP, r);
r = SendMessage(hWndTrackbar, TBM_SETTIPSIDE, TBTS_BOTTOM, 0);
r = SendMessageA(hWndTrackbar, TBM_SETTIPSIDE, TBTS_BOTTOM, 0);
expect(TBTS_LEFT, r);
r = SendMessage(hWndTrackbar, TBM_SETTIPSIDE, TBTS_RIGHT, 0);
r = SendMessageA(hWndTrackbar, TBM_SETTIPSIDE, TBTS_RIGHT, 0);
expect(TBTS_BOTTOM, r);
/* testing TBM_SETTOOLTIPS */
hWndTooltip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, 0,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, NULL, NULL);
hWndTooltip = CreateWindowExA(WS_EX_TOPMOST, TOOLTIPS_CLASSA, NULL, 0,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, NULL, NULL);
ok(hWndTooltip != NULL, "Expected non NULL value\n");
if (hWndTooltip != NULL){
SendMessage(hWndTrackbar, TBM_SETTOOLTIPS, (LPARAM) hWndTooltip, 0);
rTest = (HWND) SendMessage(hWndTrackbar, TBM_GETTOOLTIPS, 0,0);
SendMessageA(hWndTrackbar, TBM_SETTOOLTIPS, (LPARAM) hWndTooltip, 0);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_GETTOOLTIPS, 0,0);
ok(rTest == hWndTooltip, "Expected hWndToolTip, got\n");
SendMessage(hWndTrackbar, TBM_SETTOOLTIPS, 0, 0);
rTest = (HWND) SendMessage(hWndTrackbar, TBM_GETTOOLTIPS, 0,0);
SendMessageA(hWndTrackbar, TBM_SETTOOLTIPS, 0, 0);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_GETTOOLTIPS, 0,0);
ok(rTest == NULL, "Expected NULL\n");
SendMessage(hWndTrackbar, TBM_SETTOOLTIPS, (LPARAM) hWndTooltip, 5);
rTest = (HWND) SendMessage(hWndTrackbar, TBM_GETTOOLTIPS, 0,0);
SendMessageA(hWndTrackbar, TBM_SETTOOLTIPS, (LPARAM) hWndTooltip, 5);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_GETTOOLTIPS, 0,0);
ok(rTest == hWndTooltip, "Expected hWndTooltip, got\n");
} else
skip("tool tip control not present?\n");
/* test TBM_GETTOOLTIPS */
rTest = (HWND) SendMessage(hWndTrackbar, TBM_GETTOOLTIPS, 0,0);
rTest = (HWND) SendMessageA(hWndTrackbar, TBM_GETTOOLTIPS, 0,0);
ok(rTest == hWndTooltip, "Expected hWndTooltip\n");
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, tool_tips_test_seq, "tool tips test sequence", FALSE);
@ -915,13 +909,13 @@ static void test_unicode(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* testing TBM_SETUNICODEFORMAT */
r = SendMessage(hWndTrackbar, TBM_SETUNICODEFORMAT, TRUE, 0);
r = SendMessageA(hWndTrackbar, TBM_SETUNICODEFORMAT, TRUE, 0);
ok(r == FALSE, "Expected FALSE, got %d\n",r);
r = SendMessage(hWndTrackbar, TBM_SETUNICODEFORMAT, FALSE, 0);
r = SendMessageA(hWndTrackbar, TBM_SETUNICODEFORMAT, FALSE, 0);
ok(r == TRUE, "Expected TRUE, got %d\n",r);
/* test TBM_GETUNICODEFORMAT */
r = SendMessage(hWndTrackbar, TBM_GETUNICODEFORMAT, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETUNICODEFORMAT, 0,0);
ok(r == FALSE, "Expected FALSE, got %d\n",r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, unicode_test_seq, "unicode test sequence", FALSE);
@ -933,37 +927,37 @@ static void test_ignore_selection(HWND hWndTrackbar){
flush_sequences(sequences, NUM_MSG_SEQUENCE);
/* test TBM_SETSEL ensure that it is ignored */
SendMessage(hWndTrackbar, TBM_SETSEL, TRUE, MAKELONG(0,10));
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSEL, TRUE, MAKELONG(0,10));
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(0, r);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(0, r);
SendMessage(hWndTrackbar, TBM_SETSEL, FALSE, MAKELONG(0,10));
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSEL, FALSE, MAKELONG(0,10));
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(0, r);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(0, r);
/* test TBM_SETSELEND, ensure that it is ignored */
SendMessage(hWndTrackbar, TBM_SETSELEND, TRUE, 0);
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELEND, TRUE, 0);
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(0, r);
SendMessage(hWndTrackbar, TBM_SETSELEND, TRUE, 10);
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELEND, TRUE, 10);
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(0,r);
SendMessage(hWndTrackbar, TBM_SETSELEND, FALSE, 0);
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELEND, FALSE, 0);
r = SendMessageA(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(0, r);
/* test TBM_SETSELSTART, ensure that it is ignored */
SendMessage(hWndTrackbar, TBM_SETSELSTART, TRUE, 0);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELSTART, TRUE, 0);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(0, r);
SendMessage(hWndTrackbar, TBM_SETSELSTART, TRUE, 10);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELSTART, TRUE, 10);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(0,r);
SendMessage(hWndTrackbar, TBM_SETSELSTART, FALSE, 0);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
SendMessageA(hWndTrackbar, TBM_SETSELSTART, FALSE, 0);
r = SendMessageA(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(0, r);
ok_sequence(sequences, TRACKBAR_SEQ_INDEX, ignore_selection_test_seq, "ignore selection setting test sequence", FALSE);
@ -977,27 +971,27 @@ static void test_initial_state(void)
hWnd = create_trackbar(0, hWndParent);
ret = SendMessage(hWnd, TBM_GETNUMTICS, 0, 0);
ret = SendMessageA(hWnd, TBM_GETNUMTICS, 0, 0);
expect(2, ret);
ret = SendMessage(hWnd, TBM_GETTIC, 0, 0);
ret = SendMessageA(hWnd, TBM_GETTIC, 0, 0);
expect(-1, ret);
ret = SendMessage(hWnd, TBM_GETTICPOS, 0, 0);
ret = SendMessageA(hWnd, TBM_GETTICPOS, 0, 0);
expect(-1, ret);
ret = SendMessage(hWnd, TBM_GETRANGEMIN, 0, 0);
ret = SendMessageA(hWnd, TBM_GETRANGEMIN, 0, 0);
expect(0, ret);
ret = SendMessage(hWnd, TBM_GETRANGEMAX, 0, 0);
ret = SendMessageA(hWnd, TBM_GETRANGEMAX, 0, 0);
expect(100, ret);
ret = SendMessage(hWnd, TBM_SETRANGEMAX, TRUE, 200);
ret = SendMessageA(hWnd, TBM_SETRANGEMAX, TRUE, 200);
expect(0, ret);
ret = SendMessage(hWnd, TBM_GETNUMTICS, 0, 0);
ret = SendMessageA(hWnd, TBM_GETNUMTICS, 0, 0);
expect(2, ret);
ret = SendMessage(hWnd, TBM_SETRANGEMIN, TRUE, 10);
ret = SendMessageA(hWnd, TBM_SETRANGEMIN, TRUE, 10);
expect(0, ret);
ret = SendMessage(hWnd, TBM_GETNUMTICS, 0, 0);
ret = SendMessageA(hWnd, TBM_GETNUMTICS, 0, 0);
expect(2, ret);
DestroyWindow(hWnd);
@ -1010,38 +1004,38 @@ static void test_TBS_AUTOTICKS(void)
hWnd = create_trackbar(TBS_AUTOTICKS, hWndParent);
ret = SendMessage(hWnd, TBM_GETNUMTICS, 0, 0);
ret = SendMessageA(hWnd, TBM_GETNUMTICS, 0, 0);
expect(2, ret);
ret = SendMessage(hWnd, TBM_GETTIC, 0, 0);
ret = SendMessageA(hWnd, TBM_GETTIC, 0, 0);
expect(-1, ret);
ret = SendMessage(hWnd, TBM_GETTICPOS, 0, 0);
ret = SendMessageA(hWnd, TBM_GETTICPOS, 0, 0);
expect(-1, ret);
ret = SendMessage(hWnd, TBM_GETRANGEMIN, 0, 0);
ret = SendMessageA(hWnd, TBM_GETRANGEMIN, 0, 0);
expect(0, ret);
ret = SendMessage(hWnd, TBM_GETRANGEMAX, 0, 0);
ret = SendMessageA(hWnd, TBM_GETRANGEMAX, 0, 0);
expect(100, ret);
/* TBM_SETRANGEMAX rebuilds tics */
ret = SendMessage(hWnd, TBM_SETRANGEMAX, TRUE, 200);
ret = SendMessageA(hWnd, TBM_SETRANGEMAX, TRUE, 200);
expect(0, ret);
ret = SendMessage(hWnd, TBM_GETNUMTICS, 0, 0);
ret = SendMessageA(hWnd, TBM_GETNUMTICS, 0, 0);
expect(201, ret);
/* TBM_SETRANGEMIN rebuilds tics */
ret = SendMessage(hWnd, TBM_SETRANGEMAX, TRUE, 100);
ret = SendMessageA(hWnd, TBM_SETRANGEMAX, TRUE, 100);
expect(0, ret);
ret = SendMessage(hWnd, TBM_SETRANGEMIN, TRUE, 10);
ret = SendMessageA(hWnd, TBM_SETRANGEMIN, TRUE, 10);
expect(0, ret);
ret = SendMessage(hWnd, TBM_GETNUMTICS, 0, 0);
ret = SendMessageA(hWnd, TBM_GETNUMTICS, 0, 0);
expect(91, ret);
ret = SendMessage(hWnd, TBM_SETRANGEMIN, TRUE, 0);
ret = SendMessageA(hWnd, TBM_SETRANGEMIN, TRUE, 0);
expect(0, ret);
/* TBM_SETRANGE rebuilds tics */
ret = SendMessage(hWnd, TBM_SETRANGE, TRUE, MAKELONG(10, 200));
ret = SendMessageA(hWnd, TBM_SETRANGE, TRUE, MAKELONG(10, 200));
expect(0, ret);
ret = SendMessage(hWnd, TBM_GETNUMTICS, 0, 0);
ret = SendMessageA(hWnd, TBM_GETNUMTICS, 0, 0);
expect(191, ret);
DestroyWindow(hWnd);

File diff suppressed because it is too large Load diff

View file

@ -210,7 +210,7 @@ static BOOL register_parent_wnd_class(void)
cls.cbWndExtra = 0;
cls.hInstance = GetModuleHandleA(NULL);
cls.hIcon = 0;
cls.hCursor = LoadCursorA(0, IDC_ARROW);
cls.hCursor = LoadCursorA(0, (LPCSTR)IDC_ARROW);
cls.hbrBackground = GetStockObject(WHITE_BRUSH);
cls.lpszMenuName = NULL;
cls.lpszClassName = "Up-Down test parent class";
@ -222,7 +222,7 @@ static HWND create_parent_window(void)
if (!register_parent_wnd_class())
return NULL;
return CreateWindowEx(0, "Up-Down test parent class",
return CreateWindowExA(0, "Up-Down test parent class",
"Up-Down test parent window",
WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX |
WS_MAXIMIZEBOX | WS_VISIBLE,
@ -325,48 +325,48 @@ static void test_updown_pos(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Set Range from 0 to 100 */
SendMessage(updown, UDM_SETRANGE, 0 , MAKELONG(100,0) );
r = SendMessage(updown, UDM_GETRANGE, 0,0);
SendMessageA(updown, UDM_SETRANGE, 0 , MAKELONG(100,0) );
r = SendMessageA(updown, UDM_GETRANGE, 0,0);
expect(100,LOWORD(r));
expect(0,HIWORD(r));
/* Set the position to 5, return is not checked as it was set before func call */
SendMessage(updown, UDM_SETPOS, 0 , MAKELONG(5,0) );
SendMessageA(updown, UDM_SETPOS, 0 , MAKELONG(5,0) );
/* Since UDM_SETBUDDYINT was not set at creation HIWORD(r) will always be 1 as a return from UDM_GETPOS */
/* Get the position, which should be 5 */
r = SendMessage(updown, UDM_GETPOS, 0 , 0 );
r = SendMessageA(updown, UDM_GETPOS, 0 , 0 );
expect(5,LOWORD(r));
expect(1,HIWORD(r));
/* Set the position to 0, return should be 5 */
r = SendMessage(updown, UDM_SETPOS, 0 , MAKELONG(0,0) );
r = SendMessageA(updown, UDM_SETPOS, 0 , MAKELONG(0,0) );
expect(5,r);
/* Get the position, which should be 0 */
r = SendMessage(updown, UDM_GETPOS, 0 , 0 );
r = SendMessageA(updown, UDM_GETPOS, 0 , 0 );
expect(0,LOWORD(r));
expect(1,HIWORD(r));
/* Set the position to -1, return should be 0 */
r = SendMessage(updown, UDM_SETPOS, 0 , MAKELONG(-1,0) );
r = SendMessageA(updown, UDM_SETPOS, 0 , MAKELONG(-1,0) );
expect(0,r);
/* Get the position, which should be 0 */
r = SendMessage(updown, UDM_GETPOS, 0 , 0 );
r = SendMessageA(updown, UDM_GETPOS, 0 , 0 );
expect(0,LOWORD(r));
expect(1,HIWORD(r));
/* Set the position to 100, return should be 0 */
r = SendMessage(updown, UDM_SETPOS, 0 , MAKELONG(100,0) );
r = SendMessageA(updown, UDM_SETPOS, 0 , MAKELONG(100,0) );
expect(0,r);
/* Get the position, which should be 100 */
r = SendMessage(updown, UDM_GETPOS, 0 , 0 );
r = SendMessageA(updown, UDM_GETPOS, 0 , 0 );
expect(100,LOWORD(r));
expect(1,HIWORD(r));
/* Set the position to 101, return should be 100 */
r = SendMessage(updown, UDM_SETPOS, 0 , MAKELONG(101,0) );
r = SendMessageA(updown, UDM_SETPOS, 0 , MAKELONG(101,0) );
expect(100,r);
/* Get the position, which should be 100 */
r = SendMessage(updown, UDM_GETPOS, 0 , 0 );
r = SendMessageA(updown, UDM_GETPOS, 0 , 0 );
expect(100,LOWORD(r));
expect(1,HIWORD(r));
@ -376,19 +376,61 @@ static void test_updown_pos(void)
/* there's no attempt to update buddy Edit if text didn't change */
SetWindowTextA(g_edit, "50");
updown = create_updown_control(UDS_ALIGNRIGHT | UDS_SETBUDDYINT, g_edit);
updown = create_updown_control(UDS_ALIGNRIGHT | UDS_SETBUDDYINT | UDS_ARROWKEYS, g_edit);
/* test sequence only on 5.8x versions */
r = SendMessage(updown, UDM_GETPOS32, 0, 0);
r = SendMessageA(updown, UDM_GETPOS32, 0, 0);
if (r)
{
UDACCEL accel;
flush_sequences(sequences, NUM_MSG_SEQUENCES);
r = SendMessage(updown, UDM_SETPOS, 0, 50);
r = SendMessageA(updown, UDM_SETPOS, 0, 50);
expect(50,r);
ok_sequence(sequences, EDIT_SEQ_INDEX, test_updown_pos_nochange_seq,
"test updown pos, no change", FALSE);
SendMessageA(updown, UDM_SETRANGE, 0, MAKELONG(1, 40));
r = SendMessageA(updown, UDM_GETRANGE, 0, 0);
expect(1, LOWORD(r));
expect(40, HIWORD(r));
accel.nSec = 0;
accel.nInc = 5;
r = SendMessageA(updown, UDM_SETACCEL, 1, (LPARAM)&accel);
expect(TRUE, r);
r = SendMessageA(updown, UDM_GETPOS, 0, 0);
expect(40, LOWORD(r));
expect(1, HIWORD(r));
r = SendMessageA(updown, UDM_SETPOS, 0, MAKELONG(0, 0));
expect(40, LOWORD(r));
expect(0, HIWORD(r));
r = SendMessageA(updown, UDM_GETPOS, 0, 0);
expect(1, LOWORD(r));
expect(0, HIWORD(r));
r = SendMessageA(updown, UDM_SETPOS, 0, MAKELONG(2, 0));
expect(1, LOWORD(r));
expect(0, HIWORD(r));
r = SendMessageA(g_edit, WM_KEYDOWN, VK_UP, 0);
expect(0, r);
r = SendMessageA(updown, UDM_GETPOS, 0, 0);
expect(1, LOWORD(r));
expect(0, HIWORD(r));
r = SendMessageA(updown, UDM_SETPOS, 0, MAKELONG(50, 0));
expect(1, LOWORD(r));
expect(0, HIWORD(r));
r = SendMessageA(updown, UDM_GETPOS, 0, 0);
expect(40, LOWORD(r));
expect(0, HIWORD(r));
}
DestroyWindow(updown);
@ -405,10 +447,10 @@ static void test_updown_pos32(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Set the position to 0 to 1000 */
SendMessage(updown, UDM_SETRANGE32, 0 , 1000 );
SendMessageA(updown, UDM_SETRANGE32, 0 , 1000 );
low = high = -1;
r = SendMessage(updown, UDM_GETRANGE32, (WPARAM) &low , (LPARAM) &high );
r = SendMessageA(updown, UDM_GETRANGE32, (WPARAM) &low , (LPARAM) &high );
expect(0,r);
if (low == -1)
{
@ -421,7 +463,7 @@ static void test_updown_pos32(void)
expect(1000,high);
/* Set position to 500 */
r = SendMessage(updown, UDM_SETPOS32, 0 , 500 );
r = SendMessageA(updown, UDM_SETPOS32, 0 , 500 );
if (!r)
{
win_skip("UDM_SETPOS32 and UDM_GETPOS32 need 5.80\n");
@ -432,35 +474,35 @@ static void test_updown_pos32(void)
/* Since UDM_SETBUDDYINT was not set at creation bRet will always be true as a return from UDM_GETPOS32 */
r = SendMessage(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
r = SendMessageA(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
expect(500,r);
expect(1,high);
/* Set position to 0, return should be 500 */
r = SendMessage(updown, UDM_SETPOS32, 0 , 0 );
r = SendMessageA(updown, UDM_SETPOS32, 0 , 0 );
expect(500,r);
r = SendMessage(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
r = SendMessageA(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
expect(0,r);
expect(1,high);
/* Set position to -1 which should become 0, return should be 0 */
r = SendMessage(updown, UDM_SETPOS32, 0 , -1 );
r = SendMessageA(updown, UDM_SETPOS32, 0 , -1 );
expect(0,r);
r = SendMessage(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
r = SendMessageA(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
expect(0,r);
expect(1,high);
/* Set position to 1000, return should be 0 */
r = SendMessage(updown, UDM_SETPOS32, 0 , 1000 );
r = SendMessageA(updown, UDM_SETPOS32, 0 , 1000 );
expect(0,r);
r = SendMessage(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
r = SendMessageA(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
expect(1000,r);
expect(1,high);
/* Set position to 1001 which should become 1000, return should be 1000 */
r = SendMessage(updown, UDM_SETPOS32, 0 , 1001 );
r = SendMessageA(updown, UDM_SETPOS32, 0 , 1001 );
expect(1000,r);
r = SendMessage(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
r = SendMessageA(updown, UDM_GETPOS32, 0 , (LPARAM) &high );
expect(1000,r);
expect(1,high);
@ -474,7 +516,7 @@ static void test_updown_pos32(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
r = SendMessage(updown, UDM_SETPOS32, 0, 50);
r = SendMessageA(updown, UDM_SETPOS32, 0, 50);
expect(50,r);
ok_sequence(sequences, EDIT_SEQ_INDEX, test_updown_pos_nochange_seq,
"test updown pos, no change", FALSE);
@ -492,13 +534,13 @@ static void test_updown_buddy(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
buddyReturn = (HWND)SendMessage(updown, UDM_GETBUDDY, 0 , 0 );
buddyReturn = (HWND)SendMessageA(updown, UDM_GETBUDDY, 0 , 0 );
ok(buddyReturn == g_edit, "Expected edit handle\n");
buddyReturn = (HWND)SendMessage(updown, UDM_SETBUDDY, (WPARAM) g_edit, 0);
buddyReturn = (HWND)SendMessageA(updown, UDM_SETBUDDY, (WPARAM) g_edit, 0);
ok(buddyReturn == g_edit, "Expected edit handle\n");
buddyReturn = (HWND)SendMessage(updown, UDM_GETBUDDY, 0 , 0 );
buddyReturn = (HWND)SendMessageA(updown, UDM_GETBUDDY, 0 , 0 );
ok(buddyReturn == g_edit, "Expected edit handle\n");
ok_sequence(sequences, UPDOWN_SEQ_INDEX, test_updown_buddy_seq, "test updown buddy", TRUE);
@ -545,32 +587,32 @@ static void test_updown_base(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
SendMessage(updown, UDM_SETBASE, 10 , 0);
r = SendMessage(updown, UDM_GETBASE, 0 , 0);
SendMessageA(updown, UDM_SETBASE, 10 , 0);
r = SendMessageA(updown, UDM_GETBASE, 0 , 0);
expect(10,r);
/* Set base to an invalid value, should return 0 and stay at 10 */
r = SendMessage(updown, UDM_SETBASE, 80 , 0);
r = SendMessageA(updown, UDM_SETBASE, 80 , 0);
expect(0,r);
r = SendMessage(updown, UDM_GETBASE, 0 , 0);
r = SendMessageA(updown, UDM_GETBASE, 0 , 0);
expect(10,r);
/* Set base to 16 now, should get 16 as the return */
r = SendMessage(updown, UDM_SETBASE, 16 , 0);
r = SendMessageA(updown, UDM_SETBASE, 16 , 0);
expect(10,r);
r = SendMessage(updown, UDM_GETBASE, 0 , 0);
r = SendMessageA(updown, UDM_GETBASE, 0 , 0);
expect(16,r);
/* Set base to an invalid value, should return 0 and stay at 16 */
r = SendMessage(updown, UDM_SETBASE, 80 , 0);
r = SendMessageA(updown, UDM_SETBASE, 80 , 0);
expect(0,r);
r = SendMessage(updown, UDM_GETBASE, 0 , 0);
r = SendMessageA(updown, UDM_GETBASE, 0 , 0);
expect(16,r);
/* Set base back to 10, return should be 16 */
r = SendMessage(updown, UDM_SETBASE, 10 , 0);
r = SendMessageA(updown, UDM_SETBASE, 10 , 0);
expect(16,r);
r = SendMessage(updown, UDM_GETBASE, 0 , 0);
r = SendMessageA(updown, UDM_GETBASE, 0 , 0);
expect(10,r);
ok_sequence(sequences, UPDOWN_SEQ_INDEX, test_updown_base_seq, "test updown base", FALSE);
@ -580,13 +622,13 @@ static void test_updown_base(void)
/* switch base with buddy attached */
updown = create_updown_control(UDS_SETBUDDYINT | UDS_ALIGNRIGHT, g_edit);
r = SendMessage(updown, UDM_SETPOS, 0, 10);
r = SendMessageA(updown, UDM_SETPOS, 0, 10);
expect(50, r);
GetWindowTextA(g_edit, text, sizeof(text)/sizeof(CHAR));
ok(lstrcmpA(text, "10") == 0, "Expected '10', got '%s'\n", text);
r = SendMessage(updown, UDM_SETBASE, 16, 0);
r = SendMessageA(updown, UDM_SETBASE, 16, 0);
expect(10, r);
GetWindowTextA(g_edit, text, sizeof(text)/sizeof(CHAR));
@ -607,14 +649,14 @@ static void test_updown_unicode(void)
flush_sequences(sequences, NUM_MSG_SEQUENCES);
/* Set it to ANSI, don't check return as we don't know previous state */
SendMessage(updown, UDM_SETUNICODEFORMAT, 0 , 0);
r = SendMessage(updown, UDM_GETUNICODEFORMAT, 0 , 0);
SendMessageA(updown, UDM_SETUNICODEFORMAT, 0 , 0);
r = SendMessageA(updown, UDM_GETUNICODEFORMAT, 0 , 0);
expect(0,r);
/* Now set it to Unicode format */
r = SendMessage(updown, UDM_SETUNICODEFORMAT, 1 , 0);
r = SendMessageA(updown, UDM_SETUNICODEFORMAT, 1 , 0);
expect(0,r);
r = SendMessage(updown, UDM_GETUNICODEFORMAT, 0 , 0);
r = SendMessageA(updown, UDM_GETUNICODEFORMAT, 0 , 0);
if (!r)
{
win_skip("UDM_SETUNICODEFORMAT not available\n");
@ -624,9 +666,9 @@ static void test_updown_unicode(void)
expect(1,r);
/* And now set it back to ANSI */
r = SendMessage(updown, UDM_SETUNICODEFORMAT, 0 , 0);
r = SendMessageA(updown, UDM_SETUNICODEFORMAT, 0 , 0);
expect(1,r);
r = SendMessage(updown, UDM_GETUNICODEFORMAT, 0 , 0);
r = SendMessageA(updown, UDM_GETUNICODEFORMAT, 0 , 0);
expect(0,r);
ok_sequence(sequences, UPDOWN_SEQ_INDEX, test_updown_unicode_seq, "test updown unicode", FALSE);
@ -722,7 +764,7 @@ static void test_UDS_SETBUDDYINT(void)
SetWindowLongA(updown, GWL_STYLE, style | UDS_SETBUDDYINT);
style = GetWindowLongA(updown, GWL_STYLE);
ok(style & UDS_SETBUDDYINT, "Expected UDS_SETBUDDY to be set\n");
SendMessage(updown, UDM_SETPOS, 0, 20);
SendMessageA(updown, UDM_SETPOS, 0, 20);
GetWindowTextA(g_edit, text, sizeof(text)/sizeof(CHAR));
ok(lstrlenA(text) == 0, "Expected empty string\n");
DestroyWindow(updown);
@ -735,7 +777,7 @@ static void test_UDS_SETBUDDYINT(void)
/* now remove style flag */
style = GetWindowLongA(updown, GWL_STYLE);
SetWindowLongA(updown, GWL_STYLE, style & ~UDS_SETBUDDYINT);
SendMessage(updown, UDM_SETPOS, 0, 20);
SendMessageA(updown, UDM_SETPOS, 0, 20);
GetWindowTextA(g_edit, text, sizeof(text)/sizeof(CHAR));
ok(lstrcmpA(text, "20") == 0, "Expected '20', got '%s'\n", text);
/* set edit text directly, check position */
@ -757,7 +799,7 @@ static void test_UDS_SETBUDDYINT(void)
/* set style back */
style = GetWindowLongA(updown, GWL_STYLE);
SetWindowLongA(updown, GWL_STYLE, style | UDS_SETBUDDYINT);
SendMessage(updown, UDM_SETPOS, 0, 30);
SendMessageA(updown, UDM_SETPOS, 0, 30);
GetWindowTextA(g_edit, text, sizeof(text)/sizeof(CHAR));
ok(lstrcmpA(text, "30") == 0, "Expected '30', got '%s'\n", text);
DestroyWindow(updown);

View file

@ -82,6 +82,9 @@ static BOOL load_v6_module(ULONG_PTR *pcookie, HANDLE *hCtx)
HANDLE hKernel32;
HANDLE (WINAPI *pCreateActCtxA)(ACTCTXA*);
BOOL (WINAPI *pActivateActCtx)(HANDLE, ULONG_PTR*);
BOOL (WINAPI *pFindActCtxSectionStringA)(DWORD,const GUID *,ULONG,LPCSTR,PACTCTX_SECTION_KEYED_DATA);
ACTCTX_SECTION_KEYED_DATA data;
ACTCTXA ctx;
BOOL ret;
@ -91,6 +94,7 @@ static BOOL load_v6_module(ULONG_PTR *pcookie, HANDLE *hCtx)
hKernel32 = GetModuleHandleA("kernel32.dll");
pCreateActCtxA = (void*)GetProcAddress(hKernel32, "CreateActCtxA");
pActivateActCtx = (void*)GetProcAddress(hKernel32, "ActivateActCtx");
pFindActCtxSectionStringA = (void*)GetProcAddress(hKernel32, "FindActCtxSectionStringA");
if (!(pCreateActCtxA && pActivateActCtx))
{
win_skip("Activation contexts unsupported. No version 6 tests possible.\n");
@ -135,6 +139,13 @@ static BOOL load_v6_module(ULONG_PTR *pcookie, HANDLE *hCtx)
DeleteFileA(manifest_name);
}
data.cbSize = sizeof(data);
ret = pFindActCtxSectionStringA(0, NULL, ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION,
"comctl32.dll", &data);
ok(ret, "failed to find comctl32.dll in active context, %u\n", GetLastError());
if (ret)
LoadLibraryA("comctl32.dll");
return ret;
}