Hello, This patch #1 of 3 applies on top of the menu conformance test sent earlier in the day. This patch enables the menu WndProc to recognize VK_LMENU and VK_RMENU messages. Thanks, Thomas Kho 2006-04-26 Thomas Kho * dlls/user/tests/menu.c: user: Allow menu WndProc to recognize VK_[LR]MENU defwnd.c | 7 ++++--- tests/menu.c | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 15 deletions(-) Signed-off-by: Thomas Kho diff -aur ../1/dlls/user/defwnd.c ./dlls/user/defwnd.c --- ../1/dlls/user/defwnd.c 2006-04-26 17:16:15.000000000 -0700 +++ ./dlls/user/defwnd.c 2006-04-26 17:16:34.000000000 -0700 @@ -527,7 +527,8 @@ if( HIWORD(lParam) & KEYDATA_ALT ) { /* if( HIWORD(lParam) & ~KEYDATA_PREVSTATE ) */ - if( wParam == VK_MENU && !iMenuSysKey ) + if ( (wParam == VK_MENU || wParam == VK_LMENU + || wParam == VK_RMENU) && !iMenuSysKey ) iMenuSysKey = 1; else iMenuSysKey = 0; @@ -550,8 +551,8 @@ case WM_KEYUP: case WM_SYSKEYUP: /* Press and release F10 or ALT */ - if (((wParam == VK_MENU) && iMenuSysKey) || - ((wParam == VK_F10) && iF10Key)) + if (((wParam == VK_MENU || wParam == VK_LMENU || wParam == VK_RMENU) + && iMenuSysKey) || ((wParam == VK_F10) && iF10Key)) SendMessageW( GetAncestor( hwnd, GA_ROOT ), WM_SYSCOMMAND, SC_KEYMENU, 0L ); iMenuSysKey = iF10Key = 0; break; diff -aur ../1/dlls/user/tests/menu.c ./dlls/user/tests/menu.c --- ../1/dlls/user/tests/menu.c 2006-04-26 17:16:22.000000000 -0700 +++ ./dlls/user/tests/menu.c 2006-04-26 17:16:36.000000000 -0700 @@ -1506,23 +1506,23 @@ BOOL _todo_wine; } menu_tests[] = { /* for each test, send keys or clicks and check for menu visibility */ - { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 0}, TRUE, TRUE }, /* test 0 */ + { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 0}, TRUE, FALSE }, /* test 0 */ { INPUT_KEYBOARD, {{0}}, {VK_ESCAPE, 0}, FALSE, FALSE }, - { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 0}, TRUE, TRUE }, - { INPUT_KEYBOARD, {{0}}, {'D', 0}, FALSE, FALSE }, - { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 0}, TRUE, TRUE }, + { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 0}, TRUE, FALSE }, + { INPUT_KEYBOARD, {{0}}, {'D', 0}, FALSE, TRUE }, + { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 0}, TRUE, FALSE }, { INPUT_KEYBOARD, {{0}}, {'E', 0}, FALSE, FALSE }, - { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 0}, TRUE, TRUE }, + { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 0}, TRUE, FALSE }, { INPUT_KEYBOARD, {{0}}, {VK_ESCAPE, VK_ESCAPE, 0}, FALSE, FALSE }, - { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', VK_ESCAPE, 0}, TRUE, TRUE }, + { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', VK_ESCAPE, 0}, TRUE, FALSE }, { INPUT_KEYBOARD, {{0}}, {VK_ESCAPE, 0}, FALSE, FALSE }, - { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 0}, TRUE, TRUE }, - { INPUT_KEYBOARD, {{0}}, {'D', 0}, FALSE, FALSE }, - { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 0}, TRUE, TRUE }, + { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 0}, TRUE, FALSE }, + { INPUT_KEYBOARD, {{0}}, {'D', 0}, FALSE, TRUE }, + { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 0}, TRUE, FALSE }, { INPUT_KEYBOARD, {{0}}, {'E', 0}, FALSE, FALSE }, - { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 'P', 0}, TRUE, TRUE }, - { INPUT_KEYBOARD, {{0}}, {'D', 0}, FALSE, FALSE }, - { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 'P', 0}, TRUE, TRUE }, + { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 'P', 0}, TRUE, FALSE }, + { INPUT_KEYBOARD, {{0}}, {'D', 0}, FALSE, TRUE }, + { INPUT_KEYBOARD, {{0}}, {VK_LMENU, 'M', 'P', 0}, TRUE, FALSE }, { INPUT_KEYBOARD, {{0}}, {'E', 0}, FALSE, FALSE }, { INPUT_MOUSE, {{1, 2}, {0}}, {0}, TRUE, TRUE }, /* test 18 */