]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
Rewrote ConvertToStandardCommandArgs; resource.h correction; ntwxwin.mak
[wxWidgets.git] / src / msw / window.cpp
index 9470cf692b27e94854353b725c4e86b06f416ad7..39c8e6e12761ab19a22bbc2d18351ef1e49fe4ae 100644 (file)
@@ -238,10 +238,9 @@ wxWindow::wxWindow(void)
 
   wxSystemSettings settings;
 
-  m_backgroundColour = settings.GetSystemColour(wxSYS_COLOUR_WINDOW) ; ;
+  m_backgroundColour = settings.GetSystemColour(wxSYS_COLOUR_3DFACE) ;
+  // m_backgroundColour = settings.GetSystemColour(wxSYS_COLOUR_WINDOW) ; ;
   m_foregroundColour = *wxBLACK;
-  m_defaultForegroundColour = *wxBLACK ;
-  m_defaultBackgroundColour = settings.GetSystemColour(wxSYS_COLOUR_3DFACE) ;
 
 /*
     wxColour(GetRValue(GetSysColor(COLOR_WINDOW)),
@@ -437,9 +436,8 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
   wxSystemSettings settings;
 
   m_backgroundColour = settings.GetSystemColour(wxSYS_COLOUR_WINDOW) ; ;
+  // m_backgroundColour = settings.GetSystemColour(wxSYS_COLOUR_3DFACE) ;
   m_foregroundColour = *wxBLACK;
-  m_defaultForegroundColour = *wxBLACK ;
-  m_defaultBackgroundColour = settings.GetSystemColour(wxSYS_COLOUR_3DFACE) ;
 
   m_windowStyle = style;
 
@@ -1417,7 +1415,16 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
         case WM_QUERYENDSESSION:
         {
             // Same as WM_CLOSE, but inverted results. Thx Microsoft :-)
-            return MSWOnClose();
+//            return MSWOnClose();
+
+            return MSWOnQueryEndSession(lParam);
+            break;
+        }
+        case WM_ENDSESSION:
+        {
+            // Same as WM_CLOSE, but inverted results. Thx Microsoft :-)
+            MSWOnEndSession((wParam != 0), lParam);
+            return 0L;
             break;
         }
         case WM_CLOSE:
@@ -1585,6 +1592,38 @@ bool wxWindow::MSWOnClose(void)
   return FALSE;
 }
 
+// Return TRUE to end session, FALSE to veto end session.
+bool wxWindow::MSWOnQueryEndSession(long logOff)
+{
+    wxCloseEvent event(wxEVT_QUERY_END_SESSION, -1);
+    event.SetEventObject(wxTheApp);
+    event.SetCanVeto(TRUE);
+    event.SetLoggingOff( (logOff == ENDSESSION_LOGOFF) );
+    if ((this == wxTheApp->GetTopWindow()) && // Only send once
+         wxTheApp->ProcessEvent(event) && event.GetVeto())
+    {
+        return FALSE; // Veto!
+    }
+    else
+    {
+        return TRUE; // Don't veto
+    }
+}
+
+bool wxWindow::MSWOnEndSession(bool endSession, long logOff)
+{
+    wxCloseEvent event(wxEVT_END_SESSION, -1);
+    event.SetEventObject(wxTheApp);
+    event.SetCanVeto(FALSE);
+    event.SetLoggingOff( (logOff == ENDSESSION_LOGOFF) );
+    if (endSession &&                         // No need to send if the session isn't ending
+        (this == wxTheApp->GetTopWindow()) && // Only send once
+         wxTheApp->ProcessEvent(event))
+    {
+    }
+    return TRUE;
+}
+
 bool wxWindow::MSWOnDestroy(void)
 {
 #if WXDEBUG > 1
@@ -2140,7 +2179,7 @@ void wxWindow::MSWOnLButtonDown(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVENT_TYPE_LEFT_DOWN;
@@ -2159,7 +2198,7 @@ void wxWindow::MSWOnLButtonUp(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_LEFT_UP;
@@ -2175,10 +2214,10 @@ void wxWindow::MSWOnLButtonDClick(int x, int y, WXUINT flags)
   event.m_x = x; event.m_y = y;
   event.m_shiftDown = ((flags & MK_SHIFT) != 0);
   event.m_controlDown = ((flags & MK_CONTROL) != 0);
-  event.m_leftDown = ((flags & MK_LBUTTON != 0));
+  event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_LEFT_DCLICK;
@@ -2197,7 +2236,7 @@ void wxWindow::MSWOnMButtonDown(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_MIDDLE_DOWN;
@@ -2217,7 +2256,7 @@ void wxWindow::MSWOnMButtonUp(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_MIDDLE_UP;
@@ -2236,7 +2275,7 @@ void wxWindow::MSWOnMButtonDClick(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_MIDDLE_DCLICK;
@@ -2255,7 +2294,7 @@ void wxWindow::MSWOnRButtonDown(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_RIGHT_DOWN;
@@ -2275,7 +2314,7 @@ void wxWindow::MSWOnRButtonUp(int x, int y, WXUINT flags)
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
   event.m_eventObject = this;
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
 
   m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_RIGHT_UP;
 
@@ -2293,7 +2332,7 @@ void wxWindow::MSWOnRButtonDClick(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_RIGHT_DCLICK;
@@ -2326,7 +2365,7 @@ void wxWindow::MSWOnMouseMove(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   // Window gets a click down message followed by a mouse move
@@ -2358,7 +2397,7 @@ void wxWindow::MSWOnMouseEnter(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastEvent = wxEVT_ENTER_WINDOW;
@@ -2378,7 +2417,7 @@ void wxWindow::MSWOnMouseLeave(int x, int y, WXUINT flags)
   event.m_leftDown = ((flags & MK_LBUTTON) != 0);
   event.m_middleDown = ((flags & MK_MBUTTON) != 0);
   event.m_rightDown = ((flags & MK_RBUTTON) != 0);
-  event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+  event.SetTimestamp(wxApp::sm_lastMessageTime);
   event.m_eventObject = this;
 
   m_lastEvent = wxEVT_LEAVE_WINDOW;
@@ -2439,7 +2478,7 @@ void wxWindow::MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII)
 
     event.m_eventObject = this;
     event.m_keyCode = id;
-    event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+    event.SetTimestamp(wxApp::sm_lastMessageTime);
 
     POINT pt ;
     GetCursorPos(&pt) ;
@@ -2984,7 +3023,7 @@ int APIENTRY _EXPORT
       event.m_shiftDown = (::GetKeyState(VK_SHIFT)&0x100?TRUE:FALSE);
       event.m_controlDown = (::GetKeyState(VK_CONTROL)&0x100?TRUE:FALSE);
 /* end Albert's fix for control and shift key 26.5 */
-      event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+      event.SetTimestamp(wxApp::sm_lastMessageTime);
 
         wxWindow *win = wxGetActiveWindow();
         if (win)
@@ -4104,32 +4143,12 @@ void wxWindow::GetPositionConstraint(int *x, int *y) const
 
 bool wxWindow::Close(bool force)
 {
-  // Let's generalise it to work the same for any window.
-/*
-  if (!IsKindOf(CLASSINFO(wxDialog)) && !IsKindOf(CLASSINFO(wxFrame)))
-  {
-    this->Destroy();
-    return TRUE;
-  }
-*/
-
   wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId);
   event.SetEventObject(this);
   event.SetForce(force);
+  event.SetCanVeto(!force);
 
-  return GetEventHandler()->ProcessEvent(event);
-
-/*
-  if ( !force && event.GetVeto() )
-    return FALSE;
-
-  Show(FALSE);
-
-  if (!wxPendingDelete.Member(this))
-    wxPendingDelete.Append(this);
-
-  return TRUE;
-*/
+  return (GetEventHandler()->ProcessEvent(event) && !event.GetVeto());
 }
 
 wxObject* wxWindow::GetChild(int number) const
@@ -4382,7 +4401,7 @@ void wxWindow::OnIdle(wxIdleEvent& event)
             // Generate a LEAVE event
             m_mouseInWindow = FALSE;
 
-            int state;
+            int state = 0;
             if (::GetKeyState(VK_SHIFT) != 0)
                 state |= MK_SHIFT;
             if (::GetKeyState(VK_CONTROL) != 0)