+++ /dev/null
-#ifndef __cpBaseQtApplication__MainHelper__h__
-#define __cpBaseQtApplication__MainHelper__h__
-
-#include <cstdlib>
-#include <QApplication>
-
-// -------------------------------------------------------------------------
-#define cpBaseQtApplication_Main( _window_class_ ) \
- int main( int argc, char* argv[] ) \
- { \
- QApplication a( argc, argv ); \
- _window_class_ w( argc, argv ); \
- w.show( ); \
- return( a.exec( ) ); \
- }
-
-// -------------------------------------------------------------------------
-#include <cpPlugins/Config.h>
-
-#ifdef cpPlugins_OS_Windows
-
-# include <memory>
-# include <vector>
-# include <windows.h>
-# include <shellapi.h>
-
-// -------------------------------------------------------------------------
-namespace cpBaseQtApplication
-{
- /**
- */
- class Win32CommandLineConverter
- {
- private:
- std::unique_ptr< char*[ ] > argv_;
- std::vector< std::unique_ptr< char[ ] > > storage_;
-
- public:
- Win32CommandLineConverter( )
- {
- LPWSTR cmd_line = GetCommandLineW( );
- int argc;
- LPWSTR* w_argv = CommandLineToArgvW( cmd_line, &argc );
- argv_ = std::unique_ptr< char*[ ] >( new char*[ argc ] );
- storage_.reserve( argc );
- for( int i = 0; i < argc; ++i )
- {
- storage_.push_back( ConvertWArg( w_argv[ i ] ) );
- argv_[ i ] = storage_.back( ).get( );
-
- } // rof
- LocalFree( w_argv );
- }
- int argc( ) const
- {
- return( static_cast< int >(storage_.size( ) ) );
- }
- char** argv( ) const
- {
- return( argv_.get( ) );
- }
- static std::unique_ptr< char[ ] > ConvertWArg( LPWSTR w_arg )
- {
- int size = WideCharToMultiByte(
- CP_UTF8, 0, w_arg, -1, nullptr, 0, nullptr, nullptr
- );
- std::unique_ptr< char[ ] > ret( new char[ size ] );
- WideCharToMultiByte(
- CP_UTF8, 0, w_arg, -1, ret.get( ), size, nullptr, nullptr
- );
- return( ret );
- }
- };
-
-} // ecapseman
-
-// -------------------------------------------------------------------------
-# define cpBaseQtApplication_MainComplement \
- int CALLBACK WinMain( HINSTANCE i, HINSTANCE p, LPSTR c, int s ) \
- { \
- cpBaseQtApplication::Win32CommandLineConverter cmd_line; \
- return( main( cmd_line.argc( ), cmd_line.argv( ) ) ); \
- }
-#else // cpPlugins_OS_Windows
-# define cpBaseQtApplication_MainComplement
-#endif // cpPlugins_OS_Windows
-
-#endif // __cpBaseQtApplication__MainHelper__h__
-
-// eof - $RCSfile$