#define _WIN32_IE 0x0200
#endif
-#if _WIN32_IE >= 0x0300 && !defined(__MINGW32__)
+#if _WIN32_IE >= 0x0300 && \
+ (!defined(__MINGW32__) || wxCHECK_W32API_VERSION( 2, 0 ))
#include <shlwapi.h>
#endif
// NB: all "NoRedraw" classes must have the same names as the "normal" classes
// with NR suffix - wxWindow::MSWCreate() supposes this
-const wxChar *wxFrameClassName = wxT("wxFrameClass");
-const wxChar *wxFrameClassNameNoRedraw = wxT("wxFrameClassNR");
+const wxChar *wxCanvasClassName = wxT("wxWindowClass");
+const wxChar *wxCanvasClassNameNR = wxT("wxWindowClassNR");
const wxChar *wxMDIFrameClassName = wxT("wxMDIFrameClass");
const wxChar *wxMDIFrameClassNameNoRedraw = wxT("wxMDIFrameClassNR");
const wxChar *wxMDIChildFrameClassName = wxT("wxMDIChildFrameClass");
const wxChar *wxMDIChildFrameClassNameNoRedraw = wxT("wxMDIChildFrameClassNR");
-const wxChar *wxPanelClassName = wxT("wxPanelClass");
-const wxChar *wxPanelClassNameNR = wxT("wxPanelClassNR");
-const wxChar *wxCanvasClassName = wxT("wxCanvasClass");
-const wxChar *wxCanvasClassNameNR = wxT("wxCanvasClassNR");
HICON wxSTD_FRAME_ICON = (HICON) NULL;
HICON wxSTD_MDICHILDFRAME_ICON = (HICON) NULL;
bool wxApp::RegisterWindowClasses()
{
WNDCLASS wndclass;
+ wxZeroMemory(wndclass);
// for each class we register one with CS_(V|H)REDRAW style and one
// without for windows created with wxNO_FULL_REDRAW_ON_REPAINT flag
// the fields which are common to all classes
wndclass.lpfnWndProc = (WNDPROC)wxWndProc;
- wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = sizeof( DWORD ); // VZ: what is this DWORD used for?
wndclass.hInstance = wxhInstance;
- wndclass.hIcon = (HICON) NULL;
wndclass.hCursor = ::LoadCursor((HINSTANCE)NULL, IDC_ARROW);
- wndclass.lpszMenuName = NULL;
// Register the frame window class.
wndclass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1);
- wndclass.lpszClassName = wxFrameClassName;
+ wndclass.lpszClassName = wxCanvasClassName;
wndclass.style = styleNormal;
if ( !RegisterClass(&wndclass) )
{
wxLogLastError(wxT("RegisterClass(frame)"));
-
- return FALSE;
}
// "no redraw" frame
- wndclass.lpszClassName = wxFrameClassNameNoRedraw;
+ wndclass.lpszClassName = wxCanvasClassNameNR;
wndclass.style = styleNoRedraw;
if ( !RegisterClass(&wndclass) )
{
wxLogLastError(wxT("RegisterClass(no redraw frame)"));
-
- return FALSE;
}
// Register the MDI frame window class.
if ( !RegisterClass(&wndclass) )
{
wxLogLastError(wxT("RegisterClass(MDI parent)"));
-
- return FALSE;
}
// "no redraw" MDI frame
if ( !RegisterClass(&wndclass) )
{
wxLogLastError(wxT("RegisterClass(no redraw MDI parent frame)"));
-
- return FALSE;
}
// Register the MDI child frame window class.
if ( !RegisterClass(&wndclass) )
{
wxLogLastError(wxT("RegisterClass(MDI child)"));
-
- return FALSE;
}
// "no redraw" MDI child frame
if ( !RegisterClass(&wndclass) )
{
wxLogLastError(wxT("RegisterClass(no redraw MDI child)"));
-
- return FALSE;
- }
-
- // Register the panel window class.
- wndclass.hbrBackground = (HBRUSH) GetStockObject( LTGRAY_BRUSH );
- wndclass.lpszClassName = wxPanelClassName;
- wndclass.style = styleNormal;
-
- if ( !RegisterClass(&wndclass) )
- {
- wxLogLastError(wxT("RegisterClass(panel)"));
-
- return FALSE;
- }
-
- // Register the no redraw panel window class.
- wndclass.lpszClassName = wxPanelClassNameNR;
- wndclass.style = styleNoRedraw;
-
- if ( !RegisterClass(&wndclass) )
- {
- wxLogLastError(wxT("RegisterClass(no redraw panel)"));
-
- return FALSE;
- }
-
- // Register the canvas and textsubwindow class name
- wndclass.hbrBackground = (HBRUSH)NULL;
- wndclass.lpszClassName = wxCanvasClassName;
-
- if ( !RegisterClass(&wndclass) )
- {
- wxLogLastError(wxT("RegisterClass(canvas)"));
-
- return FALSE;
- }
-
- wndclass.lpszClassName = wxCanvasClassNameNR;
- wndclass.style = styleNoRedraw;
- if ( !RegisterClass(&wndclass) )
- {
- wxLogLastError(wxT("RegisterClass(no redraw canvas)"));
-
- return FALSE;
}
return TRUE;
bool retval = TRUE;
#ifndef __WXMICROWIN__
- // frame window class.
- if ( !UnregisterClass(wxFrameClassName, wxhInstance) )
- {
- wxLogLastError(wxT("UnregisterClass(frame)"));
-
- retval = FALSE;
- }
-
- // "no redraw" frame
- if ( !UnregisterClass(wxFrameClassNameNoRedraw, wxhInstance) )
- {
- wxLogLastError(wxT("UnregisterClass(no redraw frame)"));
-
- return FALSE;
- }
-
// MDI frame window class.
- if ( !UnregisterClass(wxMDIFrameClassName, wxhInstance) )
+ if ( !::UnregisterClass(wxMDIFrameClassName, wxhInstance) )
{
wxLogLastError(wxT("UnregisterClass(MDI parent)"));
}
// "no redraw" MDI frame
- if ( !UnregisterClass(wxMDIFrameClassNameNoRedraw, wxhInstance) )
+ if ( !::UnregisterClass(wxMDIFrameClassNameNoRedraw, wxhInstance) )
{
wxLogLastError(wxT("UnregisterClass(no redraw MDI parent frame)"));
}
// MDI child frame window class.
- if ( !UnregisterClass(wxMDIChildFrameClassName, wxhInstance) )
+ if ( !::UnregisterClass(wxMDIChildFrameClassName, wxhInstance) )
{
wxLogLastError(wxT("UnregisterClass(MDI child)"));
}
// "no redraw" MDI child frame
- if ( !UnregisterClass(wxMDIChildFrameClassNameNoRedraw, wxhInstance) )
+ if ( !::UnregisterClass(wxMDIChildFrameClassNameNoRedraw, wxhInstance) )
{
wxLogLastError(wxT("UnregisterClass(no redraw MDI child)"));
retval = FALSE;
}
- // panel window class.
- if ( !UnregisterClass(wxPanelClassName, wxhInstance) )
- {
- wxLogLastError(wxT("UnregisterClass(panel)"));
-
- retval = FALSE;
- }
-
- // no redraw panel window class.
- if ( !UnregisterClass(wxPanelClassNameNR, wxhInstance) )
- {
- wxLogLastError(wxT("UnregisterClass(no redraw panel)"));
-
- retval = FALSE;
- }
-
- // canvas and textsubwindow class name
- if ( !UnregisterClass(wxCanvasClassName, wxhInstance) )
+ // canvas class name
+ if ( !::UnregisterClass(wxCanvasClassName, wxhInstance) )
{
wxLogLastError(wxT("UnregisterClass(canvas)"));
retval = FALSE;
}
- if ( !UnregisterClass(wxCanvasClassNameNR, wxhInstance) )
+ if ( !::UnregisterClass(wxCanvasClassNameNR, wxhInstance) )
{
wxLogLastError(wxT("UnregisterClass(no redraw canvas)"));
retval = FALSE;
}
-#endif
- // __WXMICROWIN__
+#endif // __WXMICROWIN__
+
return retval;
}
wxLog::SetTimestamp(NULL);
#endif
- int retValue = 0;
-
- // it is common to create a modal dialog in OnInit() (to ask/notify the
- // user about something) but it wouldn't work if we don't change the
- // "exit on delete last frame" flag here as when this dialog is
- // deleted, the app would terminate (it was the last top level window
- // as the main frame wasn't created yet!), so disable this behaviour
- // temproarily
- bool exitOnLastFrameDelete = wxTheApp->GetExitOnFrameDelete();
- wxTheApp->SetExitOnFrameDelete(FALSE);
-
// init the app
- retValue = wxEntryInitGui() && wxTheApp->OnInit() ? 0 : -1;
-
- // restore the old flag value
- wxTheApp->SetExitOnFrameDelete(exitOnLastFrameDelete);
+ int retValue = wxEntryInitGui() && wxTheApp->OnInit() ? 0 : -1;
if ( retValue == 0 )
{
{
s_hadGuiLock = TRUE;
- size_t count = s_aSavedMessages.Count();
+ size_t count = s_aSavedMessages.GetCount();
for ( size_t n = 0; n < count; n++ )
{
MSG& msg = s_aSavedMessages[n];
- if ( !ProcessMessage((WXMSG *)&msg) )
- {
- ::TranslateMessage(&msg);
- ::DispatchMessage(&msg);
- }
+ DoMessage((WXMSG *)&msg);
}
s_aSavedMessages.Empty();
void wxApp::ExitMainLoop()
{
- // VZ: why not ::PostQuitMessage()?
- m_keepGoing = FALSE;
+ // this will set m_keepGoing to FALSE a bit later
+ ::PostQuitMessage(0);
}
bool wxApp::Pending()
//-----------------------------------------------------------------------------
-wxIcon
-wxApp::GetStdIcon(int which) const
-{
- switch(which)
- {
- case wxICON_INFORMATION:
- return wxIcon("wxICON_INFO");
-
- case wxICON_QUESTION:
- return wxIcon("wxICON_QUESTION");
-
- case wxICON_EXCLAMATION:
- return wxIcon("wxICON_WARNING");
-
- default:
- wxFAIL_MSG(wxT("requested non existent standard icon"));
- // still fall through
-
- case wxICON_HAND:
- return wxIcon("wxICON_ERROR");
- }
-}
-
// For some reason, with MSVC++ 1.5, WinMain isn't linked in properly
// if in a separate file. So include it here to ensure it's linked.
#if (defined(__VISUALC__) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !defined(__TWIN32__) && !defined(WXMAKINGDLL))