- wxStringList args;
-
- wxString cmdLine(lpCmdLine);
- int count = 0;
-
- // Get application name
- wxChar name[260]; // 260 is MAX_PATH value from windef.h
-// TODO: ::GetModuleFileName(wxhInstance, name, WXSIZEOF(name));
-
- args.Add(name);
- count++;
-
- wxStrcpy(name, wxFileNameFromPath(name));
- wxStripExtension(name);
- wxTheApp->SetAppName(name);
-
- // Break up string
- // Treat strings enclosed in double-quotes as single arguments
- int i = 0;
- int len = cmdLine.Length();
- while (i < len)
- {
- // Skip whitespace
- while ((i < len) && wxIsspace(cmdLine.GetChar(i)))
- i ++;
-
- if (i < len)
- {
- if (cmdLine.GetChar(i) == wxT('"')) // We found the start of a string
- {
- i ++;
- int first = i;
- while ((i < len) && (cmdLine.GetChar(i) != wxT('"')))
- i ++;
-
- wxString arg(cmdLine.Mid(first, (i - first)));
-
- args.Add(arg);
- count ++;
-
- if (i < len)
- i ++; // Skip past 2nd quote
- }
- else // Unquoted argument
- {
- int first = i;
- while ((i < len) && !wxIsspace(cmdLine.GetChar(i)))
- i ++;
-
- wxString arg(cmdLine.Mid(first, (i - first)));
-
- args.Add(arg);
- count ++;
- }
- }
- }
-
- wxTheApp->argv = new wxChar*[count + 1];
- for (i = 0; i < count; i++)
- {
- wxString arg(args[i]);
- wxTheApp->argv[i] = copystring((const wxChar*)arg);
- }
- wxTheApp->argv[count] = NULL; // argv[] is a NULL-terminated list
- wxTheApp->argc = count;
-}
-
-//// Cleans up any wxWindows internal structures left lying around
-
+ ERRORID vError = 0L;
+ wxString sError;
+
+ if (!::WinRegisterClass( vHab
+ ,(PSZ)wxFrameClassName
+ ,wxFrameWndProc
+ ,CS_SIZEREDRAW | CS_SYNCPAINT
+ ,sizeof(ULONG)
+ ))
+ {
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError.c_str());
+ return false;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,(PSZ)wxFrameClassNameNoRedraw
+ ,wxWndProc
+ ,0
+ ,sizeof(ULONG)
+ ))
+ {
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError.c_str());
+ return false;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,(PSZ)wxMDIFrameClassName
+ ,wxWndProc
+ ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT
+ ,sizeof(ULONG)
+ ))
+ {
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError.c_str());
+ return false;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,(PSZ)wxMDIFrameClassNameNoRedraw
+ ,wxWndProc
+ ,0
+ ,sizeof(ULONG)
+ ))
+ {
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError.c_str());
+ return false;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,(PSZ)wxMDIChildFrameClassName
+ ,wxWndProc
+ ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST
+ ,sizeof(ULONG)
+ ))
+ {
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError.c_str());
+ return false;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,(PSZ)wxMDIChildFrameClassNameNoRedraw
+ ,wxWndProc
+ ,CS_HITTEST
+ ,sizeof(ULONG)
+ ))
+ {
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError.c_str());
+ return false;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,(PSZ)wxPanelClassName
+ ,wxWndProc
+ ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_SAVEBITS | CS_SYNCPAINT
+ ,sizeof(ULONG)
+ ))
+ {
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError.c_str());
+ return false;
+ }
+
+ if (!::WinRegisterClass( vHab
+ ,(PSZ)wxCanvasClassName
+ ,wxWndProc
+ ,CS_SIZEREDRAW | CS_HITTEST | CS_SYNCPAINT
+ ,sizeof(ULONG)
+ ))
+ {
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError.c_str());
+ return false;
+ }
+ if (!::WinRegisterClass( vHab
+ ,(PSZ)wxCanvasClassNameNR
+ ,wxWndProc
+ ,CS_HITTEST | CS_SYNCPAINT
+ ,sizeof(ULONG)
+ ))
+ {
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError.c_str());
+ return false;
+ }
+ return true;
+} // end of wxApp::RegisterWindowClasses
+
+//
+// Cleans up any wxWidgets internal structures left lying around
+//