mirror of
https://github.com/reactos/reactos.git
synced 2025-07-23 02:03:43 +00:00
[COMCTL32_WINETEST]
* Sync with Wine 1.7.17. CORE-8080 svn path=/trunk/; revision=62880
This commit is contained in:
parent
9bf892c309
commit
03535e5b35
28 changed files with 3359 additions and 2344 deletions
|
@ -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
|
||||
|
|
819
rostests/winetests/comctl32/button.c
Normal file
819
rostests/winetests/comctl32/button.c
Normal 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);
|
||||
}
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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
|
@ -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
|
@ -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 */
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue