Alexandre Julliard : user32/tests: Add more systematic support for ignoring certain messages.
Alexandre Julliard
julliard at winehq.org
Tue May 12 09:08:47 CDT 2009
Module: wine
Branch: master
Commit: d6c8a003e106921e0a2f1de918b0a71eed3e9dc8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d6c8a003e106921e0a2f1de918b0a71eed3e9dc8
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue May 12 12:09:30 2009 +0200
user32/tests: Add more systematic support for ignoring certain messages.
---
dlls/user32/tests/msg.c | 77 +++++++++++++++++++---------------------------
dlls/user32/tests/win.c | 12 +++++++-
2 files changed, 43 insertions(+), 46 deletions(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 782ab8a..6f6b5bd 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -1557,6 +1557,8 @@ static const struct message WmEnableWindowSeq_1[] =
{
{ WM_CANCELMODE, sent|wparam|lparam, 0, 0 },
{ EVENT_OBJECT_STATECHANGE, winevent_hook|wparam|lparam, 0, 0 },
+ { HCBT_SETFOCUS, hook|optional },
+ { WM_KILLFOCUS, sent|optional },
{ WM_ENABLE, sent|wparam|lparam, FALSE, 0 },
{ 0 }
};
@@ -1759,6 +1761,16 @@ static const char *get_winpos_flags(UINT flags)
#undef DUMP
}
+static BOOL ignore_message( UINT message )
+{
+ /* these are always ignored */
+ return (message >= 0xc000 ||
+ message == WM_GETICON ||
+ message == WM_GETOBJECT ||
+ message == WM_TIMECHANGE ||
+ message == WM_DEVICECHANGE);
+}
+
#define add_message(msg) add_message_(__LINE__,msg);
static void add_message_(int line, const struct recvd_message *msg)
@@ -1863,6 +1875,8 @@ static void add_message_(int line, const struct recvd_message *msg)
sprintf( seq->output, "%s: %p %04x wp %08lx lp %08lx",
msg->descr, msg->hwnd, msg->message, msg->wParam, msg->lParam );
}
+ if (msg->flags & (sent|posted|parent|defwinproc|beginpaint))
+ sprintf( seq->output + strlen(seq->output), " (flags %x)", msg->flags );
}
}
@@ -3202,9 +3216,7 @@ static LRESULT WINAPI mdi_client_hook_proc(HWND hwnd, UINT message, WPARAM wPara
message != WM_NCHITTEST &&
message != WM_GETTEXT &&
message != WM_MDIGETACTIVE &&
- message != WM_GETICON &&
- message != WM_GETOBJECT &&
- message != WM_DEVICECHANGE)
+ !ignore_message( message ))
{
msg.hwnd = hwnd;
msg.message = message;
@@ -3231,9 +3243,7 @@ static LRESULT WINAPI mdi_child_wnd_proc(HWND hwnd, UINT message, WPARAM wParam,
message != WM_ERASEBKGND &&
message != WM_NCHITTEST &&
message != WM_GETTEXT &&
- message != WM_GETICON &&
- message != WM_GETOBJECT &&
- message != WM_DEVICECHANGE)
+ !ignore_message( message ))
{
switch (message)
{
@@ -3281,9 +3291,7 @@ static LRESULT WINAPI mdi_frame_wnd_proc(HWND hwnd, UINT message, WPARAM wParam,
message != WM_ERASEBKGND &&
message != WM_NCHITTEST &&
message != WM_GETTEXT &&
- message != WM_GETICON &&
- message != WM_GETOBJECT &&
- message != WM_DEVICECHANGE)
+ !ignore_message( message ))
{
msg.hwnd = hwnd;
msg.message = message;
@@ -3898,16 +3906,15 @@ static INT_PTR CALLBACK TestModalDlgProcA(HWND hwnd, UINT message, WPARAM wParam
{
struct recvd_message msg;
+ if (ignore_message( message )) return 0;
+
switch (message)
{
/* ignore */
- case WM_GETICON:
- case WM_GETOBJECT:
case WM_MOUSEMOVE:
case WM_NCMOUSEMOVE:
case WM_NCMOUSELEAVE:
case WM_SETCURSOR:
- case WM_DEVICECHANGE:
return 0;
case WM_NCHITTEST:
return HTCLIENT;
@@ -5157,11 +5164,10 @@ static LRESULT CALLBACK button_hook_proc(HWND hwnd, UINT message, WPARAM wParam,
LRESULT ret;
struct recvd_message msg;
+ if (ignore_message( message )) return 0;
+
switch (message)
{
- case WM_GETICON:
- case WM_GETOBJECT:
- return 0; /* ignore them */
case WM_SYNCPAINT:
break;
case BM_SETSTATE:
@@ -5318,7 +5324,7 @@ static LRESULT CALLBACK static_hook_proc(HWND hwnd, UINT message, WPARAM wParam,
LRESULT ret;
struct recvd_message msg;
- if (message == WM_GETICON || message == WM_GETOBJECT) return 0; /* ignore them */
+ if (ignore_message( message )) return 0;
msg.hwnd = hwnd;
msg.message = message;
@@ -5420,9 +5426,7 @@ static LRESULT CALLBACK combobox_hook_proc(HWND hwnd, UINT message, WPARAM wPara
message != WM_ERASEBKGND &&
message != WM_NCHITTEST &&
message != WM_GETTEXT &&
- message != WM_GETICON &&
- message != WM_GETOBJECT &&
- message != WM_DEVICECHANGE)
+ !ignore_message( message ))
{
msg.hwnd = hwnd;
msg.message = message;
@@ -6657,10 +6661,8 @@ static void pump_msg_loop(HWND hwnd, HACCEL hAccel)
/* ignore some unwanted messages */
if (msg.message == WM_MOUSEMOVE ||
- msg.message == WM_GETICON ||
- msg.message == WM_GETOBJECT ||
msg.message == WM_TIMER ||
- msg.message == WM_DEVICECHANGE)
+ ignore_message( msg.message ))
continue;
log_msg.hwnd = msg.hwnd;
@@ -6902,8 +6904,7 @@ static LRESULT MsgCheckProc (BOOL unicode, HWND hwnd, UINT message,
LRESULT ret;
struct recvd_message msg;
- /* ignore registered messages */
- if (message >= 0xc000) return 0;
+ if (ignore_message( message )) return 0;
switch (message)
{
@@ -6966,9 +6967,6 @@ static LRESULT MsgCheckProc (BOOL unicode, HWND hwnd, UINT message,
case WM_MOUSEACTIVATE:
case WM_NCMOUSEMOVE:
case WM_SETCURSOR:
- case WM_GETICON:
- case WM_GETOBJECT:
- case WM_DEVICECHANGE:
case WM_IME_SELECT:
return 0;
}
@@ -7038,11 +7036,10 @@ static LRESULT WINAPI PopupMsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam,
LRESULT ret;
struct recvd_message msg;
+ if (ignore_message( message )) return 0;
+
switch (message)
{
- case WM_GETICON:
- case WM_GETOBJECT:
- return 0; /* ignore them */
case WM_QUERYENDSESSION:
case WM_ENDSESSION:
lParam &= ~0x01; /* Vista adds a 0x01 flag */
@@ -7078,10 +7075,7 @@ static LRESULT WINAPI ParentMsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam
LRESULT ret;
struct recvd_message msg;
- if (message == WM_GETICON || message == WM_GETOBJECT) return 0; /* ignore them */
-
- /* ignore registered messages */
- if (message >= 0xc000) return 0;
+ if (ignore_message( message )) return 0;
if (log_all_parent_messages ||
message == WM_PARENTNOTIFY || message == WM_CANCELMODE ||
@@ -7145,7 +7139,7 @@ static LRESULT WINAPI TestDlgProcA(HWND hwnd, UINT message, WPARAM wParam, LPARA
LRESULT ret;
struct recvd_message msg;
- if (message == WM_GETICON || message == WM_GETOBJECT) return 0; /* ignore them */
+ if (ignore_message( message )) return 0;
if (test_def_id)
{
@@ -8773,7 +8767,7 @@ static LRESULT CALLBACK edit_hook_proc(HWND hwnd, UINT message, WPARAM wParam, L
LRESULT ret;
struct recvd_message msg;
- if (message == WM_GETICON || message == WM_GETOBJECT) return 0; /* ignore them */
+ if (ignore_message( message )) return 0;
msg.hwnd = hwnd;
msg.message = message;
@@ -10271,12 +10265,7 @@ static INT_PTR WINAPI test_dlg_proc(HWND hwnd, UINT message, WPARAM wParam, LPAR
{
struct recvd_message msg;
- switch (message)
- {
- case WM_GETICON:
- case WM_GETOBJECT:
- return 0; /* ignore them */
- }
+ if (ignore_message( message )) return 0;
msg.hwnd = hwnd;
msg.message = message;
@@ -11052,9 +11041,7 @@ static LRESULT WINAPI listbox_hook_proc(HWND hwnd, UINT message, WPARAM wp, LPAR
message != WM_ERASEBKGND &&
message != WM_NCHITTEST &&
message != WM_GETTEXT &&
- message != WM_GETOBJECT &&
- message != WM_GETICON &&
- message != WM_DEVICECHANGE)
+ !ignore_message( message ))
{
msg.hwnd = hwnd;
msg.message = message;
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index 1f0420e..13e5d67 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -118,6 +118,16 @@ static void check_parents( HWND hwnd, HWND ga_parent, HWND gwl_parent, HWND get_
}
}
+static BOOL ignore_message( UINT message )
+{
+ /* these are always ignored */
+ return (message >= 0xc000 ||
+ message == WM_GETICON ||
+ message == WM_GETOBJECT ||
+ message == WM_TIMECHANGE ||
+ message == WM_DEVICECHANGE);
+}
+
static BOOL CALLBACK EnumChildProc( HWND hwndChild, LPARAM lParam)
{
(*(LPINT)lParam)++;
@@ -2713,7 +2723,7 @@ static BOOL wait_for_message( MSG *msg )
if (ret)
{
if (msg->message == WM_PAINT) DispatchMessage(msg);
- else if (msg->message < 0xc000) break; /* skip registered messages */
+ else if (!ignore_message(msg->message)) break;
}
else if (MsgWaitForMultipleObjects( 0, NULL, FALSE, 100, QS_ALLINPUT ) == WAIT_TIMEOUT) break;
}
More information about the wine-cvs
mailing list