์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
Microsoft Windows ์ด์์ฒด์ ํ๊ฒฝ์์ ์๋ํ๋ GUI ์์ฉํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ํ C++ ์ธ์ด ๊ธฐ๋ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, 1992๋
๋ฐํ๋์๋ค.
Windows API์ C์ธ์ด ํจ์๋ค์ Wrapping ํ์ฌ C++ ์ธ์ด์ ํด๋์คํ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์๋์ฐ ํ๊ฒฝ์์ COM(Component Object Model) ๊ฐ๋ฐ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ATL(Active Template Library)๊ณผ CString ๋ฑ์ ๊ธฐ๋ฐ ํด๋์ค๋ฅผ ๊ณต์ ํ๋ ๋ฑ ๋งค์ฐ ๋ฐ์ ํ ๊ด๋ จ์ด ์๋ค.
๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ์๋์ฐ์ฆ์ฉ GUI ์์ฉํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ค๋ฉด ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ C์ธ์ด ๊ธฐ๋ฐ์ Windows API๋ฅผ ์จ์ผ ํ๋๋ฐ, ๋จ์ํ ์ด์์ฒด์ ์ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ๋ ธ์ถ์์ผ์ฃผ๋ C ํจ์๋ค์ ์งํฉ์ผ ๋ฟ์ด๊ธฐ ๋๋ฌธ์ ๋ณต์กํ UI๋ฅผ ์์ฑํ๋ ๋ฑ์ ๊ณ ์ฐจ์์ ์ธ ์์ ์ ํ ๋์๋ ํ์ฐ์ ์ผ๋ก ์ฝ๋ ๋ ธ๊ฐ๋ค๊ฐ ์๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ต์ ์ ์๋ ์ปจํธ๋กค๊ณผ ๊ฐ์ ๊ณ ์ฐจ์์ ์ธ ๊ธฐ๋ฅ๋ค์ Windows API๊ฐ ์๋ COM ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ง ์ธ ์ ์๊ธฐ ๋๋ฌธ์ Windows API๋ง์ผ๋ก๋ ํ๊ณ๊ฐ ์๋ค. ๊ทธ๋์ ์ด๊ฑธ ๊ทธ๋๋ง ์ข ํธํ๊ฒ ํด๋์ค ํํ๋ก ์ธ ์ ์๋๋ก ํด์ฃผ๋๊ฒ์ด ๋ฐ๋ก MFC์ด๋ค.
๋น์ฃผ์ผ ์คํ๋์ค์ ์ ๋ฃ ๋ฒ์ ๊ณผ Community(๊ฐ์ธ์ฌ์ฉ์์ฉ)์๋ ๊ธฐ๋ณธ์ผ๋ก ํฌํจ๋์ด ์๋ค. ๋ฌด๋ฃ์ธ 'Express' ๋ฒ์ ์๋ MFC์ ATL์ด ํฌํจ๋์ง ์๋๋ค.
Windows API์ C์ธ์ด ํจ์๋ค์ Wrapping ํ์ฌ C++ ์ธ์ด์ ํด๋์คํ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์๋์ฐ ํ๊ฒฝ์์ COM(Component Object Model) ๊ฐ๋ฐ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ATL(Active Template Library)๊ณผ CString ๋ฑ์ ๊ธฐ๋ฐ ํด๋์ค๋ฅผ ๊ณต์ ํ๋ ๋ฑ ๋งค์ฐ ๋ฐ์ ํ ๊ด๋ จ์ด ์๋ค.
๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ์๋์ฐ์ฆ์ฉ GUI ์์ฉํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ค๋ฉด ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ C์ธ์ด ๊ธฐ๋ฐ์ Windows API๋ฅผ ์จ์ผ ํ๋๋ฐ, ๋จ์ํ ์ด์์ฒด์ ์ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ๋ ธ์ถ์์ผ์ฃผ๋ C ํจ์๋ค์ ์งํฉ์ผ ๋ฟ์ด๊ธฐ ๋๋ฌธ์ ๋ณต์กํ UI๋ฅผ ์์ฑํ๋ ๋ฑ์ ๊ณ ์ฐจ์์ ์ธ ์์ ์ ํ ๋์๋ ํ์ฐ์ ์ผ๋ก ์ฝ๋ ๋ ธ๊ฐ๋ค๊ฐ ์๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ต์ ์ ์๋ ์ปจํธ๋กค๊ณผ ๊ฐ์ ๊ณ ์ฐจ์์ ์ธ ๊ธฐ๋ฅ๋ค์ Windows API๊ฐ ์๋ COM ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ง ์ธ ์ ์๊ธฐ ๋๋ฌธ์ Windows API๋ง์ผ๋ก๋ ํ๊ณ๊ฐ ์๋ค. ๊ทธ๋์ ์ด๊ฑธ ๊ทธ๋๋ง ์ข ํธํ๊ฒ ํด๋์ค ํํ๋ก ์ธ ์ ์๋๋ก ํด์ฃผ๋๊ฒ์ด ๋ฐ๋ก MFC์ด๋ค.
๋น์ฃผ์ผ ์คํ๋์ค์ ์ ๋ฃ ๋ฒ์ ๊ณผ Community(๊ฐ์ธ์ฌ์ฉ์์ฉ)์๋ ๊ธฐ๋ณธ์ผ๋ก ํฌํจ๋์ด ์๋ค. ๋ฌด๋ฃ์ธ 'Express' ๋ฒ์ ์๋ MFC์ ATL์ด ํฌํจ๋์ง ์๋๋ค.
2. ์ฌ์ฉ ๋ชฉ์ [ํธ์ง]
Microsoft Windows์ฉ GUI ์์ฉํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. C์ธ์ด๊ธฐ๋ฐ์ Windows API๋ฅผ ์ง์ ์ฌ์ฉํ ์๋ ์์ผ๋, C++์ธ์ด ๊ธฐ๋ฐ์ MFC๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ณด๋ค ๊ตฌ์กฐ์ ์ด๊ณ ๊ฐํธํ๋ฉฐ ๋๊ท๋ชจ์ ์ดํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ด ์ฉ์ดํ๋ค.
90๋ ์ด๋ฐ๋ถํฐ 2000๋ ์ค๋ฐ ์ฌ์ด์ ์๋์ฐ์ฆ์ฉ GUI ์์ฉํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋๋ฆฌ ์ฌ์ฉ๋์๋ค[1]. ํ์ฌ๋ ๊ณผ๊ฑฐ ๊ฐ๋ฐ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ง๋ณด์๊ฐ ์ฃผ๋ ์ฉ๋์ด๋ค. ์น๊ณผ ๋ชจ๋ฐ์ผํ๊ฒฝ์ด ๋๋๋์์ ๋ฟ๋ง์๋๋ผ, ๋ฐ์คํฌํฑ ์์ฉํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ ํ๊ฒฝ๋ .NET Framework๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ WinForms, WPF ๋ฑ๊ณผ ์น์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Electron ๋ฑ์ด ๋ฑ์ฅํ๋ฉด์ ๋์ด์ ์ ๊ท๊ฐ๋ฐ์์ MFC๋ ํ๋นํ ์ ํ์ง๊ฐ ์๋๊ฒ ๋์๋ค.
MS์์ ๊ฐ๋ฐํ๋ ํ๋ก๊ทธ๋จ ์ค Microsoft Office๋ ์๋ ์ด์์ฒด์ ์์ฒด ๋ฑ ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ ์ ๊ณต๋๋ ์ ํ์ MFC๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. MFC๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ๋ ๊ฒ ์ค ๊ฐ์ฅ ์ ๋ช ํ ๊ฒ์ Visual Studio 6.0์ ํฌํจ๋์ด ์๋ Visual C++ 6.0 IDE์ผ ๊ฒ์ด๋ค. ํ์ง๋ง .NET Framework๊ฐ ๋ฐํ๋๋ฉด์ ํ์ฌ์ Visual Studio๋ ๋ท๋ท์ WPF๋ก ๊ฐ๋ฐ๋๊ณ ์๋ค.
์ฌ์ค MFC๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ์ค๊ณง Visual Studio์ ํฌํจ๋์ด ์์๊ธฐ ๋๋ฌธ์ด๋ผ๋ ๋ง์ด ์๋ค. ๋ ์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์กด์ฌํ์ง๋ง(ํน์ ์กด์ฌ๋ฅผ ์ ๋ชฐ๋ผ์) ๊ตณ์ด ์ฐพ์ง ์๊ณ ํฌํจ๋์ด ์๋ ๊ฒ์ ์ฌ์ฉํ๋ค๋ ๊ฒ. ๊ทผ๊ฑฐ ์๋ ๋ง์ด ์๋ ๊ฒ์ด, ํ์ธ์๊ฒ ์์ ๋ฌผ์ ์ ๋ฌํ๋ค๊ฑฐ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ GUI ์์ ํ๋ก๊ทธ๋จ๊ณผ ํจ๊ป ์ธ๋ถ ๊ณต๊ฐํ๋ค๊ฑฐ๋ ํ ๋์๋ MFC์ ๊ฒฝ์ฐ ๋น์ฃผ์ผ ์คํ๋์ค ๋ฒ์ ๋ง ๋ง์ถฐ์ฃผ๋ฉด ๋ณดํต ๋ณ ๋ฌธ์ ๊ฐ ์์ง๋ง, ๋น์ฃผ์ผ ์คํ๋์ค์์ ๊ธฐ๋ณธ์ง์ํ์ง ์๋ ์ธ๋ถ ๊ธฐ์ ์ ์ฌ์ฉํ์ ๊ฒฝ์ฐ์๋ ๊ทธ๊ฒ์ ๋ํ ์ค์น์ ์ค์ ๋ฐฉ๋ฒ๋ ํจ๊ป ์ ๊ณตํด์ผ ํ๋๋ฐ ์ด๊ฒ์ด ๊ท์ฐฎ๊ธฐ ๋๋ฌธ์ด๋ค.
90๋ ์ด๋ฐ๋ถํฐ 2000๋ ์ค๋ฐ ์ฌ์ด์ ์๋์ฐ์ฆ์ฉ GUI ์์ฉํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋๋ฆฌ ์ฌ์ฉ๋์๋ค[1]. ํ์ฌ๋ ๊ณผ๊ฑฐ ๊ฐ๋ฐ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ง๋ณด์๊ฐ ์ฃผ๋ ์ฉ๋์ด๋ค. ์น๊ณผ ๋ชจ๋ฐ์ผํ๊ฒฝ์ด ๋๋๋์์ ๋ฟ๋ง์๋๋ผ, ๋ฐ์คํฌํฑ ์์ฉํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ ํ๊ฒฝ๋ .NET Framework๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ WinForms, WPF ๋ฑ๊ณผ ์น์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Electron ๋ฑ์ด ๋ฑ์ฅํ๋ฉด์ ๋์ด์ ์ ๊ท๊ฐ๋ฐ์์ MFC๋ ํ๋นํ ์ ํ์ง๊ฐ ์๋๊ฒ ๋์๋ค.
MS์์ ๊ฐ๋ฐํ๋ ํ๋ก๊ทธ๋จ ์ค Microsoft Office๋ ์๋ ์ด์์ฒด์ ์์ฒด ๋ฑ ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ ์ ๊ณต๋๋ ์ ํ์ MFC๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. MFC๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ๋ ๊ฒ ์ค ๊ฐ์ฅ ์ ๋ช ํ ๊ฒ์ Visual Studio 6.0์ ํฌํจ๋์ด ์๋ Visual C++ 6.0 IDE์ผ ๊ฒ์ด๋ค. ํ์ง๋ง .NET Framework๊ฐ ๋ฐํ๋๋ฉด์ ํ์ฌ์ Visual Studio๋ ๋ท๋ท์ WPF๋ก ๊ฐ๋ฐ๋๊ณ ์๋ค.
์ฌ์ค MFC๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ์ค๊ณง Visual Studio์ ํฌํจ๋์ด ์์๊ธฐ ๋๋ฌธ์ด๋ผ๋ ๋ง์ด ์๋ค. ๋ ์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์กด์ฌํ์ง๋ง(ํน์ ์กด์ฌ๋ฅผ ์ ๋ชฐ๋ผ์) ๊ตณ์ด ์ฐพ์ง ์๊ณ ํฌํจ๋์ด ์๋ ๊ฒ์ ์ฌ์ฉํ๋ค๋ ๊ฒ. ๊ทผ๊ฑฐ ์๋ ๋ง์ด ์๋ ๊ฒ์ด, ํ์ธ์๊ฒ ์์ ๋ฌผ์ ์ ๋ฌํ๋ค๊ฑฐ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ GUI ์์ ํ๋ก๊ทธ๋จ๊ณผ ํจ๊ป ์ธ๋ถ ๊ณต๊ฐํ๋ค๊ฑฐ๋ ํ ๋์๋ MFC์ ๊ฒฝ์ฐ ๋น์ฃผ์ผ ์คํ๋์ค ๋ฒ์ ๋ง ๋ง์ถฐ์ฃผ๋ฉด ๋ณดํต ๋ณ ๋ฌธ์ ๊ฐ ์์ง๋ง, ๋น์ฃผ์ผ ์คํ๋์ค์์ ๊ธฐ๋ณธ์ง์ํ์ง ์๋ ์ธ๋ถ ๊ธฐ์ ์ ์ฌ์ฉํ์ ๊ฒฝ์ฐ์๋ ๊ทธ๊ฒ์ ๋ํ ์ค์น์ ์ค์ ๋ฐฉ๋ฒ๋ ํจ๊ป ์ ๊ณตํด์ผ ํ๋๋ฐ ์ด๊ฒ์ด ๊ท์ฐฎ๊ธฐ ๋๋ฌธ์ด๋ค.
3. ๋จ์ [ํธ์ง]
- ๋น์ฃผ์ผ ์คํ๋์ค 2019 ๋ฒ์ ์์๋ ์ฌ์ ํ ์ฌ์ฉ ๊ฐ๋ฅํ๋, ๋ฉ์ด์ ๋ฒ์ ์ ๋น์ฃผ์ผ ์คํ๋์ค 2015 ์์ ์ MFC 14์์ ๋ฉ์ถฐ์๊ณ ๋ง์ด๋ ์ ๋ฐ์ดํธ๋ง ์ ๊ณต๋๋ ์ํฉ์ด๋ค. 2015๋ ์ดํ MFC๋ฅผ ์๋ก ๊ณต๋ถํ๋๊ฒ์ ์๊ฐ๋ญ๋น์ด๋ค.
- ์์ํ๊ฒ C์ธ์ด๋ก Win32 API๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ ํ๋ก๊ทธ๋จ์ ๋นํ๋ฉด ๋ฌด๊ฒ๋ค. ๋ฌผ๋ก Qt๋ GTK+์ ๋น๊ตํ๋ค๋ฉด์ผ...
- ATL๊ณผ ๊ณต์ ๋๋ CString, CList ๋ฑ์ ํด๋์ค๋ ๋งค์ฐ ๊ฐ๋ ฅํ์ง๋ง, GUI๋ฅผ ์ํ์ฌ ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ Windows API์ ๋งค์ฐ ์์ Wrapper ์ ๋์ด๋ค. ๊ฒ๋ค๊ฐ MFC๋ก ๊ฐ๋ฐํ๋ค๊ณ ํด์ Windows API๋ฅผ ์ฐ์ง ์์ ์๋ ์๋ค.
- Visual C++ 2008 Feature Pack์์ ์ถ๊ฐ๋ ๋ฆฌ๋ณธ ์ธํฐํ์ด์ค๋ Microsoft Office์ ๋น๊ตํด ๋ณด๋ฉด ๋งค์ฐ ์์ฑํ๊ณ ์กฐ์กํ ํฐ๊ฐ ๋๋ค. ์ด๋ ํด๋น ํด๋์ค๋ค์ด MS์์ ์ ์๋ ๊ฒ์ด ์๋๋ผ ํ์ฌ(http://www.bcgsoft.com/)์์ ์ ์ํ๊ฒ์ MS๊ฐ ๊ตฌ์ ํ์ฌ ํฌํจ์์ผฐ๊ธฐ ๋๋ฌธ์ด๋ค.
- GUI ๋์์ธ ๊ธฐ๋ฅ์ด ๋งค์ฐ ๋ถ์คํ๋ค. ์ง์ UI๋ฅผ ๊ทธ๋ ค์ ์ค๊ณํ ์ ์๋ ๋ถ๋ถ์ "์๋ ๋ฆฌ์์ค"๋ผ๋ ๋งค์ฐ ํน์ดํ ํ์์ผ๋ก ์ฒ๋ฆฌ๋๋ ๋ค์ด์ผ๋ก๊ทธ(๋ํ์์)๋ง ๊ฐ๋ฅํ๋ฉฐ, ์ผ๋ฐ์ ์ธ ํ๋ฉด์ ์ง์ ์ฝ๋๋ก ๊ตฌํํด์ผ ํ๋ค. VB6.0์ด๋ ๋ท๋ท์ WinForm/WPF, Qt์ QtDesigner ๋ฑ๊ณผ ๋น๊ตํ๋ฉด ์ด๋ญ๋ณ ์๋ฆฌ๊ฐ ์ ๋ก ๋์จ๋ค.
- ๋ท๋ท ์ถ์ ์ดํ๋ก MS๋ก๋ถํฐ ๋ฒ๋ ค์ก๋ค๋ ์๋ฌธ์ด ์๋ค. ์ค์ ๋ก VS2008 ์ดํ๋ถํฐ MFC์ ํฐ ๋ณํ๊ฐ ์์ด์ก๊ณ , VS2012๊น์ง๋ MFC๊ฐ ํ์ฌ๋์ด ๋ฆด๋ฆฌ์ค ๋์์ง๋ง VS2015๋ถํฐ๋ ๋ฐ๋ก ํจํค์ง๋ฅผ ์ค์นํด์ ์ฌ์ฉํด์ผ ํ๋ค.
- ์ง๋ ๋ช๋ ์ MFC์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์๊ฐ ๊ต์ฅํ ๋ฐฉ๋ํด์ ธ์ ํ์ฌ๋ MS์์ MFC๋ฅผ ์ ์ง/๊ฐ๋ณด์ํ๋ AFX ํ์์๋ ํฌ๊ธฐํ๋ค๊ณ ํ ์ ๋๋ก ์ฌ๋ฌ ๋ฉด์์ ๊ผฌ์๋ค๊ณ ํ๋ค. MFC ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๋ ์์ฑ๋๋ ์ค์ ๋ค์ด ์ ๋๋ก ์ค์ ๋์ง ์๋๋ค๋์ง, ๋ฆฌ์์ค๋ฅผ ์์ ํ ํ ์ฝ๋์ฐฝ์์ ์ ์ฅ์ ํ๋ฉด ๋ฆฌ์์ค ํค๋ํ์ผ์ ์ธ์ฝ๋ฉ์ด ๋ฌธ์ ๊ฐ ๋๋ค๋์ง... ๊ฐ์ข ์ค๋ฅ๊ฐ ๋๋ฌดํ๋ ์ค. ์ด๋ฌํ ๋ฌธ์ ๋ก MS/AFX ํ์ด ์ ๋ํ๊ฒ ๊น์ด์ง๋ง ๊ทธ๋ค๋ ์ธ๊ฐ์ธ์ง๋ผ ์ด์ฉ ์ ์๋ ๋ถ๋ถ[2]์ด๋ค.
C++ ์ธ์ด์ ์๋์ฐ ์ด์์ฒด์ ์ ๋ํ ์ดํด๊ฐ ์๋ค๋ฉด ๋ชป ์จ๋จน์ ์ ๋์ ๋ฌผ๊ฑด์ ์๋๋ค. MFC๋ C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, ์๋์ฐ ์ด์์ฒด์ ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๊ฒ์ด๋ฏ๋ก ์ด ๋์ ๋ํ ์ ํ ํ์ต์ด ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
ํ์ง๋ง MFC์ ํด๋์ค/ํจ์/๋ณ์๋ค์ ๋ค์ด๋ฐ ์ผ์ค, Visual Studio๊ฐ ์๋ ์์ฑํด์ฃผ๋ Template๋ค์ ๊ตฌ์กฐ๋ ์ ๋ง ์ต์ ์ด๋ค. ๊ทธ๋ฐ ์ฝ๋๋ค์ ๋ฌผ๋ค๋ฉด ์คํ๊ฒํฐ ์ฝ๋๊ฐ ํ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ MFC๋ C++ ํ์ค์์ ๋ฒ์ด๋ MS์ ๋นํ์ค ํจ์๋ค์ ๊ต์ฅํ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์ด๋ฐ ์ฝ๋๊ฐ ๋ง์์ง๋ฉด ์ฐจํ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ฌ์ง๋ ์์ด์ง๋ค.
4. ๋์[ํธ์ง]
์๋์ฐ ์์ฉํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ธฐ ์ํด ๋ฐ๋์ Win32 API ๋๋ MFC๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ ์๋๋ค.
- C++๋ฅผ ์ฌ์ฉํด ๊ฐ๋ ฅํ๊ณ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง UI๋ฅผ ๊ฐ๋ฐํ๊ณ ์ถ์๊ฐ?
- ๊ทธ๋ ๋ค๋ฉด Qt ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ณด์.
- Qt๋ Windows, macOS, Linux๋ฅผ ๋ชจ๋ ์ง์ํ๋ C++ ํ๋ ์์ํฌ๋ก, ๋จ์ํ GUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ผ ์์ฒด์ ์ผ๋ก ๋คํธ์ํฌ, ํ์ผ ๋ฐ DB ์ฒ๋ฆฌ, XML ์ง์, ๊ฐ๋ ฅํ String ํด๋์ค ๋ฑ ๋ฐฉ๋ํ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ง๊ณ ์๋ค.
- ์๋์ฐ ์์คํ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.[3]
- ํ๋ฒ๋ง ์จ ๋ณด๋ฉด MFC์ ๋ค์ด์ผ๋ก๊ทธ ํธ์ง๊ธฐ๋ ์ฐ๋ ๊ธฐ๋ก ๋ณด์ด๊ฒ ๋ GUI Designer๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋น์ฃผ์ผ ์คํ๋์ค์ ํ๋ฅญํ ์ฐ๋๋๋ค. ํํ์ด์ง
- ๋ท๋ท์ WPF์ ๋น์ทํ QtQuick์ ์ ๊ณตํ๋ค. QML์ ์์ํฉ๋๋ค.
- C++ Builder๋ ํ๋ฅญํ GUI ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ง IDE์ด๋ฉฐ, C++๋ฅผ ์ด์ฉํ์ฌ ๋์ผํ ํธ์์ฑ์ ๋๋ฆด ์ ์๋ค. ๋ค๋ง ์ฌ์ฉ๋ฅ ์ด ์ ์ด ์๋ฃ๋ฅผ ์ฐพ๊ธฐ๊ฐ ํ๋ค๋ค. ๋ํ, IDE๊ฐ ํ๊ตญ์ดํฉ์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ์์ด์ ์ต์ํ์ง ์์ผ๋ฉด ๊ฐ๋ฐํ๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๋ค.
- ๋ค๋ฅธ ์ธ์ด๋ ์ด๋ค๊ฐ? ๋ฐ๋์ C++๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค๋ฉด?
- .NET Framework ํ๋ซํผ์๋ Windows Forms์ WPF์ ๋ ๊ฐ์ง GUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋์ด ์๋ค. Windows Forms๋ ์ฌ์ด ๋์ด๋ ๋๋ถ์ ์ด๋ณด์๊ฐ ์ ํ๊ธฐ์๋ ์ฉ์ดํ๋ค. ๋ํ C#์ C++๊ณผ๋ ๋น๊ต๋ ๋์ง ์๋ ๋์ ์์ฐ์ฑ์ ์๋ํ๋ ์ธ์ด์ด๋ค. ๊ธฐ์กด ์๋์ฉ C/C++ ํ๋ก์ ํธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐ๋๋ ์์ํ๋ฏ๋ก ์ผ๋จ ํต์ฌ ์ฝ๋๋ ๊ทธ๋๋ก ๋ ์ฑ ๊ป๋ฐ๊ธฐ๋ถํฐ ์ฐจ์ฐจ ๊ต์ฒดํ ์๋ ์๋ค. ๋ท๋ท ํ๋ ์์ํฌ๋ก ๊ฐ๋ฐ๋ ํ๋ก๊ทธ๋จ์ ๋ํ์์ด๋ผ๋ฉด ๋น์ฃผ์ผ ์คํ๋์ค ์ค 2008 ์ดํ์ ๋ฒ์ ๋ค(WPF๋ก ๊ฐ๋ฐ๋์๋ค)์ ๋ค ์ ์์ ๊ฒ์ด๋ค. ์ปค๋ค๋ ์ฉ๋์ ๋ท๋ท ๋ฐํ์ ๋ฐฐํฌ๊ฐ ๋ถ๋ด์ค๋ฝ๋ค๋ฉด, ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ์์๋ถํฐ ํ์ฉํด ๋ณด์. ๋ํ ์น ์ธ์คํจ๋ฌ ๋ฑ์ ์ด์ฉํ๊ฑฐ๋ ์ธ์คํจ๋ฌ๊ฐ ๋ท๋ท ์ค์น ์น์ฌ์ดํธ๋ฅผ ๋์์ฃผ๋ ๋ฑ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐฐํฌ์ ๋ํ ๋ถ๋ด์ ์ค์ผ ์๋ ์๋ค. ์ด์ฐจํผ ์๋์ฐ 7๋ถํฐ๋ ๋ท๋ท ํ๋ ์์ํฌ 3.5๊ฐ, ์๋์ฐ 8๋ถํฐ๋ 4.5๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ๋ผ ์๊ธฐ๋ ํ๊ณ , ATI ์นดํ๋ฆฌ์คํธ ์ปจํธ๋กค ์ผํฐ์ฒ๋ผ ์ฅ์น ๋๋ผ์ด๋ฒ ๊ด๋ จ ์ ํธ๋ฆฌํฐ๊ฐ ๋ท๋ท ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋๊ธฐ๋ ํ๋ ๋ฑ, ์์ ํ ๋ท๋ท์ด๋ ๊ฒ๊ณผ ๋ด์ ์๋ค๊ฐ ๊ฐ์๊ธฐ ์ค์นํด์ผ ๋๋ ์ผ์ ๋ง์ด ์ค์ด๋ค์๋ค.
- Python์ Tcl/Tk, PyQt, PyGTK ๋ฑ ๋ค์ํ GUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐ๊ฒฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- Electron์ ์ฌ์ฉํ๋ฉด HTML + CSS + JavaScript(Node.js)๋ก ๋ฐ์คํฌํฑ ํ๊ฒฝ์ ๋ง๋ค ์ ์๋ค! ๋น์ฅ Atom๊ณผ ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋๊ฐ ์ค๊ธฐ๋ก ๋์ ์๋ค. ๋จ์ ์ ๊ตฌํ ๋ฐฉ์์ด ์ผ๋จ ๋ธ๋ผ์ฐ์ ํ๋๋ฅผ ๋์๋๊ณ ์์ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ์ฉ๋์ด ํฌ๊ณ ํผํฌ๋จผ์ค๊ฐ ๋จ์ด์ง๋ค๋ ์ . ์ด ๋ถ๋ถ์ PC์ ํ๊ท ์คํ์ด ์ฌ๋ผ๊ฐ๋ฉด ์ฐจ์ฐจ ํด๊ฒฐ๋ ๋ฏํ๋ค. ์์์ ์๋ก ๋ ๋ท๋ท ํ๋ซํผ๊ณผ ๋น๊ตํ์ ๋, ๋ค์ํ ์ด์์ฒด์ ๋ฅผ ์ง์ํ๋ ํฌ๋ก์คํ๋ซํผ ํ๋ ์์ํฌ๋ผ๋ ๊ฒ์ด ์๋นํ ์ฅ์ ์ด๋ค. ํ์ํ๋ค๋ฉด ํ๋ก ํธ์๋์๋ง Electron์ ์ฐ๊ณ , IPC์ FFI ํน์ wasm์ ์ด์ฉํด ๋ฐฑ์๋๋ C/C++ ๋ฑ์ผ๋ก ๋์ฒดํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. MS๊ฐ GitHub๋ฅผ ์ธ์ํ ์ดํ๋ถํฐ๋ ์ด Electron์ ๋ฐ์ด์ฃผ๊ณ ์๋ค.
- 2010๋ ๋์ ๋์ธ์ธ ์น์ ํตํด UI๋ฅผ ๊ตฌํํ ์๋ ์๋ค. ์๋ฒ ํต์ ์ด ํ์์๋ ๋ก์ปฌ ํ๋ก๊ทธ๋จ์ธ๋ฐ๋ ์น์ผ๋ก ๊ตฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ ๋์ด๋๊ณ ์์ผ๋ฉฐ, ์์คํ ์ ๋ง์ ธ์ผ ํ๊ฑฐ๋ ํผํฌ๋จผ์ค๊ฐ ํ์ํ ๋ถ๋ถ์ ๋ฐ๋ก ์น API ์๋ฒ ๋ ธ๋ฆ์ ํ๋ ์๋น์ค ํ๋ก์ธ์ค๋ก ๋ถ๋ฆฌ์ํจ ๋ค UI์ ํต์ ํ๋ ์์ผ๋ก ํด๊ฒฐํ๋ค.[6] ์ผ๋ก๋ก ํฌ๋ฃจ์ ์ SSD ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ(Crucial Storage Executive)์ด ์ด๋ฐ ์. ๊ธฐ์กด ํ๋ก๊ทธ๋จ์ UI์ ์ฝ์ด๋ถ๊ฐ ์ ๋ถ๋ฆฌ๋ผ ์๋ค๋ฉด ์๊ฐํด๋ณผ๋ง ํ๋ค.
[1] ๋น์ทํ ์๊ธฐ ๋์ฒด์ ๋ก๋ Object Pascal ์ธ์ด ๊ธฐ๋ฐ์ ๋ธํ์ด์ Visual Basic์ด ์์๋ค.
[2] AFX ํ์์ ๊ด๋ฆฌํ๋ ํจ์๊ฐ ์ผ๋ง๋ ๋ง๋๋ฉด ์๋์ฐ๊ฐ ํ๋ฒ ์
๊ทธ๋ ์ด๋ ๋์์ ๋, MFC๋ ๋ฐ๋
๋ค์ ์
๊ทธ๋ ์ด๋๊ฐ ๋ ์ ๋๋ผ๊ณ ํ๋...
[3] ๋น์ฐํ๊ฒ ์ง๋ง ์๋์ฐ ์ธ ์ด์์ฒด์ ์์๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๋ค.
[4] ์ดํด๋ฆฝ์ค์์ ์ฌ์ฉ๋๋ค. ํํ์ด์ง
[5] 1995๋
์ต์ด ๊ณต๊ฐ๋์๋ค
[6] ์์ ์์ ๋ ์ผ๋ ํธ๋ก ๋ ๋ด๋ถ์ ์ผ๋ก๋ ์ด๋ฐ ๊ตฌ์กฐ์ด๋ค.