+// ---------------------------------------------------------------------------
+// RegisterWindowClasses
+// ---------------------------------------------------------------------------
+
+// TODO we should only register classes really used by the app. For this it
+// would be enough to just delay the class registration until an attempt
+// to create a window of this class is made.
+bool wxApp::RegisterWindowClasses(
+ HAB vHab
+)
+{
+
+ if (!::WinRegisterClass( vHab
+ ,wxFrameClassName
+ ,(PFNWP)wxWndProc
+ ,CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
+ ,0
+ ))
+ {
+ wxLogLastError("RegisterClass(frame)");
+
+ return FALSE;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,wxFrameClassNameNoRedraw
+ ,(PFNWP)wxWndProc
+ ,CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
+ ,0
+ ))
+ {
+ wxLogLastError("RegisterClass(no redraw frame)");
+
+ return FALSE;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,wxMDIFrameClassName
+ ,(PFNWP)wxWndProc
+ ,CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
+ ,0
+ ))
+ {
+ wxLogLastError("RegisterClass(MDI parent)");
+
+ return FALSE;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,wxMDIFrameClassNameNoRedraw
+ ,(PFNWP)wxWndProc
+ ,CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
+ ,0
+ ))
+ {
+ wxLogLastError("RegisterClass(no redraw MDI parent)");
+
+ return FALSE;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,wxMDIChildFrameClassName
+ ,(PFNWP)wxWndProc
+ ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST | CS_CLIPSIBLINGS | CS_FRAME
+ ,0
+ ))
+ {
+ wxLogLastError("RegisterClass(MDI child)");
+
+ return FALSE;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,wxMDIChildFrameClassNameNoRedraw
+ ,(PFNWP)wxWndProc
+ ,CS_HITTEST | CS_CLIPSIBLINGS | CS_FRAME
+ ,0
+ ))
+ {
+ wxLogLastError("RegisterClass(no redraw MDI child)");
+
+ return FALSE;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,wxPanelClassName
+ ,(PFNWP)wxWndProc
+ ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_CLIPSIBLINGS | CS_SAVEBITS | CS_SYNCPAINT
+ ,0
+ ))
+ {
+ wxLogLastError("RegisterClass(Panel)");
+
+ return FALSE;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,wxCanvasClassName
+ ,(PFNWP)wxWndProc
+ ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_CLIPSIBLINGS | CS_SAVEBITS | CS_SYNCPAINT
+ ,0
+ ))
+ {
+ wxLogLastError("RegisterClass(Canvas)");
+
+ return FALSE;
+ }
+ return TRUE;
+}
+
+//// Cleans up any wxWindows internal structures left lying around
+