Эх сурвалжийг харах

Projektdateien hinzufügen.

Kolja Strohm 7 жил өмнө
parent
commit
fa6bfa5c4b

+ 28 - 0
Icon.sln

@@ -0,0 +1,28 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.22823.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Icon", "Icon\Icon.vcxproj", "{E7A13353-BC84-4C35-84E8-AAA15EC549FB}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{E7A13353-BC84-4C35-84E8-AAA15EC549FB}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E7A13353-BC84-4C35-84E8-AAA15EC549FB}.Debug|Win32.Build.0 = Debug|Win32
+		{E7A13353-BC84-4C35-84E8-AAA15EC549FB}.Debug|x64.ActiveCfg = Debug|x64
+		{E7A13353-BC84-4C35-84E8-AAA15EC549FB}.Debug|x64.Build.0 = Debug|x64
+		{E7A13353-BC84-4C35-84E8-AAA15EC549FB}.Release|Win32.ActiveCfg = Release|Win32
+		{E7A13353-BC84-4C35-84E8-AAA15EC549FB}.Release|Win32.Build.0 = Release|Win32
+		{E7A13353-BC84-4C35-84E8-AAA15EC549FB}.Release|x64.ActiveCfg = Release|x64
+		{E7A13353-BC84-4C35-84E8-AAA15EC549FB}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

BIN
Icon/Data/Bilder/System.ltdb


BIN
Icon/Data/Bilder/game.ltdb


BIN
Icon/Data/Patch/Bilder/Patcher.ltdb


+ 1 - 0
Icon/Data/Tmp/ltpslc.sv

@@ -0,0 +1 @@
+拇坦�

BIN
Icon/Data/ltmslc.sv


BIN
Icon/Framework.dll


+ 174 - 0
Icon/Icon.vcxproj

@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E7A13353-BC84-4C35-84E8-AAA15EC549FB}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>Icon</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v141</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v141</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v141</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v141</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>..\..\..\..\Allgemein\Framework;$(IncludePath)</IncludePath>
+    <LibraryPath>..\..\..\..\Allgemein\Framework\x64\Debug;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>..\..\..\..\Allgemein\Framework;$(IncludePath)</IncludePath>
+    <LibraryPath>..\..\..\..\Allgemein\Framework\Release;$(LibraryPath)</LibraryPath>
+    <CustomBuildBeforeTargets>Build</CustomBuildBeforeTargets>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>..\..\..\..\Allgemein\Framework;$(IncludePath)</IncludePath>
+    <LibraryPath>..\..\..\..\Allgemein\Framework\x64\Release;$(LibraryPath)</LibraryPath>
+    <CustomBuildBeforeTargets>Build</CustomBuildBeforeTargets>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>Framework.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <CustomBuildStep>
+      <Command>copy "..\x64\Debug\Icon.exe" "..\..\Fertig\Debug\x64\data\start\icon.exe"</Command>
+      <Outputs>kopieren...;%(Outputs)</Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Framework.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <CustomBuildStep>
+      <Outputs>kopieren...;%(Outputs)</Outputs>
+      <Command>copy "..\Release\Icon.exe" "..\..\Fertig\x32\data\start\icon.exe"</Command>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Framework.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <CustomBuildStep>
+      <Command>copy "..\x64\Release\Icon.exe" "..\..\Fertig\x64\data\start\icon.exe"</Command>
+    </CustomBuildStep>
+    <CustomBuildStep>
+      <Outputs>kopieren...;%(Outputs)</Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="main.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 22 - 0
Icon/Icon.vcxproj.filters

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Quelldateien">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Headerdateien">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Ressourcendateien">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="main.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>

+ 7 - 0
Icon/Microsoft.DTfW.DHL.manifest

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!-- $Id -->
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+    <noInheritable />
+    <assemblyIdentity type="win32" name="Microsoft.DTfW.DHL" version="6.11.1.404" processorArchitecture="amd64" />
+    <file name="dbghelp.dll" />
+</assembly>

+ 227 - 0
Icon/main.cpp

@@ -0,0 +1,227 @@
+#include <Bild.h>
+#include <DateiSystem.h>
+#include <Text.h>
+#include <Fenster.h>
+
+using namespace Framework;
+
+struct Image
+{
+	HDC hdc;
+	Bild *bild;
+	HBITMAP hBitmap;
+	BITMAPINFO info;
+	int pitch;
+	unsigned char *pixels;
+};
+
+Image icon;
+bool exitB = 0;
+
+void ImageDestroy( Image *image )
+{
+	if( !image )
+		return;
+
+	image->pitch = 0;
+
+	if( image->hBitmap )
+	{
+		DeleteObject( image->hBitmap );
+		image->hBitmap = NULL;
+	}
+
+	if( image->hdc )
+	{
+		DeleteDC( image->hdc );
+		image->hdc = NULL;
+	}
+
+	memset( &image->info, 0, sizeof( image->info ) );
+
+	if( image->bild )
+		image->bild->release();
+}
+
+bool ImageCreate( Image *image, const char *pfad, const char *name )
+{
+	if( !image )
+		return 0;
+
+	LTDBDatei *bilder = new LTDBDatei();
+	bilder->setDatei( new Text( pfad ) );
+	bilder->leseDaten( 0 );
+	image->bild = bilder->laden( 0, new Text( name ) );
+	bilder->release();
+
+	if( !image->bild )
+		return 0;
+
+	image->pixels = 0;
+	image->pitch = ( ( image->bild->getBreite() * 32 + 31 ) & ~31 ) >> 3;
+	image->hdc = CreateCompatibleDC( 0 );
+
+	if( !image->hdc )
+		return 0;
+
+	memset( &image->info, 0, sizeof( image->info ) );
+
+	image->info.bmiHeader.biSize = sizeof( image->info.bmiHeader );
+	image->info.bmiHeader.biBitCount = 32;
+	image->info.bmiHeader.biWidth = image->bild->getBreite();
+	image->info.bmiHeader.biHeight = -image->bild->getHeight();
+	image->info.bmiHeader.biCompression = BI_RGB;
+	image->info.bmiHeader.biPlanes = 1;
+
+	image->hBitmap = CreateDIBSection( image->hdc, &image->info, DIB_RGB_COLORS, (void**)&image->pixels, NULL, 0 );
+
+	if( !image->hBitmap )
+	{
+		ImageDestroy( image );
+		return 0;
+	}
+
+	GdiFlush();
+	return 1;
+}
+
+void ImagePreMultAlpha( Image *image )
+{
+	unsigned char *pPixel = 0;
+
+	if( image->bild->getBreite() * 4 == image->pitch )
+	{
+		int i = 0;
+		int totalBytes = image->bild->getBreite() * image->bild->getHeight() * 4;
+
+		for( i = 0; i < totalBytes; i += 4 )
+		{
+			pPixel = &image->pixels[ i ];
+			pPixel[ 0 ] = (unsigned char)( pPixel[ 0 ] * ( (float)pPixel[ 3 ] / 255.0f ) );
+			pPixel[ 1 ] = (unsigned char)( pPixel[ 1 ] * ( (float)pPixel[ 3 ] / 255.0f ) );
+			pPixel[ 2 ] = (unsigned char)( pPixel[ 2 ] * ( (float)pPixel[ 3 ] / 255.0f ) );
+		}
+	}
+	else
+	{
+		int x = 0;
+		int y = 0;
+
+		for( y = 0; y < image->bild->getHeight(); ++y )
+		{
+			for( x = 0; x < image->bild->getBreite(); ++x )
+			{
+				pPixel = &image->pixels[ ( y * image->pitch ) + ( x * 4 ) ];
+				pPixel[ 0 ] = (unsigned char)( pPixel[ 0 ] * ( (float)pPixel[ 3 ] / 255.0f ) );
+				pPixel[ 1 ] = (unsigned char)( pPixel[ 1 ] * ( (float)pPixel[ 3 ] / 255.0f ) );
+				pPixel[ 2 ] = (unsigned char)( pPixel[ 2 ] * ( (float)pPixel[ 3 ] / 255.0f ) );
+			}
+		}
+	}
+}
+
+bool ImageImport( Image *image )
+{
+	BYTE *pRow = NULL;
+
+	if( !image )
+		return 0;
+
+	if( !ImageCreate( image, "data/bilder/game.ltdb", "starticon.png" ) )
+		return 0;
+
+	int *buffer = image->bild->getBuffer();
+	for( int i = 0; i < image->bild->getHeight(); i++ )
+	{
+		pRow = &image->pixels[ i * image->pitch ];
+		for( int i2 = 0; i2 < image->bild->getBreite(); i2++ )
+		{
+			pRow[ i2 * 4 ] = (unsigned char)( ( buffer[ i2 + i * image->bild->getBreite() ] ) & 0xFF );
+			pRow[ i2 * 4 + 1 ] = (unsigned char)( ( buffer[ i2 + i * image->bild->getBreite() ] >> 8 ) & 0xFF );
+			pRow[ i2 * 4 + 2 ] = (unsigned char)( ( buffer[ i2 + i * image->bild->getBreite() ] >> 16 ) & 0xFF );
+			pRow[ i2 * 4 + 3 ] = (unsigned char)( ( buffer[ i2 + i * image->bild->getBreite() ] >> 24 ) & 0xFF );
+		}
+	}
+
+	ImagePreMultAlpha( image );
+
+	return 1;
+}
+
+void InitLayeredWindow( HWND hWnd )
+{
+	HDC hdc = NULL;
+
+	if( hdc = GetDC( hWnd ) )
+	{
+		HGDIOBJ hPrevObj = NULL;
+		POINT ptDest = { 0, 0 };
+		POINT ptSrc = { 0, 0 };
+		SIZE client = { icon.bild->getBreite(), icon.bild->getHeight() };
+		BLENDFUNCTION blendFunc = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };
+
+		hPrevObj = SelectObject( icon.hdc, icon.hBitmap );
+		ClientToScreen( hWnd, &ptDest );
+
+		UpdateLayeredWindow( hWnd, hdc, &ptDest, &client, icon.hdc, &ptSrc, 0, &blendFunc, ULW_ALPHA );
+
+		SelectObject( icon.hdc, hPrevObj );
+		ReleaseDC( hWnd, hdc );
+	}
+}
+
+LRESULT CALLBACK Proc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
+{
+	return DefWindowProc( hWnd, msg, wParam, lParam );
+}
+
+int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
+{
+	WNDCLASSEX wcl = { 0 };
+
+	wcl.cbSize = sizeof( wcl );
+	wcl.style = CS_HREDRAW | CS_VREDRAW;
+	wcl.lpfnWndProc = Proc;
+	wcl.cbClsExtra = 0;
+	wcl.cbWndExtra = 0;
+	wcl.hInstance = hInstance;
+	wcl.hIcon = 0;
+	wcl.hCursor = 0;
+	wcl.hbrBackground = 0;
+	wcl.lpszMenuName = 0;
+	wcl.lpszClassName = TEXT( "LayeredWindowClass" );
+	wcl.hIconSm = 0;
+
+	if( !ImageImport( &icon ) )
+	{
+		WMessageBox( 0, new Text( "Fehler" ), new Text( "data/bilder/game.ltdb/starticon.png konnte nicht geladen werden!" ), MB_ICONERROR );
+		return 0;
+	}
+
+	if( RegisterClassEx( &wcl ) )
+	{
+		HWND hWnd = CreateWindowEx( WS_EX_LAYERED | WS_EX_TOOLWINDOW, wcl.lpszClassName, TEXT( "Layered Window Demo" ), WS_POPUP, 0, 0, icon.bild->getBreite(), icon.bild->getHeight(), 0, 0, wcl.hInstance, 0 );
+
+		if( hWnd )
+		{
+			BOOL bRet = 0;
+			MSG msg = { 0 };
+
+			InitLayeredWindow( hWnd );
+			RECT r;
+			GetWindowRect( GetDesktopWindow(), &r );
+			r.top = ( r.bottom / 2 ) - ( icon.bild->getHeight() / 2 );
+			r.left = ( r.right / 2 ) - ( icon.bild->getBreite() / 2 );
+			SetWindowPos( hWnd, 0, r.left, r.top, icon.bild->getBreite(), icon.bild->getHeight(), 0 );
+			ShowWindow( hWnd, nShowCmd );
+			UpdateWindow( hWnd );
+
+			Sleep( 5000 );
+
+			DestroyWindow( hWnd );
+		}
+		UnregisterClass( wcl.lpszClassName, hInstance );
+	}
+	ImageDestroy( &icon );
+	return 0;
+}

+ 3 - 0
build.bat

@@ -0,0 +1,3 @@
+"D:\Visual Studio 2017\MSBuild\15.0\Bin\MSBuild.exe" "Icon.sln" /p:configuration=release /p:platform=win32
+"D:\Visual Studio 2017\MSBuild\15.0\Bin\MSBuild.exe" "Icon.sln" /p:configuration=release /p:platform=x64
+"D:\Visual Studio 2017\MSBuild\15.0\Bin\MSBuild.exe" "Icon.sln" /p:configuration=debug /p:platform=x64