[EXPLORER]

- Handle TWM_DOEXITWINDOWS in CTrayWindow. This message is sent from CDesktopWindow when it handles alt+f4 as an accelerator.
- Also handle SC_CLOSE for WM_SYSCOMMAND by calling ExitWindowsDialog.
- Fixes pressing alt+f4 in xp
- Now we have to make CDesktopWindow send TWM_DOEXITWINDOWS to the tray

svn path=/trunk/; revision=65555
This commit is contained in:
Giannis Adamopoulos
2014-12-03 17:16:53 +00:00
parent 079da15e39
commit e018794583
2 changed files with 30 additions and 7 deletions
+1
View File
@@ -159,6 +159,7 @@ void WINAPI _ShellDDEInit(BOOL bInit);
*/
#define TWM_OPENSTARTMENU (WM_USER + 260)
#define TWM_DOEXITWINDOWS (WM_USER + 342)
extern const GUID IID_IShellDesktopTray;
+29 -7
View File
@@ -2611,6 +2611,32 @@ HandleTrayContextMenu:
return TRUE;
}
LRESULT DoExitWindows()
{
ExitWindowsDialog(m_hWnd);
return 0;
}
LRESULT OnDoExitWindows(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
/*
* TWM_DOEXITWINDOWS is send by the CDesktopBrowserr to us to
* show the shutdown dialog
*/
return DoExitWindows();
}
LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if (wParam == SC_CLOSE)
{
return DoExitWindows();
}
bHandled = FALSE;
return TRUE;
}
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
LRESULT Ret = FALSE;
@@ -2675,13 +2701,7 @@ HandleTrayContextMenu:
case IDM_SHUTDOWN:
{
HINSTANCE hShell32;
EXITWINDLG ExitWinDlg;
hShell32 = GetModuleHandle(TEXT("SHELL32.DLL"));
ExitWinDlg = (EXITWINDLG) GetProcAddress(hShell32, (LPCSTR) 60);
ExitWinDlg(m_hWnd);
DoExitWindows();
break;
}
}
@@ -2794,6 +2814,7 @@ HandleTrayContextMenu:
/*MESSAGE_HANDLER(WM_DESTROY, OnDestroy)*/
MESSAGE_HANDLER(WM_NCHITTEST, OnNcHitTest)
MESSAGE_HANDLER(WM_COMMAND, OnCommand)
MESSAGE_HANDLER(WM_SYSCOMMAND, OnSysCommand)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
MESSAGE_HANDLER(WM_TIMER, OnTimer)
@@ -2813,6 +2834,7 @@ HandleTrayContextMenu:
MESSAGE_HANDLER(WM_NCMOUSEMOVE, OnMouseMove)
MESSAGE_HANDLER(WM_APP_TRAYDESTROY, OnAppTrayDestroy)
MESSAGE_HANDLER(TWM_OPENSTARTMENU, OnOpenStartMenu)
MESSAGE_HANDLER(TWM_DOEXITWINDOWS, OnDoExitWindows)
ALT_MSG_MAP(1)
END_MSG_MAP()