Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
5748f158
Commit
5748f158
authored
Aug 15, 2007
by
Paul Vriens
Committed by
Alexandre Julliard
Aug 16, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
user32/tests: Run tests on win95 again.
parent
22e48388
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
123 additions
and
50 deletions
+123
-50
input.c
dlls/user32/tests/input.c
+31
-14
menu.c
dlls/user32/tests/menu.c
+32
-9
monitor.c
dlls/user32/tests/monitor.c
+25
-7
msg.c
dlls/user32/tests/msg.c
+35
-20
No files found.
dlls/user32/tests/input.c
View file @
5748f158
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
static
HWND
hWndTest
;
static
HWND
hWndTest
;
static
long
timetag
=
0x10000000
;
static
long
timetag
=
0x10000000
;
static
UINT
(
WINAPI
*
p
tr_
SendInput
)
(
UINT
,
INPUT
*
,
size_t
);
static
UINT
(
WINAPI
*
pSendInput
)
(
UINT
,
INPUT
*
,
size_t
);
#define MAXKEYEVENTS 6
#define MAXKEYEVENTS 6
#define MAXKEYMESSAGES MAXKEYEVENTS
/* assuming a key event generates one
#define MAXKEYMESSAGES MAXKEYEVENTS
/* assuming a key event generates one
...
@@ -147,6 +147,20 @@ typedef union
...
@@ -147,6 +147,20 @@ typedef union
unsigned
long
lp2
;
unsigned
long
lp2
;
}
KEYLP
;
}
KEYLP
;
static
void
init_function_pointers
(
void
)
{
HMODULE
hdll
=
GetModuleHandleA
(
"user32"
);
#define GET_PROC(func) \
p ## func = (void*)GetProcAddress(hdll, #func); \
if(!p ## func) \
trace("GetProcAddress(%s) failed\n", #func);
GET_PROC
(
SendInput
)
#undef GET_PROC
}
static
int
KbdMessage
(
KEV
kev
,
WPARAM
*
pwParam
,
LPARAM
*
plParam
)
static
int
KbdMessage
(
KEV
kev
,
WPARAM
*
pwParam
,
LPARAM
*
plParam
)
{
{
UINT
message
;
UINT
message
;
...
@@ -209,7 +223,6 @@ static int KbdMessage( KEV kev, WPARAM *pwParam, LPARAM *plParam )
...
@@ -209,7 +223,6 @@ static int KbdMessage( KEV kev, WPARAM *pwParam, LPARAM *plParam )
*/
*/
static
void
do_test
(
HWND
hwnd
,
int
seqnr
,
const
KEV
td
[]
)
static
void
do_test
(
HWND
hwnd
,
int
seqnr
,
const
KEV
td
[]
)
{
{
HMODULE
module
;
INPUT
inputs
[
MAXKEYEVENTS
];
INPUT
inputs
[
MAXKEYEVENTS
];
KMSG
expmsg
[
MAXKEYEVENTS
];
KMSG
expmsg
[
MAXKEYEVENTS
];
MSG
msg
;
MSG
msg
;
...
@@ -217,14 +230,6 @@ static void do_test( HWND hwnd, int seqnr, const KEV td[] )
...
@@ -217,14 +230,6 @@ static void do_test( HWND hwnd, int seqnr, const KEV td[] )
UINT
evtctr
=
0
;
UINT
evtctr
=
0
;
int
kmctr
,
i
;
int
kmctr
,
i
;
module
=
GetModuleHandleA
(
"user32"
);
ptr_SendInput
=
(
void
*
)
GetProcAddress
(
module
,
"SendInput"
);
if
(
!
ptr_SendInput
)
{
skip
(
"skipping SendInput tests
\n
"
);
return
;
}
buf
[
0
]
=
'\0'
;
buf
[
0
]
=
'\0'
;
TrackSysKey
=
0
;
/* see input.c */
TrackSysKey
=
0
;
/* see input.c */
for
(
i
=
0
;
i
<
MAXKEYEVENTS
;
i
++
)
{
for
(
i
=
0
;
i
<
MAXKEYEVENTS
;
i
++
)
{
...
@@ -238,7 +243,7 @@ static void do_test( HWND hwnd, int seqnr, const KEV td[] )
...
@@ -238,7 +243,7 @@ static void do_test( HWND hwnd, int seqnr, const KEV td[] )
for
(
kmctr
=
0
;
kmctr
<
MAXKEYEVENTS
&&
expmsg
[
kmctr
].
message
;
kmctr
++
)
for
(
kmctr
=
0
;
kmctr
<
MAXKEYEVENTS
&&
expmsg
[
kmctr
].
message
;
kmctr
++
)
;
;
assert
(
evtctr
<=
MAXKEYEVENTS
);
assert
(
evtctr
<=
MAXKEYEVENTS
);
assert
(
evtctr
==
p
tr_
SendInput
(
evtctr
,
&
inputs
[
0
],
sizeof
(
INPUT
)));
assert
(
evtctr
==
pSendInput
(
evtctr
,
&
inputs
[
0
],
sizeof
(
INPUT
)));
i
=
0
;
i
=
0
;
if
(
winetest_debug
>
1
)
if
(
winetest_debug
>
1
)
trace
(
"======== key stroke sequence #%d: %s =============
\n
"
,
trace
(
"======== key stroke sequence #%d: %s =============
\n
"
,
...
@@ -485,8 +490,14 @@ static void test_Input_blackbox(void)
...
@@ -485,8 +490,14 @@ static void test_Input_blackbox(void)
int
ii
;
int
ii
;
BYTE
ks1
[
256
],
ks2
[
256
];
BYTE
ks1
[
256
],
ks2
[
256
];
LONG_PTR
prevWndProc
;
LONG_PTR
prevWndProc
;
HWND
window
;
HWND
window
;
if
(
!
pSendInput
)
{
skip
(
"SendInput is not available
\n
"
);
return
;
}
window
=
CreateWindow
(
"Static"
,
NULL
,
WS_POPUP
|
WS_HSCROLL
|
WS_VSCROLL
window
=
CreateWindow
(
"Static"
,
NULL
,
WS_POPUP
|
WS_HSCROLL
|
WS_VSCROLL
|
WS_VISIBLE
,
0
,
0
,
200
,
60
,
NULL
,
NULL
,
|
WS_VISIBLE
,
0
,
0
,
200
,
60
,
NULL
,
NULL
,
NULL
,
NULL
);
NULL
,
NULL
);
...
@@ -510,7 +521,7 @@ static void test_Input_blackbox(void)
...
@@ -510,7 +521,7 @@ static void test_Input_blackbox(void)
GetKeyboardState
(
ks1
);
GetKeyboardState
(
ks1
);
i
.
u
.
ki
.
dwFlags
=
sendinput_test
[
ii
].
dwFlags
;
i
.
u
.
ki
.
dwFlags
=
sendinput_test
[
ii
].
dwFlags
;
i
.
u
.
ki
.
wVk
=
sendinput_test
[
ii
].
wVk
;
i
.
u
.
ki
.
wVk
=
sendinput_test
[
ii
].
wVk
;
SendInput
(
1
,
(
INPUT
*
)
&
i
,
sizeof
(
TEST_INPUT
));
p
SendInput
(
1
,
(
INPUT
*
)
&
i
,
sizeof
(
TEST_INPUT
));
empty_message_queue
();
empty_message_queue
();
GetKeyboardState
(
ks2
);
GetKeyboardState
(
ks2
);
compare_and_check
(
ii
,
ks1
,
ks2
,
compare_and_check
(
ii
,
ks1
,
ks2
,
...
@@ -665,7 +676,13 @@ static void test_mouse_ll_hook(void)
...
@@ -665,7 +676,13 @@ static void test_mouse_ll_hook(void)
START_TEST
(
input
)
START_TEST
(
input
)
{
{
test_Input_whitebox
();
init_function_pointers
();
if
(
!
pSendInput
)
skip
(
"SendInput is not available
\n
"
);
else
test_Input_whitebox
();
test_Input_blackbox
();
test_Input_blackbox
();
test_keynames
();
test_keynames
();
test_mouse_ll_hook
();
test_mouse_ll_hook
();
...
...
dlls/user32/tests/menu.c
View file @
5748f158
...
@@ -37,8 +37,25 @@
...
@@ -37,8 +37,25 @@
static
ATOM
atomMenuCheckClass
;
static
ATOM
atomMenuCheckClass
;
static
BOOL
(
WINAPI
*
pSetMenuInfo
)(
HMENU
,
LPCMENUINFO
);
static
BOOL
(
WINAPI
*
pGetMenuInfo
)(
HMENU
,
LPCMENUINFO
);
static
BOOL
(
WINAPI
*
pGetMenuInfo
)(
HMENU
,
LPCMENUINFO
);
static
UINT
(
WINAPI
*
pSendInput
)(
UINT
,
INPUT
*
,
size_t
);
static
BOOL
(
WINAPI
*
pSetMenuInfo
)(
HMENU
,
LPCMENUINFO
);
static
void
init_function_pointers
(
void
)
{
HMODULE
hdll
=
GetModuleHandleA
(
"user32"
);
#define GET_PROC(func) \
p ## func = (void*)GetProcAddress(hdll, #func); \
if(!p ## func) \
trace("GetProcAddress(%s) failed\n", #func);
GET_PROC
(
GetMenuInfo
)
GET_PROC
(
SendInput
)
GET_PROC
(
SetMenuInfo
)
#undef GET_PROC
}
static
LRESULT
WINAPI
menu_check_wnd_proc
(
HWND
hwnd
,
UINT
msg
,
WPARAM
wparam
,
LPARAM
lparam
)
static
LRESULT
WINAPI
menu_check_wnd_proc
(
HWND
hwnd
,
UINT
msg
,
WPARAM
wparam
,
LPARAM
lparam
)
{
{
...
@@ -471,7 +488,11 @@ static void test_menu_bmp_and_string(void)
...
@@ -471,7 +488,11 @@ static void test_menu_bmp_and_string(void)
HWND
hwnd
;
HWND
hwnd
;
int
count
,
szidx
,
txtidx
,
bmpidx
,
hassub
,
mnuopt
,
ispop
;
int
count
,
szidx
,
txtidx
,
bmpidx
,
hassub
,
mnuopt
,
ispop
;
if
(
!
pGetMenuInfo
)
return
;
if
(
!
pGetMenuInfo
)
{
skip
(
"GetMenuInfo is not available
\n
"
);
return
;
}
memset
(
bmfill
,
0x55
,
sizeof
(
bmfill
));
memset
(
bmfill
,
0x55
,
sizeof
(
bmfill
));
hwnd
=
CreateWindowEx
(
0
,
MAKEINTATOM
(
atomMenuCheckClass
),
NULL
,
hwnd
=
CreateWindowEx
(
0
,
MAKEINTATOM
(
atomMenuCheckClass
),
NULL
,
...
@@ -1674,7 +1695,7 @@ static void send_key(WORD wVk)
...
@@ -1674,7 +1695,7 @@ static void send_key(WORD wVk)
i
[
0
].
type
=
i
[
1
].
type
=
INPUT_KEYBOARD
;
i
[
0
].
type
=
i
[
1
].
type
=
INPUT_KEYBOARD
;
i
[
0
].
u
.
ki
.
wVk
=
i
[
1
].
u
.
ki
.
wVk
=
wVk
;
i
[
0
].
u
.
ki
.
wVk
=
i
[
1
].
u
.
ki
.
wVk
=
wVk
;
i
[
1
].
u
.
ki
.
dwFlags
=
KEYEVENTF_KEYUP
;
i
[
1
].
u
.
ki
.
dwFlags
=
KEYEVENTF_KEYUP
;
SendInput
(
2
,
(
INPUT
*
)
i
,
sizeof
(
INPUT
));
p
SendInput
(
2
,
(
INPUT
*
)
i
,
sizeof
(
INPUT
));
}
}
static
void
click_menu
(
HANDLE
hWnd
,
struct
menu_item_pair_s
*
mi
)
static
void
click_menu
(
HANDLE
hWnd
,
struct
menu_item_pair_s
*
mi
)
...
@@ -1699,7 +1720,7 @@ static void click_menu(HANDLE hWnd, struct menu_item_pair_s *mi)
...
@@ -1699,7 +1720,7 @@ static void click_menu(HANDLE hWnd, struct menu_item_pair_s *mi)
i
[
0
].
u
.
mi
.
dwFlags
|=
MOUSEEVENTF_MOVE
;
i
[
0
].
u
.
mi
.
dwFlags
|=
MOUSEEVENTF_MOVE
;
i
[
1
].
u
.
mi
.
dwFlags
|=
MOUSEEVENTF_LEFTDOWN
;
i
[
1
].
u
.
mi
.
dwFlags
|=
MOUSEEVENTF_LEFTDOWN
;
i
[
2
].
u
.
mi
.
dwFlags
|=
MOUSEEVENTF_LEFTUP
;
i
[
2
].
u
.
mi
.
dwFlags
|=
MOUSEEVENTF_LEFTUP
;
SendInput
(
3
,
(
INPUT
*
)
i
,
sizeof
(
INPUT
));
p
SendInput
(
3
,
(
INPUT
*
)
i
,
sizeof
(
INPUT
));
/* hack to prevent mouse message buildup in Wine */
/* hack to prevent mouse message buildup in Wine */
while
(
PeekMessage
(
&
msg
,
0
,
0
,
0
,
PM_REMOVE
))
DispatchMessageA
(
&
msg
);
while
(
PeekMessage
(
&
msg
,
0
,
0
,
0
,
PM_REMOVE
))
DispatchMessageA
(
&
msg
);
...
@@ -2220,10 +2241,7 @@ static void test_InsertMenu(void)
...
@@ -2220,10 +2241,7 @@ static void test_InsertMenu(void)
START_TEST
(
menu
)
START_TEST
(
menu
)
{
{
pSetMenuInfo
=
init_function_pointers
();
(
void
*
)
GetProcAddress
(
GetModuleHandleA
(
"user32.dll"
),
"SetMenuInfo"
);
pGetMenuInfo
=
(
void
*
)
GetProcAddress
(
GetModuleHandleA
(
"user32.dll"
),
"GetMenuInfo"
);
register_menu_check_class
();
register_menu_check_class
();
...
@@ -2233,8 +2251,13 @@ START_TEST(menu)
...
@@ -2233,8 +2251,13 @@ START_TEST(menu)
test_menu_iteminfo
();
test_menu_iteminfo
();
test_menu_search_bycommand
();
test_menu_search_bycommand
();
test_menu_bmp_and_string
();
test_menu_bmp_and_string
();
test_menu_input
();
if
(
!
pSendInput
)
skip
(
"SendInput is not available
\n
"
);
else
test_menu_input
();
test_menu_flags
();
test_menu_flags
();
test_menu_hilitemenuitem
();
test_menu_hilitemenuitem
();
test_CheckMenuRadioItem
();
test_CheckMenuRadioItem
();
test_menu_resource_layout
();
test_menu_resource_layout
();
...
...
dlls/user32/tests/monitor.c
View file @
5748f158
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
#include "winuser.h"
#include "winuser.h"
static
HMODULE
hdll
;
static
HMODULE
hdll
;
static
LONG
(
WINAPI
*
pChangeDisplaySettingsExA
)(
LPCSTR
,
LPDEVMODEA
,
HWND
,
DWORD
,
LPVOID
);
static
BOOL
(
WINAPI
*
pEnumDisplayDevicesA
)(
LPCSTR
,
DWORD
,
LPDISPLAY_DEVICEA
,
DWORD
);
static
BOOL
(
WINAPI
*
pEnumDisplayDevicesA
)(
LPCSTR
,
DWORD
,
LPDISPLAY_DEVICEA
,
DWORD
);
static
BOOL
(
WINAPI
*
pEnumDisplayMonitors
)(
HDC
,
LPRECT
,
MONITORENUMPROC
,
LPARAM
);
static
BOOL
(
WINAPI
*
pEnumDisplayMonitors
)(
HDC
,
LPRECT
,
MONITORENUMPROC
,
LPARAM
);
static
BOOL
(
WINAPI
*
pGetMonitorInfoA
)(
HMONITOR
,
LPMONITORINFO
);
static
BOOL
(
WINAPI
*
pGetMonitorInfoA
)(
HMONITOR
,
LPMONITORINFO
);
...
@@ -33,11 +34,20 @@ static HMONITOR (WINAPI *pMonitorFromWindow)(HWND,DWORD);
...
@@ -33,11 +34,20 @@ static HMONITOR (WINAPI *pMonitorFromWindow)(HWND,DWORD);
static
void
init_function_pointers
(
void
)
static
void
init_function_pointers
(
void
)
{
{
hdll
=
GetModuleHandleA
(
"user32.dll"
);
hdll
=
GetModuleHandleA
(
"user32.dll"
);
pEnumDisplayDevicesA
=
(
void
*
)
GetProcAddress
(
hdll
,
"EnumDisplayDevicesA"
);
pEnumDisplayMonitors
=
(
void
*
)
GetProcAddress
(
hdll
,
"EnumDisplayMonitors"
);
#define GET_PROC(func) \
pGetMonitorInfoA
=
(
void
*
)
GetProcAddress
(
hdll
,
"GetMonitorInfoA"
);
p ## func = (void*)GetProcAddress(hdll, #func); \
pMonitorFromPoint
=
(
void
*
)
GetProcAddress
(
hdll
,
"MonitorFromPoint"
);
if(!p ## func) \
pMonitorFromWindow
=
(
void
*
)
GetProcAddress
(
hdll
,
"MonitorFromWindow"
);
trace("GetProcAddress(%s) failed\n", #func);
GET_PROC
(
ChangeDisplaySettingsExA
)
GET_PROC
(
EnumDisplayDevicesA
)
GET_PROC
(
EnumDisplayMonitors
)
GET_PROC
(
GetMonitorInfoA
)
GET_PROC
(
MonitorFromPoint
)
GET_PROC
(
MonitorFromWindow
)
#undef GET_PROC
}
}
static
BOOL
CALLBACK
monitor_enum_proc
(
HMONITOR
hmon
,
HDC
hdc
,
LPRECT
lprc
,
static
BOOL
CALLBACK
monitor_enum_proc
(
HMONITOR
hmon
,
HDC
hdc
,
LPRECT
lprc
,
...
@@ -129,6 +139,12 @@ static void test_ChangeDisplaySettingsEx(void)
...
@@ -129,6 +139,12 @@ static void test_ChangeDisplaySettingsEx(void)
LONG
res
;
LONG
res
;
int
i
;
int
i
;
if
(
!
pChangeDisplaySettingsExA
)
{
skip
(
"ChangeDisplaySettingsExA is not available
\n
"
);
return
;
}
memset
(
&
dm
,
0
,
sizeof
(
dm
));
memset
(
&
dm
,
0
,
sizeof
(
dm
));
dm
.
dmSize
=
sizeof
(
dm
);
dm
.
dmSize
=
sizeof
(
dm
);
...
@@ -139,7 +155,7 @@ static void test_ChangeDisplaySettingsEx(void)
...
@@ -139,7 +155,7 @@ static void test_ChangeDisplaySettingsEx(void)
dm
.
dmBitsPerPel
=
vid_modes_test
[
i
].
bpp
;
dm
.
dmBitsPerPel
=
vid_modes_test
[
i
].
bpp
;
dm
.
dmDisplayFrequency
=
vid_modes_test
[
i
].
freq
;
dm
.
dmDisplayFrequency
=
vid_modes_test
[
i
].
freq
;
dm
.
dmFields
=
vid_modes_test
[
i
].
fields
;
dm
.
dmFields
=
vid_modes_test
[
i
].
fields
;
res
=
ChangeDisplaySettingsEx
(
NULL
,
&
dm
,
NULL
,
CDS_FULLSCREEN
,
NULL
);
res
=
pChangeDisplaySettingsExA
(
NULL
,
&
dm
,
NULL
,
CDS_FULLSCREEN
,
NULL
);
ok
(
vid_modes_test
[
i
].
success
?
ok
(
vid_modes_test
[
i
].
success
?
(
res
==
DISP_CHANGE_SUCCESSFUL
)
:
(
res
==
DISP_CHANGE_SUCCESSFUL
)
:
(
res
==
DISP_CHANGE_BADMODE
||
res
==
DISP_CHANGE_BADPARAM
),
(
res
==
DISP_CHANGE_BADMODE
||
res
==
DISP_CHANGE_BADPARAM
),
...
@@ -172,7 +188,7 @@ static void test_ChangeDisplaySettingsEx(void)
...
@@ -172,7 +188,7 @@ static void test_ChangeDisplaySettingsEx(void)
ok
(
EqualRect
(
&
r
,
&
virt
),
"Invalid clip rect: (%d %d) x (%d %d)
\n
"
,
r
.
left
,
r
.
top
,
r
.
right
,
r
.
bottom
);
ok
(
EqualRect
(
&
r
,
&
virt
),
"Invalid clip rect: (%d %d) x (%d %d)
\n
"
,
r
.
left
,
r
.
top
,
r
.
right
,
r
.
bottom
);
}
}
}
}
res
=
ChangeDisplaySettingsEx
(
NULL
,
NULL
,
NULL
,
CDS_RESET
,
NULL
);
res
=
pChangeDisplaySettingsExA
(
NULL
,
NULL
,
NULL
,
CDS_RESET
,
NULL
);
ok
(
res
==
DISP_CHANGE_SUCCESSFUL
,
"Failed to reset default resolution: %d
\n
"
,
res
);
ok
(
res
==
DISP_CHANGE_SUCCESSFUL
,
"Failed to reset default resolution: %d
\n
"
,
res
);
}
}
...
@@ -202,4 +218,6 @@ START_TEST(monitor)
...
@@ -202,4 +218,6 @@ START_TEST(monitor)
test_ChangeDisplaySettingsEx
();
test_ChangeDisplaySettingsEx
();
if
(
pMonitorFromPoint
&&
pMonitorFromWindow
)
if
(
pMonitorFromPoint
&&
pMonitorFromWindow
)
test_monitors
();
test_monitors
();
else
skip
(
"MonitorFromPoint and/or MonitorFromWindow are not available
\n
"
);
}
}
dlls/user32/tests/msg.c
View file @
5748f158
...
@@ -54,11 +54,6 @@
...
@@ -54,11 +54,6 @@
static
BOOL
test_DestroyWindow_flag
;
static
BOOL
test_DestroyWindow_flag
;
static
HWINEVENTHOOK
hEvent_hook
;
static
HWINEVENTHOOK
hEvent_hook
;
static
HWND
(
WINAPI
*
pGetAncestor
)(
HWND
,
UINT
);
static
void
(
WINAPI
*
pNotifyWinEvent
)(
DWORD
,
HWND
,
LONG
,
LONG
);
static
HWINEVENTHOOK
(
WINAPI
*
pSetWinEventHook
)(
DWORD
,
DWORD
,
HMODULE
,
WINEVENTPROC
,
DWORD
,
DWORD
,
DWORD
);
static
BOOL
(
WINAPI
*
pUnhookWinEvent
)(
HWINEVENTHOOK
);
static
void
dump_winpos_flags
(
UINT
flags
);
static
void
dump_winpos_flags
(
UINT
flags
);
static
const
WCHAR
testWindowClassW
[]
=
static
const
WCHAR
testWindowClassW
[]
=
...
@@ -1407,22 +1402,35 @@ static int sequence_cnt, sequence_size;
...
@@ -1407,22 +1402,35 @@ static int sequence_cnt, sequence_size;
static
struct
message
*
sequence
;
static
struct
message
*
sequence
;
static
int
log_all_parent_messages
;
static
int
log_all_parent_messages
;
/* user32 functions */
static
HWND
(
WINAPI
*
pGetAncestor
)(
HWND
,
UINT
);
static
void
(
WINAPI
*
pNotifyWinEvent
)(
DWORD
,
HWND
,
LONG
,
LONG
);
static
HWINEVENTHOOK
(
WINAPI
*
pSetWinEventHook
)(
DWORD
,
DWORD
,
HMODULE
,
WINEVENTPROC
,
DWORD
,
DWORD
,
DWORD
);
static
BOOL
(
WINAPI
*
pTrackMouseEvent
)(
TRACKMOUSEEVENT
*
);
static
BOOL
(
WINAPI
*
pUnhookWinEvent
)(
HWINEVENTHOOK
);
/* kernel32 functions */
static
BOOL
(
WINAPI
*
pGetCPInfoExA
)(
UINT
,
DWORD
,
LPCPINFOEXA
);
static
void
init_procs
(
void
)
static
void
init_procs
(
void
)
{
{
HMODULE
user32
=
GetModuleHandleA
(
"user32.dll"
);
HMODULE
user32
=
GetModuleHandleA
(
"user32.dll"
);
HMODULE
kernel32
=
GetModuleHandleA
(
"kernel32.dll"
);
#define
USER32_GET_PROC(
func) \
#define
GET_PROC(dll,
func) \
p ## func = (void*)GetProcAddress(
user32
, #func); \
p ## func = (void*)GetProcAddress(
dll
, #func); \
if(!p ## func) { \
if(!p ## func) { \
trace("GetProcAddress(%s) failed\n", #func); \
trace("GetProcAddress(%s) failed\n", #func); \
}
}
USER32_GET_PROC
(
GetAncestor
)
GET_PROC
(
user32
,
GetAncestor
)
USER32_GET_PROC
(
NotifyWinEvent
)
GET_PROC
(
user32
,
NotifyWinEvent
)
USER32_GET_PROC
(
SetWinEventHook
)
GET_PROC
(
user32
,
SetWinEventHook
)
USER32_GET_PROC
(
UnhookWinEvent
)
GET_PROC
(
user32
,
TrackMouseEvent
)
GET_PROC
(
user32
,
UnhookWinEvent
)
#undef USER32_GET_PROC
GET_PROC
(
kernel32
,
GetCPInfoExA
)
#undef GET_PROC
}
}
static
void
add_message
(
const
struct
message
*
msg
)
static
void
add_message
(
const
struct
message
*
msg
)
...
@@ -8478,7 +8486,7 @@ static void test_TrackMouseEvent(void)
...
@@ -8478,7 +8486,7 @@ static void test_TrackMouseEvent(void)
tme.hwndTrack = track_hwnd; \
tme.hwndTrack = track_hwnd; \
tme.dwHoverTime = track_hover_time; \
tme.dwHoverTime = track_hover_time; \
SetLastError(0xdeadbeef); \
SetLastError(0xdeadbeef); \
ret = TrackMouseEvent(&tme); \
ret =
p
TrackMouseEvent(&tme); \
ok(ret, "TrackMouseEvent(TME_HOVER) error %d\n", GetLastError())
ok(ret, "TrackMouseEvent(TME_HOVER) error %d\n", GetLastError())
#define track_query(expected_track_flags, expected_track_hwnd, expected_hover_time) \
#define track_query(expected_track_flags, expected_track_hwnd, expected_hover_time) \
...
@@ -8487,7 +8495,7 @@ static void test_TrackMouseEvent(void)
...
@@ -8487,7 +8495,7 @@ static void test_TrackMouseEvent(void)
tme.hwndTrack = (HWND)0xdeadbeef; \
tme.hwndTrack = (HWND)0xdeadbeef; \
tme.dwHoverTime = 0xdeadbeef; \
tme.dwHoverTime = 0xdeadbeef; \
SetLastError(0xdeadbeef); \
SetLastError(0xdeadbeef); \
ret = TrackMouseEvent(&tme); \
ret =
p
TrackMouseEvent(&tme); \
ok(ret, "TrackMouseEvent(TME_QUERY) error %d\n", GetLastError());\
ok(ret, "TrackMouseEvent(TME_QUERY) error %d\n", GetLastError());\
ok(tme.cbSize == sizeof(tme), "wrong tme.cbSize %u\n", tme.cbSize); \
ok(tme.cbSize == sizeof(tme), "wrong tme.cbSize %u\n", tme.cbSize); \
ok(tme.dwFlags == (expected_track_flags), \
ok(tme.dwFlags == (expected_track_flags), \
...
@@ -8503,7 +8511,7 @@ static void test_TrackMouseEvent(void)
...
@@ -8503,7 +8511,7 @@ static void test_TrackMouseEvent(void)
tme.hwndTrack = track_hwnd; \
tme.hwndTrack = track_hwnd; \
tme.dwHoverTime = 0xdeadbeef; \
tme.dwHoverTime = 0xdeadbeef; \
SetLastError(0xdeadbeef); \
SetLastError(0xdeadbeef); \
ret = TrackMouseEvent(&tme); \
ret =
p
TrackMouseEvent(&tme); \
ok(ret, "TrackMouseEvent(TME_HOVER | TME_CANCEL) error %d\n", GetLastError())
ok(ret, "TrackMouseEvent(TME_HOVER | TME_CANCEL) error %d\n", GetLastError())
default_hover_time
=
0xdeadbeef
;
default_hover_time
=
0xdeadbeef
;
...
@@ -8543,7 +8551,7 @@ static void test_TrackMouseEvent(void)
...
@@ -8543,7 +8551,7 @@ static void test_TrackMouseEvent(void)
tme
.
hwndTrack
=
(
HWND
)
0xdeadbeef
;
tme
.
hwndTrack
=
(
HWND
)
0xdeadbeef
;
tme
.
dwHoverTime
=
0xdeadbeef
;
tme
.
dwHoverTime
=
0xdeadbeef
;
SetLastError
(
0xdeadbeef
);
SetLastError
(
0xdeadbeef
);
ret
=
TrackMouseEvent
(
&
tme
);
ret
=
p
TrackMouseEvent
(
&
tme
);
ok
(
!
ret
,
"TrackMouseEvent should fail
\n
"
);
ok
(
!
ret
,
"TrackMouseEvent should fail
\n
"
);
ok
(
GetLastError
()
==
ERROR_INVALID_PARAMETER
,
"not expected error %d
\n
"
,
GetLastError
());
ok
(
GetLastError
()
==
ERROR_INVALID_PARAMETER
,
"not expected error %d
\n
"
,
GetLastError
());
...
@@ -8552,7 +8560,7 @@ static void test_TrackMouseEvent(void)
...
@@ -8552,7 +8560,7 @@ static void test_TrackMouseEvent(void)
tme
.
hwndTrack
=
(
HWND
)
0xdeadbeef
;
tme
.
hwndTrack
=
(
HWND
)
0xdeadbeef
;
tme
.
dwHoverTime
=
0xdeadbeef
;
tme
.
dwHoverTime
=
0xdeadbeef
;
SetLastError
(
0xdeadbeef
);
SetLastError
(
0xdeadbeef
);
ret
=
TrackMouseEvent
(
&
tme
);
ret
=
p
TrackMouseEvent
(
&
tme
);
ok
(
!
ret
,
"TrackMouseEvent should fail
\n
"
);
ok
(
!
ret
,
"TrackMouseEvent should fail
\n
"
);
ok
(
GetLastError
()
==
ERROR_INVALID_WINDOW_HANDLE
,
"not expected error %d
\n
"
,
GetLastError
());
ok
(
GetLastError
()
==
ERROR_INVALID_WINDOW_HANDLE
,
"not expected error %d
\n
"
,
GetLastError
());
...
@@ -8561,7 +8569,7 @@ static void test_TrackMouseEvent(void)
...
@@ -8561,7 +8569,7 @@ static void test_TrackMouseEvent(void)
tme
.
hwndTrack
=
(
HWND
)
0xdeadbeef
;
tme
.
hwndTrack
=
(
HWND
)
0xdeadbeef
;
tme
.
dwHoverTime
=
0xdeadbeef
;
tme
.
dwHoverTime
=
0xdeadbeef
;
SetLastError
(
0xdeadbeef
);
SetLastError
(
0xdeadbeef
);
ret
=
TrackMouseEvent
(
&
tme
);
ret
=
p
TrackMouseEvent
(
&
tme
);
ok
(
!
ret
,
"TrackMouseEvent should fail
\n
"
);
ok
(
!
ret
,
"TrackMouseEvent should fail
\n
"
);
ok
(
GetLastError
()
==
ERROR_INVALID_WINDOW_HANDLE
,
"not expected error %d
\n
"
,
GetLastError
());
ok
(
GetLastError
()
==
ERROR_INVALID_WINDOW_HANDLE
,
"not expected error %d
\n
"
,
GetLastError
());
...
@@ -9288,7 +9296,7 @@ static void test_dbcs_wm_char(void)
...
@@ -9288,7 +9296,7 @@ static void test_dbcs_wm_char(void)
UINT
i
,
j
,
k
;
UINT
i
,
j
,
k
;
struct
message
wmCharSeq
[
2
];
struct
message
wmCharSeq
[
2
];
GetCPInfoExA
(
CP_ACP
,
0
,
&
cpinfo
);
p
GetCPInfoExA
(
CP_ACP
,
0
,
&
cpinfo
);
if
(
cpinfo
.
MaxCharSize
!=
2
)
if
(
cpinfo
.
MaxCharSize
!=
2
)
{
{
skip
(
"Skipping DBCS WM_CHAR test in SBCS codepage '%s'
\n
"
,
cpinfo
.
CodePageName
);
skip
(
"Skipping DBCS WM_CHAR test in SBCS codepage '%s'
\n
"
,
cpinfo
.
CodePageName
);
...
@@ -9616,7 +9624,12 @@ START_TEST(msg)
...
@@ -9616,7 +9624,12 @@ START_TEST(msg)
test_SendMessageTimeout
();
test_SendMessageTimeout
();
test_edit_messages
();
test_edit_messages
();
test_quit_message
();
test_quit_message
();
test_TrackMouseEvent
();
if
(
!
pTrackMouseEvent
)
skip
(
"TrackMouseEvent is not available
\n
"
);
else
test_TrackMouseEvent
();
test_SetWindowRgn
();
test_SetWindowRgn
();
test_sys_menu
();
test_sys_menu
();
test_dialog_messages
();
test_dialog_messages
();
...
@@ -9635,4 +9648,6 @@ START_TEST(msg)
...
@@ -9635,4 +9648,6 @@ START_TEST(msg)
GetLastError
()
==
0xdeadbeef
,
/* Win9x */
GetLastError
()
==
0xdeadbeef
,
/* Win9x */
"unexpected error %d
\n
"
,
GetLastError
());
"unexpected error %d
\n
"
,
GetLastError
());
}
}
else
skip
(
"UnhookWinEvent is not available
\n
"
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment