Author: gadamopoulos
Date: Wed Dec  3 17:16:53 2014
New Revision: 65555

URL: http://svn.reactos.org/svn/reactos?rev=65555&view=rev
Log:
[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

Modified:
    trunk/reactos/base/shell/explorer/precomp.h
    trunk/reactos/base/shell/explorer/traywnd.cpp

Modified: trunk/reactos/base/shell/explorer/precomp.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/explorer/precomp.h?rev=65555&r1=65554&r2=65555&view=diff
==============================================================================
--- trunk/reactos/base/shell/explorer/precomp.h [iso-8859-1] (original)
+++ trunk/reactos/base/shell/explorer/precomp.h [iso-8859-1] Wed Dec  3 
17:16:53 2014
@@ -159,6 +159,7 @@
  */
 
 #define TWM_OPENSTARTMENU (WM_USER + 260)
+#define TWM_DOEXITWINDOWS (WM_USER + 342)
 
 extern const GUID IID_IShellDesktopTray;
 

Modified: trunk/reactos/base/shell/explorer/traywnd.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/explorer/traywnd.cpp?rev=65555&r1=65554&r2=65555&view=diff
==============================================================================
--- trunk/reactos/base/shell/explorer/traywnd.cpp       [iso-8859-1] (original)
+++ trunk/reactos/base/shell/explorer/traywnd.cpp       [iso-8859-1] Wed Dec  3 
17:16:53 2014
@@ -2611,6 +2611,32 @@
         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 @@
 
             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 @@
         /*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 @@
         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()
 


Reply via email to