diff --git a/win32ss/user/ntuser/defwnd.c b/win32ss/user/ntuser/defwnd.c index dba5c7b567b..3c5b0bbe9dc 100644 --- a/win32ss/user/ntuser/defwnd.c +++ b/win32ss/user/ntuser/defwnd.c @@ -697,6 +697,31 @@ IntDefWindowProc( UserDerefObjectCo(Wnd->spwndParent); break; + case WM_POPUPSYSTEMMENU: + { + /* This is an undocumented message used by the windows taskbar to + display the system menu of windows that belong to other processes. */ + USER_REFERENCE_ENTRY MenuRef, WndRef; + PMENU pMenu; + + ERR("WM_POPUPSYSTEMMENU\n"); + + pMenu = IntGetSystemMenu(Wnd, FALSE); + if (!pMenu) + break; + + UserRefObjectCo(pMenu, &MenuRef); + UserRefObjectCo(Wnd, &WndRef); + + co_IntSetForegroundWindow(Wnd); + IntTrackPopupMenuEx(pMenu, TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_SYSTEM_MENU, + LOWORD(lParam), HIWORD(lParam), Wnd, NULL); + + UserDerefObjectCo(pMenu); + UserDerefObjectCo(Wnd); + break; + } + case WM_KEYF1: { HELPINFO hi; diff --git a/win32ss/user/user32/windows/defwnd.c b/win32ss/user/user32/windows/defwnd.c index 70dad210604..f7a68fd84bb 100644 --- a/win32ss/user/user32/windows/defwnd.c +++ b/win32ss/user/user32/windows/defwnd.c @@ -327,21 +327,6 @@ User32DefWindowProc(HWND hWnd, case WM_DEVICECHANGE: return TRUE; - case WM_POPUPSYSTEMMENU: - { - /* This is an undocumented message used by the windows taskbar to - display the system menu of windows that belong to other processes. */ - HMENU menu = GetSystemMenu(hWnd, FALSE); - ERR("WM_POPUPSYSTEMMENU\n"); - if (menu) - { - SetForegroundWindow(hWnd); - TrackPopupMenu(menu, TPM_LEFTBUTTON|TPM_RIGHTBUTTON|TPM_SYSTEM_MENU, - LOWORD(lParam), HIWORD(lParam), 0, hWnd, NULL); - } - return 0; - } - case WM_RBUTTONUP: { POINT Pt; @@ -798,6 +783,7 @@ User32DefWindowProc(HWND hWnd, case WM_WINDOWPOSCHANGED: case WM_APPCOMMAND: case WM_SETCURSOR: + case WM_POPUPSYSTEMMENU: GoSS: { LRESULT lResult;