diff --git a/Daramee.IconGenerator/App.config b/Daramee.IconGenerator/App.config
new file mode 100644
index 0000000..8324aa6
--- /dev/null
+++ b/Daramee.IconGenerator/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Daramee.IconGenerator/App.xaml b/Daramee.IconGenerator/App.xaml
new file mode 100644
index 0000000..0577a62
--- /dev/null
+++ b/Daramee.IconGenerator/App.xaml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/Daramee.IconGenerator/App.xaml.cs b/Daramee.IconGenerator/App.xaml.cs
new file mode 100644
index 0000000..9eae748
--- /dev/null
+++ b/Daramee.IconGenerator/App.xaml.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace Daramee.IconGenerator
+{
+ ///
+ /// App.xaml에 대한 상호 작용 논리
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/Daramee.IconGenerator/Daramee.IconGenerator.csproj b/Daramee.IconGenerator/Daramee.IconGenerator.csproj
new file mode 100644
index 0000000..589b66f
--- /dev/null
+++ b/Daramee.IconGenerator/Daramee.IconGenerator.csproj
@@ -0,0 +1,114 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}
+ WinExe
+ Daramee.IconGenerator
+ IconGenerator
+ v4.6
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 4
+ true
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ false
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ Resources\MainIcon.ico
+
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ MSBuild:Compile
+ Designer
+
+
+ App.xaml
+ Code
+
+
+
+ MainWindow.xaml
+ Code
+
+
+
+
+ Code
+
+
+
+
+
+
+
+ False
+ Microsoft .NET Framework 4.6%28x86 및 x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Daramee.IconGenerator/IconEncoder.cs b/Daramee.IconGenerator/IconEncoder.cs
new file mode 100644
index 0000000..1ef7b7c
--- /dev/null
+++ b/Daramee.IconGenerator/IconEncoder.cs
@@ -0,0 +1,150 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+
+namespace Daramee.IconGenerator
+{
+ public class IconEncoder : IDisposable
+ {
+ [StructLayout ( LayoutKind.Sequential, Pack = 1 )]
+ struct IconHeader
+ {
+ public ushort reserved, type, count;
+ }
+
+ [StructLayout ( LayoutKind.Sequential, Pack = 1 )]
+ struct EntryHeader
+ {
+ public byte width;
+ public byte height;
+ public byte colorCount;
+ public byte reserved;
+ public ushort planes;
+ public ushort bitCount;
+ public uint sizeInBytes;
+ public uint fileOffset;
+ }
+
+ Stream outputStream;
+
+ List> entries;
+
+ public IconEncoder ( string filename )
+ : this ( new FileStream ( filename, FileMode.Create ) )
+ { }
+ public IconEncoder ( Stream stream )
+ {
+ outputStream = stream;
+ entries = new List> ();
+ }
+
+ private Stream EncodeImageToPNG ( BitmapSource imageSource )
+ {
+ PngBitmapEncoder encoder = new PngBitmapEncoder ();
+ encoder.Frames.Add ( BitmapFrame.Create ( imageSource ) );
+
+ MemoryStream stream = new MemoryStream ();
+ encoder.Save ( stream );
+ stream.Position = 0;
+
+ return stream;
+ }
+
+ private void WriteToStream ( Stream stream, T s ) where T : struct
+ {
+ IntPtr alloc = Marshal.AllocHGlobal ( Marshal.SizeOf () );
+ Marshal.StructureToPtr ( s, alloc, false );
+ byte [] array = new byte [ Marshal.SizeOf () ];
+ Marshal.Copy ( alloc, array, 0, array.Length );
+ stream.Write ( array, 0, array.Length );
+ Marshal.FreeHGlobal ( alloc );
+ }
+
+ private BitmapSource ConvertIndexedColorImage ( BitmapSource source )
+ {
+ BitmapPalette myPalette = new BitmapPalette ( source, 256 );
+ PixelFormat pixelFormat = PixelFormats.Indexed8;
+ if ( myPalette.Colors.Count < 2 )
+ pixelFormat = PixelFormats.Indexed1;
+ else if ( myPalette.Colors.Count < 4 )
+ pixelFormat = PixelFormats.Indexed2;
+ else if ( myPalette.Colors.Count < 16 )
+ pixelFormat = PixelFormats.Indexed4;
+ else if ( myPalette.Colors.Count == 256 )
+ return source;
+
+ FormatConvertedBitmap newFormatedBitmapSource = new FormatConvertedBitmap ();
+ newFormatedBitmapSource.BeginInit ();
+ newFormatedBitmapSource.Source = source;
+ newFormatedBitmapSource.DestinationPalette = myPalette;
+ newFormatedBitmapSource.DestinationFormat = pixelFormat;
+ newFormatedBitmapSource.EndInit ();
+
+ return newFormatedBitmapSource;
+ }
+
+ public void InsertImage ( BitmapSource imageSource )
+ {
+ //imageSource = ConvertIndexedColorImage ( imageSource );
+ Stream stream = EncodeImageToPNG ( imageSource );
+
+ EntryHeader header = new EntryHeader
+ {
+ width = ( byte ) ( uint ) imageSource.Width,
+ height = ( byte ) ( uint ) imageSource.Height,
+ colorCount = ( byte ) ( imageSource.Palette != null ? imageSource.Palette.Colors.Count : 0 ),
+ planes = 1,
+ bitCount = 0,
+ sizeInBytes = ( uint ) stream.Length
+ };
+
+ entries.Add ( new KeyValuePair ( stream, header ) );
+ }
+
+ public void Encode ()
+ {
+ IconHeader header = new IconHeader ()
+ {
+ reserved = 0,
+ type = 1,
+ count = ( ushort ) entries.Count,
+ };
+ WriteToStream ( outputStream, header );
+
+ uint totalWritten = ( uint ) Marshal.SizeOf ()
+ + ( uint ) entries.Count * ( uint ) Marshal.SizeOf ();
+ foreach ( var pair in entries )
+ {
+ var entryHeader = pair.Value;
+ entryHeader.fileOffset = totalWritten;
+ WriteToStream ( outputStream, entryHeader );
+ totalWritten += ( uint ) pair.Key.Length;
+ }
+ byte [] buffer = new byte [ 4194304 ];
+ foreach ( var pair in entries )
+ {
+ var stream = pair.Key;
+ int totalCopy = 0;
+ while ( totalCopy < stream.Length )
+ {
+ int read = stream.Read ( buffer, 0, buffer.Length );
+ outputStream.Write ( buffer, 0, read );
+ totalCopy += read;
+ }
+ }
+
+ outputStream.Flush ();
+ }
+
+ public void Dispose ()
+ {
+ outputStream.Dispose ();
+ }
+ }
+}
diff --git a/Daramee.IconGenerator/MainWindow.xaml b/Daramee.IconGenerator/MainWindow.xaml
new file mode 100644
index 0000000..1c9ccd9
--- /dev/null
+++ b/Daramee.IconGenerator/MainWindow.xaml
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Daramee.IconGenerator/MainWindow.xaml.cs b/Daramee.IconGenerator/MainWindow.xaml.cs
new file mode 100644
index 0000000..015589d
--- /dev/null
+++ b/Daramee.IconGenerator/MainWindow.xaml.cs
@@ -0,0 +1,200 @@
+using Microsoft.Win32;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Daramee.IconGenerator
+{
+ ///
+ /// MainWindow.xaml에 대한 상호 작용 논리
+ ///
+ public partial class MainWindow : Window
+ {
+ int [] sizeList = new int [] { 256, 192, 128, 96, 64, 48, 32, 16 };
+ Dictionary checkBoxDictionary;
+ Dictionary imageDictionary;
+ BitmapSource nullImage = new WriteableBitmap ( 256, 256, 96, 96, PixelFormats.Pbgra32, null );
+
+ public MainWindow ()
+ {
+ InitializeComponent ();
+
+ checkBoxDictionary = new Dictionary ()
+ {
+ { 256, checkBox256 },
+ { 192, checkBox192 },
+ { 128, checkBox128 },
+ { 96, checkBox96 },
+ { 64, checkBox64 },
+ { 48, checkBox48 },
+ { 32, checkBox32 },
+ { 16, checkBox16 },
+ };
+ imageDictionary = new Dictionary ()
+ {
+ { 256, image256 },
+ { 192, image192 },
+ { 128, image128 },
+ { 96, image96 },
+ { 64, image64 },
+ { 48, image48 },
+ { 32, image32 },
+ { 16, image16 },
+ };
+
+ image256.Source = image192.Source = image128.Source = image96.Source = image64.Source
+ = image48.Source = image32.Source = image16.Source = nullImage;
+ }
+
+ private void SourcePathBrowse_Click ( object sender, RoutedEventArgs e )
+ {
+ OpenFileDialog ofd = new OpenFileDialog ()
+ {
+ Filter = "이미지 파일(*.bmp;*.png;*.gif;*.jpg;*.jpeg;*.tif;*.tiff;*.ico)|*.bmp;*.png;*.gif;*.jpg;*.jpeg;*.tif;*.tiff;*.ico",
+ };
+ if ( ofd.ShowDialog () == false )
+ return;
+
+ if ( File.Exists ( ofd.FileName ) )
+ {
+ BitmapImage imageSource = new BitmapImage ();
+ imageSource.BeginInit ();
+ imageSource.UriSource = new Uri ( ofd.FileName );
+ imageSource.EndInit ();
+ imageSource.Freeze ();
+
+ BitmapSource bitmapSource = imageSource;
+ if ( imageSource.PixelWidth != imageSource.PixelHeight )
+ {
+ DrawingVisual drawingVisual = new DrawingVisual ();
+ using ( DrawingContext drawingContext = drawingVisual.RenderOpen () )
+ {
+ drawingContext.DrawRectangle (
+ new SolidColorBrush ( Colors.Transparent ),
+ null, new Rect ( 0, 0, 256, 256 ) );
+ Rect resizeFactor;
+ if ( imageSource.PixelWidth > imageSource.PixelHeight )
+ {
+ resizeFactor = new Rect ( 0, 0, 256, 256 * imageSource.PixelHeight / imageSource.PixelWidth );
+ resizeFactor.Y = 256 / 2 - resizeFactor.Height / 2;
+ }
+ else
+ {
+ resizeFactor = new Rect ( 0, 0, 256 * imageSource.PixelWidth / imageSource.PixelHeight, 256 );
+ resizeFactor.X = 256 / 2 - resizeFactor.Width / 2;
+ }
+ drawingContext.DrawImage ( imageSource, resizeFactor );
+ }
+
+ RenderTargetBitmap resizedImage = new RenderTargetBitmap (
+ 256, 256, 96, 96, PixelFormats.Default );
+ resizedImage.Render ( drawingVisual );
+
+ bitmapSource = resizedImage;
+ }
+
+ image256.Source = image192.Source = image128.Source = image96.Source = image64.Source
+ = image48.Source = image32.Source = image16.Source = bitmapSource;
+ }
+ else
+ {
+ image256.Source = image192.Source = image128.Source = image96.Source = image64.Source
+ = image48.Source = image32.Source = image16.Source = nullImage;
+ }
+ }
+
+ private DrawingVisual ModifyToDrawingVisual ( Visual v, Rect b )
+ {
+ /// new a drawing visual and get its context
+ DrawingVisual dv = new DrawingVisual ();
+ DrawingContext dc = dv.RenderOpen ();
+
+ /// generate a visual brush by input, and paint
+ VisualBrush vb = new VisualBrush ( v );
+ dc.DrawRectangle ( vb, null, b );
+ dc.Close ();
+
+ return dv;
+ }
+
+ private void SaveButton_Click ( object sender, RoutedEventArgs e )
+ {
+ SaveFileDialog sfd = new SaveFileDialog ()
+ {
+ Filter = "아이콘 파일(*.ico)|*.ico",
+ };
+ if ( sfd.ShowDialog () == false )
+ return;
+
+ using ( Stream outputStream = new FileStream ( sfd.FileName, FileMode.Create ) )
+ {
+ IconEncoder encoder = new IconEncoder ( outputStream );
+ foreach ( int size in sizeList.Reverse () )
+ {
+ if ( checkBoxDictionary [ size ].IsChecked == false )
+ continue;
+
+ RenderTargetBitmap rtb = new RenderTargetBitmap ( size, size, 96, 96, PixelFormats.Pbgra32 );
+ rtb.Render ( ModifyToDrawingVisual ( imageDictionary [ size ], new Rect ( 0, 0, size, size ) ) );
+ rtb.Freeze ();
+
+ encoder.InsertImage ( rtb );
+ }
+ encoder.Encode ();
+ }
+ }
+
+ private void CopyFromClipboard_Click ( object sender, RoutedEventArgs e )
+ {
+ Image image = null;
+ if ( sender is MenuItem menu )
+ image = ( menu.Parent as ContextMenu ).PlacementTarget as Image;
+ if ( image == null ) return;
+
+ if ( Clipboard.ContainsFileDropList () )
+ {
+ BitmapImage source = new BitmapImage ();
+ source.BeginInit ();
+ source.UriSource = new Uri ( Clipboard.GetFileDropList () [ 0 ] );
+ source.EndInit ();
+ source.Freeze ();
+
+ image.Source = source;
+ }
+ else if ( Clipboard.ContainsImage () )
+ {
+ BitmapSource source = Clipboard.GetImage ();
+ source.Freeze ();
+
+ image.Source = source;
+ }
+ else if ( Clipboard.ContainsText () )
+ {
+ string path = Clipboard.GetText ();
+ if ( File.Exists ( path ) )
+ {
+ BitmapImage source = new BitmapImage ();
+ source.BeginInit ();
+ source.UriSource = new Uri ( path );
+ source.EndInit ();
+ source.Freeze ();
+
+ image.Source = source;
+ }
+ }
+ }
+ }
+}
diff --git a/Daramee.IconGenerator/Properties/AssemblyInfo.cs b/Daramee.IconGenerator/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..107725a
--- /dev/null
+++ b/Daramee.IconGenerator/Properties/AssemblyInfo.cs
@@ -0,0 +1,57 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
+// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
+// 이러한 특성 값을 변경하세요.
+[assembly: AssemblyTitle ( "IconGenerator" )]
+[assembly: AssemblyDescription ( "PNG based Icon File Generator" )]
+[assembly: AssemblyConfiguration ( "" )]
+[assembly: AssemblyCompany ( "DARAM WORLD" )]
+[assembly: AssemblyProduct ( "IconGenerator" )]
+[assembly: AssemblyCopyright ( "Copyright © 2018 Jin Jae-yeon" )]
+[assembly: AssemblyTrademark ( "" )]
+[assembly: AssemblyCulture ( "" )]
+
+// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
+// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
+// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
+[assembly: ComVisible ( false )]
+
+//지역화 가능 응용 프로그램 빌드를 시작하려면 다음을 설정하세요.
+//.csproj 파일에서 내에 CultureYouAreCodingWith를
+//설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
+//사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
+//NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
+//프로젝트 파일의 UICulture 설정과 일치시킵니다.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo (
+ ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
+ //(페이지 또는 응용 프로그램 리소스 사진에
+ // 리소스가 없는 경우에 사용됨)
+ ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
+ //(페이지 또는 응용 프로그램 리소스 사진에
+ // 리소스가 없는 경우에 사용됨)
+)]
+
+
+// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
+//
+// 주 버전
+// 부 버전
+// 빌드 번호
+// 수정 버전
+//
+// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
+// 지정되도록 할 수 있습니다.
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion ( "1.0.0.0" )]
+[assembly: AssemblyFileVersion ( "1.0.0.0" )]
+[assembly: Guid ( "8CD5915B-E345-4F3B-9989-AD9475F157B6" )]
+
diff --git a/Daramee.IconGenerator/Resources/MainIcon.ico b/Daramee.IconGenerator/Resources/MainIcon.ico
new file mode 100644
index 0000000..1f804df
Binary files /dev/null and b/Daramee.IconGenerator/Resources/MainIcon.ico differ
diff --git a/icogen.sln b/icogen.sln
index 4774309..784b771 100644
--- a/icogen.sln
+++ b/icogen.sln
@@ -5,22 +5,40 @@ VisualStudioVersion = 15.0.27428.2011
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icogen", "icogen\icogen.vcxproj", "{705E43AB-CCAA-418D-9F21-062C93059F10}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Daramee.IconGenerator", "Daramee.IconGenerator\Daramee.IconGenerator.csproj", "{34109481-1F43-4408-BFB5-2965C344DB6B}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {705E43AB-CCAA-418D-9F21-062C93059F10}.Debug|Any CPU.ActiveCfg = Debug|Win32
{705E43AB-CCAA-418D-9F21-062C93059F10}.Debug|x64.ActiveCfg = Debug|x64
{705E43AB-CCAA-418D-9F21-062C93059F10}.Debug|x64.Build.0 = Debug|x64
{705E43AB-CCAA-418D-9F21-062C93059F10}.Debug|x86.ActiveCfg = Debug|Win32
{705E43AB-CCAA-418D-9F21-062C93059F10}.Debug|x86.Build.0 = Debug|Win32
+ {705E43AB-CCAA-418D-9F21-062C93059F10}.Release|Any CPU.ActiveCfg = Release|Win32
{705E43AB-CCAA-418D-9F21-062C93059F10}.Release|x64.ActiveCfg = Release|x64
{705E43AB-CCAA-418D-9F21-062C93059F10}.Release|x64.Build.0 = Release|x64
{705E43AB-CCAA-418D-9F21-062C93059F10}.Release|x86.ActiveCfg = Release|Win32
{705E43AB-CCAA-418D-9F21-062C93059F10}.Release|x86.Build.0 = Release|Win32
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Debug|x64.Build.0 = Debug|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Debug|x86.Build.0 = Debug|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Release|x64.ActiveCfg = Release|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Release|x64.Build.0 = Release|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Release|x86.ActiveCfg = Release|Any CPU
+ {34109481-1F43-4408-BFB5-2965C344DB6B}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/icogen/Main.cpp b/icogen/Main.cpp
index 937b3f8..d3f7fd7 100644
--- a/icogen/Main.cpp
+++ b/icogen/Main.cpp
@@ -202,22 +202,22 @@ bool __saveBitmap ( IWICImagingFactory * factory, const std::vector ( *i );
- entry.fileOffset = totalWritten;
+ entry.fileOffset = ( DWORD ) totalWritten;
outputStream->Write ( &entry, sizeof ( ENTRYHEADER ), nullptr );
STATSTG statstg;
std::get<1> ( *i )->Stat ( &statstg, 0 );
- totalWritten += statstg.cbSize.QuadPart;
+ totalWritten += ( size_t ) statstg.cbSize.QuadPart;
}
for ( auto i = tupleVector.begin (); i != tupleVector.end (); ++i )
{
STATSTG statstg;
std::get<1> ( *i )->Stat ( &statstg, 0 );
- int length = statstg.cbSize.QuadPart;
+ int length = ( int ) statstg.cbSize.QuadPart;
int totalRead = 0;
BYTE buffer [ 4096 ];
while ( totalRead < length )
diff --git a/icogen/icogen.rc b/icogen/icogen.rc
new file mode 100644
index 0000000..0c64f5b
Binary files /dev/null and b/icogen/icogen.rc differ
diff --git a/icogen/icogen.vcxproj b/icogen/icogen.vcxproj
index 51b62eb..8add48d 100644
--- a/icogen/icogen.vcxproj
+++ b/icogen/icogen.vcxproj
@@ -22,8 +22,15 @@
+
+
+
+
+
+
+
15.0
{705E43AB-CCAA-418D-9F21-062C93059F10}
diff --git a/icogen/icogen.vcxproj.filters b/icogen/icogen.vcxproj.filters
index f9ce2c4..c2a6b51 100644
--- a/icogen/icogen.vcxproj.filters
+++ b/icogen/icogen.vcxproj.filters
@@ -23,5 +23,18 @@
헤더 파일
+
+ 헤더 파일
+
+
+
+
+ 리소스 파일
+
+
+
+
+ 리소스 파일
+
\ No newline at end of file
diff --git a/icogen/resource.h b/icogen/resource.h
new file mode 100644
index 0000000..055e470
--- /dev/null
+++ b/icogen/resource.h
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++���� ������ ���� �����Դϴ�.
+// icogen.rc���� ���ǰ� �ֽ��ϴ�.
+//
+#define IDI_ICON1 101
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 102
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif