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)),
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;
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:
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
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;
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;
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;
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;
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;
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;
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;
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;
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;
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
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;
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;
event.m_eventObject = this;
event.m_keyCode = id;
- event.SetTimestamp(wxApp::sm_lastMessageTime); /* MATTHEW: timeStamp */
+ event.SetTimestamp(wxApp::sm_lastMessageTime);
POINT pt ;
GetCursorPos(&pt) ;
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)
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
// 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)