From: Julian Smart Date: Wed, 14 Oct 1998 08:13:09 +0000 (+0000) Subject: Rewrote ConvertToStandardCommandArgs; resource.h correction; ntwxwin.mak X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/da36f5446f10eace61869a3e42672667f344e63b?ds=sidebyside Rewrote ConvertToStandardCommandArgs; resource.h correction; ntwxwin.mak correction git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@822 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/latex/wx/app.tex b/docs/latex/wx/app.tex index dccfc28567..9ffe9c7190 100644 --- a/docs/latex/wx/app.tex +++ b/docs/latex/wx/app.tex @@ -262,7 +262,7 @@ Under Windows, OnEndSession is called in response to the WM\_ENDSESSION message. \helpref{wxWindow::Close}{wxwindowclose},\rtfsp \helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow},\rtfsp \helpref{wxCloseEvent}{wxcloseevent},\rtfsp -\helpref{wxApp::OnQueryEndSession}{wxappqueryonendsession} +\helpref{wxApp::OnQueryEndSession}{wxapponqueryendsession} \membersection{wxApp::OnInit}\label{wxapponinit} diff --git a/docs/latex/wx/closeevt.tex b/docs/latex/wx/closeevt.tex index 19576f9e7f..58bf4391f0 100644 --- a/docs/latex/wx/closeevt.tex +++ b/docs/latex/wx/closeevt.tex @@ -25,8 +25,8 @@ This event applies to wxApp only.} \helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow},\rtfsp \helpref{wxWindow::Close}{wxwindowclose},\rtfsp -\helpref{wxApp::OnQueryEndSession}{wxappqueryendsession},\rtfsp -\helpref{wxApp::OnEndSession}{wxappendsession},\rtfsp +\helpref{wxApp::OnQueryEndSession}{wxapponqueryendsession},\rtfsp +\helpref{wxApp::OnEndSession}{wxapponendsession},\rtfsp \helpref{Window deletion overview}{windowdeletionoverview} \latexignore{\rtfignore{\wxheading{Members}}} diff --git a/include/wx/resource.h b/include/wx/resource.h index 2cfbe992ad..86e126f833 100644 --- a/include/wx/resource.h +++ b/include/wx/resource.h @@ -171,7 +171,7 @@ extern wxMenuBar* WXDLLEXPORT wxResourceCreateMenuBar(const wxString& resource, extern wxMenu* WXDLLEXPORT wxResourceCreateMenu(const wxString& resource, wxResourceTable *table = (wxResourceTable *) NULL); extern bool WXDLLEXPORT wxResourceParseData(const wxString& resource, wxResourceTable *table = (wxResourceTable *) NULL); extern bool WXDLLEXPORT wxResourceParseFile(const wxString& filename, wxResourceTable *table = (wxResourceTable *) NULL); -extern bool WXDLLEXPORT wxResourceParseString(const wxString& s, wxResourceTable *table = (wxResourceTable *) NULL); +extern bool WXDLLEXPORT wxResourceParseString(char* s, wxResourceTable *table = (wxResourceTable *) NULL); extern void WXDLLEXPORT wxResourceClear(wxResourceTable *table = (wxResourceTable *) NULL); // Register XBM/XPM data extern bool WXDLLEXPORT wxResourceRegisterBitmapData(const wxString& name, char bits[], int width, int height, wxResourceTable *table = (wxResourceTable *) NULL); diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 22ced1c679..0182dcc3a0 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -344,87 +344,76 @@ bool wxApp::RegisterWindowClasses() //// Convert Windows to argc, argv style -// FIXME this code should be rewritten (use wxArrayString instead...) void wxApp::ConvertToStandardCommandArgs(char* lpCmdLine) { - // Split command line into tokens, as in usual main(argc, argv) - int para,count = 0; - char *buf = new char[strlen(lpCmdLine) + 1]; - - para=0; - /* Model independent strcpy */ - unsigned int i; - for (i = 0; iSetAppName(name); + strcpy(name, wxFileNameFromPath(name)); + wxStripExtension(name); + wxTheApp->SetAppName(name); - /* Break up string */ - // Treat strings enclosed in double-quotes as single arguments - char* str = buf; - while (*str) - { -/* - if ( count == WXSIZEOF(command) ) + // Break up string + // Treat strings enclosed in double-quotes as single arguments + int i = 0; + int len = cmdLine.Length(); + while (i < len) { - wxFAIL_MSG("too many command line args."); - break; - } -*/ - while ( *str && isspace(*str) ) // skip whitespace - str++; + // Skip whitespace + while ((i < len) && isspace(cmdLine.GetChar(i))) + i ++; - if (*str == '"') - { - str++; - command[count++] = str; - while (*str && *str != '"') - str++; + if (i < len) + { + if (cmdLine.GetChar(i) == '"') // We found the start of a string + { + i ++; + int first = i; + while ((i < len) && (cmdLine.GetChar(i) != '"')) + 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) && !isspace(cmdLine.GetChar(i))) + i ++; + + wxString arg(cmdLine.Mid(first, (i - first))); + + args.Add(arg); + count ++; + } + } } - else if (*str) + + wxTheApp->argv = new char*[count + 1]; + for (i = 0; i < count; i++) { - command[count++] = str; - while (*str && !isspace(*str)) - str++; + wxString arg(args[i]); + wxTheApp->argv[i] = copystring((const char*)arg); } - if (*str) - *str++ = '\0'; - } - - wxTheApp->argv = new char*[count + 1]; - wxTheApp->argv[count] = NULL; /* argv[] is NULL terminated list! */ - wxTheApp->argc = count; - - for (i = 0; i < count; i++) - wxTheApp->argv[i] = copystring(command[i]); - -#if !defined(__GNUWIN32__) -// use copystring than delete this pointer - delete [] command[0]; -#endif - - delete [] command; - delete [] buf; + wxTheApp->argv[count] = NULL; // argv[] is a NULL-terminated list + wxTheApp->argc = count; } //// Cleans up any wxWindows internal structures left lying around @@ -684,7 +673,7 @@ wxApp::~wxApp() { delete[] argv[i]; } - delete argv; + delete[] argv; } bool wxApp::Initialized() diff --git a/src/msw/makefile.nt b/src/msw/makefile.nt index 317456ed62..5325dd3843 100644 --- a/src/msw/makefile.nt +++ b/src/msw/makefile.nt @@ -1535,4 +1535,6 @@ $(WXDIR)\docs\ps\faq.ps: $(WXDIR)\docs\latex\faq\faq.dvi move faq.ps $(WXDIR)\docs\ps\faq.ps cd $(THISDIR) - +# In order to force document reprocessing +touchmanual: + -touch $(WXDIR)\docs\latex\wx\manual.tex diff --git a/src/ntwxwin.mak b/src/ntwxwin.mak index de0ab064ae..f378ca7a99 100644 --- a/src/ntwxwin.mak +++ b/src/ntwxwin.mak @@ -29,7 +29,8 @@ CPU=i386 OBJSUFF=obj SRCSUFF=cpp -WINFLAGS=-c -W3 -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -D_X86_=1 -DWIN32 -D__WIN32__ $(WINVERSION) +# If you set wxUSE_IOSTREAMH to 0, remove -Dtry=__try -Dexcept=__except -Dleave=__leave -Dfinally=__finally +WINFLAGS=-c -W3 -Dtry=__try -Dexcept=__except -Dleave=__leave -Dfinally=__finally -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -D_X86_=1 -DWIN32 -D__WIN32__ $(WINVERSION) #WINLINKFLAGS=/NODEFAULTLIB /INCREMENTAL:NO /NOLOGO -align:0x1000 -machine:$(CPU) -subsystem:windows,$(APPVER) WINLINKFLAGS=/INCREMENTAL:NO /NOLOGO -align:0x1000 -machine:$(CPU) -subsystem:windows,$(APPVER) #WINLIBS=kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib libc.lib oldnames.lib\