X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fcore%2Fmain.cpp;h=fa28c1ffed271c2c6c03736d0bafcb71ad13841d;hp=84e0f4292e0b644b1afec1f6d740f97407529314;hb=b4806214e905752617691f851717033fd3f266c2;hpb=967785734be5c3fc6f75da122c2d93ebbb338271 diff --git a/source/core/main.cpp b/source/core/main.cpp index 84e0f42..fa28c1f 100644 --- a/source/core/main.cpp +++ b/source/core/main.cpp @@ -1,17 +1,45 @@ #ifdef WIN32 #include +#include +#include #endif - #include "application.h" #ifdef WIN32 +using namespace std; +using namespace Msp; + int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int /*nCmdShow*/) { int argc = 0; - LPWSTR *argv = CommandLineToArgvW(GetCommandLineW(), &argc); - return Msp::Application::run(argc, (char **)argv, hInstance); + LPWSTR *argv_w = CommandLineToArgvW(GetCommandLineW(), &argc); + + unsigned max_size = 0; + for(int i=0; i(argv_buf); + char *argv_ptr = argv_buf+(argc+1)*sizeof(char *); + for(int i=0; i(argv_w[i]), wcslen(argv_w[i])*2); + arg = StringCodec::transcode(arg); + copy(arg.begin(), arg.end(), argv_ptr); + argv_ptr += arg.size(); + *argv_ptr++ = 0; + } + + LocalFree(argv_w); + int exit_code = Msp::Application::run(argc, argv, hInstance); + delete[] argv_buf; + return exit_code; } -#endif +#else int main(int argc, char **argv) -{ return Msp::Application::run(argc, argv); } +{ + return Msp::Application::run(argc, argv); +} +#endif