#ifdef __GNUG__
#pragma implementation "app.h"
+ #pragma implementation "appbase.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#endif
// OLE is used for drag-and-drop, clipboard, OLE Automation...
+#ifndef wxUSE_NORLANDER_HEADERS
#if defined(__GNUWIN32__) || defined(__SC__) || defined(__SALFORDC__)
#undef wxUSE_OLE
#define wxUSE_OLE 0
#endif // broken compilers
+#endif
#if wxUSE_OLE
#include <ole2.h>
#include <string.h>
#include <ctype.h>
-#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__)
+#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) || defined(wxUSE_NORLANDER_HEADERS)
#include <commctrl.h>
#endif
wxApp *wxTheApp = NULL;
// FIXME why not const? and not static?
+
+// NB: all "NoRedraw" classes must have the same names as the "normal" classes
+// with NR suffix - wxWindow::MSWCreate() supposes this
wxChar wxFrameClassName[] = _T("wxFrameClass");
+wxChar wxFrameClassNameNoRedraw[] = _T("wxFrameClassNR");
wxChar wxMDIFrameClassName[] = _T("wxMDIFrameClass");
+wxChar wxMDIFrameClassNameNoRedraw[] = _T("wxMDIFrameClassNR");
wxChar wxMDIChildFrameClassName[] = _T("wxMDIChildFrameClass");
+wxChar wxMDIChildFrameClassNameNoRedraw[] = _T("wxMDIChildFrameClassNR");
wxChar wxPanelClassName[] = _T("wxPanelClass");
wxChar wxCanvasClassName[] = _T("wxCanvasClass");
#endif // __WIN95__
+#if wxUSE_OLE
+
+#ifdef __WIN16__
// for OLE, enlarge message queue to be as large as possible
int iMsg = 96;
- while (!SetMessageQueue(iMsg) && (iMsg -= 8));
-
-#if wxUSE_OLE
+ while (!SetMessageQueue(iMsg) && (iMsg -= 8))
+ ;
+#endif // Win16
// we need to initialize OLE library
if ( FAILED(::OleInitialize(NULL)) )
wxLogError(_("Cannot initialize OLE"));
-#endif
+#endif // wxUSE_OLE
#if wxUSE_CTL3D
if (!Ctl3dRegister(wxhInstance))
{
WNDCLASS 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
+ static const long styleNormal = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
+ static const long styleNoRedraw = CS_DBLCLKS;
+
// the fields which are common to all classes
- wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
wndclass.lpfnWndProc = (WNDPROC)wxWndProc;
wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = sizeof( DWORD ); // what is this DWORD used for?
+ 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);
// Register the frame window class.
wndclass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1);
-#ifdef _MULTIPLE_INSTANCES
- sprintf( wxFrameClassName,"wxFrameClass%d", wxhInstance );
-#endif
+ wndclass.style = styleNormal;
wndclass.lpszClassName = wxFrameClassName;
if ( !RegisterClass(&wndclass) )
return FALSE;
}
+ // "no redraw" frame
+ wndclass.lpszClassName = wxFrameClassNameNoRedraw;
+ wndclass.style = styleNoRedraw;
+
+ if ( !RegisterClass(&wndclass) )
+ {
+ wxLogLastError("RegisterClass(no redraw frame)");
+
+ return FALSE;
+ }
+
// Register the MDI frame window class.
wndclass.hbrBackground = (HBRUSH)NULL; // paint MDI frame ourselves
- wndclass.lpszClassName = wxMDIFrameClassName;
+ wndclass.lpszClassName = wxMDIFrameClassNameNoRedraw;
if ( !RegisterClass(&wndclass) )
{
return FALSE;
}
+ // "no redraw" MDI frame
+ wndclass.lpszClassName = wxMDIFrameClassName;
+ wndclass.style = styleNoRedraw;
+
+ if ( !RegisterClass(&wndclass) )
+ {
+ wxLogLastError("RegisterClass(no redraw MDI parent frame)");
+
+ return FALSE;
+ }
+
// Register the MDI child frame window class.
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wndclass.lpszClassName = wxMDIChildFrameClassName;
return FALSE;
}
+ // "no redraw" MDI child frame
+ wndclass.lpszClassName = wxMDIChildFrameClassNameNoRedraw;
+ wndclass.style = styleNoRedraw;
+
+ if ( !RegisterClass(&wndclass) )
+ {
+ wxLogLastError("RegisterClass(no redraw MDI child)");
+
+ return FALSE;
+ }
+
// Register the panel window class.
wndclass.hbrBackground = (HBRUSH) GetStockObject( LTGRAY_BRUSH );
wndclass.lpszClassName = wxPanelClassName;