fix for using wxDataObjectComposite with the clipboard
[wxWidgets.git] / src / msw / app.cpp
index 35a9e2a58e02af2d1842877122d068d596d3a5b9..ea3044497a6e7e2a2a8e71a856e0a9b27cbd5453 100644 (file)
@@ -49,6 +49,7 @@
 #endif
 
 #include "wx/cmdline.h"
+#include "wx/filename.h"
 #include "wx/module.h"
 
 #include "wx/msw/private.h"
@@ -192,9 +193,9 @@ END_EVENT_TABLE()
 bool wxApp::Initialize()
 {
     // the first thing to do is to check if we're trying to run an Unicode
-    // program under Win9x - if so, abort right now as it has no chance to
-    // work
-#if wxUSE_UNICODE
+    // program under Win9x w/o MSLU emulation layer - if so, abort right now 
+    // as it has no chance to work
+#if wxUSE_UNICODE && !wxUSE_UNICODE_MSLU
     if ( wxGetOsVersion() != wxWINDOWS_NT )
     {
         // note that we can use MessageBoxW() as it's implemented even under
@@ -203,14 +204,14 @@ bool wxApp::Initialize()
         ::MessageBox
         (
          NULL,
-         _T("This program uses Unicode and requires Windows NT/2000.\nProgram aborted."),
+         _T("This program uses Unicode and requires Windows NT/2000/XP.\nProgram aborted."),
          _T("wxWindows Fatal Error"),
          MB_ICONERROR | MB_OK
         );
 
         return FALSE;
     }
-#endif // wxUSE_UNICODE
+#endif // wxUSE_UNICODE && !wxUSE_UNICODE_MSLU
 
     // Some people may wish to use this, but
     // probably it shouldn't be here by default.
@@ -566,6 +567,13 @@ void wxApp::ConvertToStandardCommandArgs(const char* lpCmdLine)
     argv[0] = new wxChar[260]; // 260 is MAX_PATH value from windef.h
     ::GetModuleFileName(wxhInstance, argv[0], 260);
 
+    // also set the app name from argv[0]
+    wxString name;
+    wxFileName::SplitPath(argv[0], NULL, &name, NULL);
+
+    SetAppName(name);
+
+    // copy all the other arguments to wxApp::argv[]
     for ( int i = 1; i < argc; i++ )
     {
         argv[i] = copystring(args[i - 1]);
@@ -779,7 +787,8 @@ int wxEntry(WXHINSTANCE hInstance,
         wxCHECK_MSG( wxTheApp, 0, wxT("You have to define an instance of wxApp!") );
 
         // save the WinMain() parameters
-        wxTheApp->ConvertToStandardCommandArgs(lpCmdLine);
+        if (lpCmdLine) // MicroWindows passes NULL
+            wxTheApp->ConvertToStandardCommandArgs(lpCmdLine);
         wxTheApp->m_nCmdShow = nCmdShow;
 
         // We really don't want timestamps by default, because it means