์ฃ์กํฉ๋๋ค. ์ด๊ฒ์ ๋ฌธ์ ๊ฐ๋์ง ์์ต๋๋ค. ๋์ ๊ธฐ๋ณธ WSL ํฐ๋ฏธ๋ (ํนํ ์ฐ๋ถํฌ)์ ์ฌ์ฉํ์ฌํ๋ ์์ ์ ์ค๋จํ์ง ์๋๋กํ๋ ์ ์ / ์์ฒญ์ ๊ฐ๊น์ต๋๋ค. ํค.
๊ธฐ๋ณธ WSL ํฐ๋ฏธ๋์ ์
๋ ฅํ๋ ๊ฒ์ ๋ฐฉ์ก ์ค์ ์
๋ ฅํ๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋๋ค. notepad.exe
์กฐ์ฐจ๋ ๋ค๋ฅธ Windows ์ฑ์๋์๋ ๋ถ๋๋ฌ์์ด ์์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋ Windows์ ๊ฒฝ์ฐ 75ms ์ด์ (๋๋ถ๋ถ์ Electron ๊ธฐ๋ฐ ์ฑ์ ๊ฒฝ์ฐ 200 ~ 250ms ์ด์)์ด ์๋ 10ms์ ์
๋ ฅ ์ง์ฐ์ด์๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋ ๊ฒฝ์ฐ.
WSL ํฐ๋ฏธ๋์ด notepad.exe
๋ณด๋ค ๊ธฐ๋ถ์ด ์ข์์ง๋ ์ด์ ๋ ๋ฌด์์ด๋ฉฐ์ด ํฅ์๋ UI๋ ํฅํ ๋ชจ๋ Windows ์ฑ์ ์ ์ฉ๋ ๊ฒ์
๋๊น?
๋ ผ์ํ๊ณ ์ถ์ง ์๋ค๋ฉด ์ธ์ ๋ ์ง ๋ซ์ผ์ญ์์ค. ๋๋ ์ฃผ๋ก ๋ฏธ๋์ ์ด๋ค ์ ํ์ ํ๊ท๊ฐ ์ผ์ด๋์ง ์๋๋ก ๋ง๋ ๊ฒ์ด ์ผ๋ง๋ ์ข์์ง ์ธ์ํ๊ธฐ ์ํด ๊ทธ๊ฒ์ ์ด์์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์์ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ์ผ์ ์ํ๊ณ ์๋ค๊ณ ๋งํ ๋ ์ ๋ง ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋งค์ผ ๋ง์ ๋ถ๋ง์ ๋ฃ๊ณ ์ด์ ๊ฐ์ ๊ฒ์๋ฌผ์ ์ ์ ํ ๊ณต๊ธฐ์ ํธํก์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
๋ํ ๋น์ ์ด ๊ทธ๊ฒ์ ์ฝ๋ ๊ฒ์ ์ง์น ๋๊น์ง ๋๋ ๋น์ ๊ณผ ์ด๊ฒ์ ํ ๋ก ํ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ์ํ๋ ํ์ ์กฐ์น๋ฅผ ์์ฒญํ์ญ์์ค. ๋๋ ๋ด ์ผ์ ๋ํด ๋ฒ์ฑํฉ๋๋ค. :ํผ
ํ ์คํธ๋ฅผ ํ๋ฉด์ ํ์ ํ ๋ Windows์ ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ๋ณด๋ค ์ฐ๋ฆฌ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ง๋๋ ๊ฒ์ด ๋ฌด์์ธ์ง์ ๋ํด ๊ต์ก์ ์ธ ์ถ์ธก์ํด์ผํ๋ค๋ฉด ๋ง ๊ทธ๋๋ก ์ฐ๋ฆฌ์ ์ ์ผํ ์์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค! ๋ํ ์๋ง๋ Windows๊ฐ์ด ์์ ์ ์ํํ๋ ๋ฐ ํ์ํ ๊ฐ์ฅ ์ค๋๋๊ณ ๊ฐ์ฅ ๋ฎ์ ์์ค์ API๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ผ ๊ฒ์ ๋๋ค.
๋์ดํ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์๋ ์ผ์ข ์ ๋ ์ด์ด ๋๋ ํ๋ ์ ์ํฌ๊ฐ ํฌํจ๋์ด ์๊ฑฐ๋ Electron ๋ฐ Javascript์ ๋ํด ์ด์ผ๊ธฐํ๊ธฐ ์์ํ ๋ ๋ง์ ๋ ์ด์ด์ ํ๋ ์ ์ํฌ๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ถ๊ฐ ์ปจํธ๋กค์ด ์ฒจ๋ถ๋์ง ์์ ๋งค์ฐ ํน๋ณํ์ง ์์ ์ฐฝ ํ๋๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๋ณด๋ค ํจ์ฌ ๋ณต์กํ UI ํ๋ ์ ์ํฌ (WPF, WinForms, UWP, ์ ์). ๊ทธ๋ฆฌ๊ณ ์ฃผ๋ฆ์์ด GDI์ PolyTextOut ์ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ์ฐฝ ํ๋ฉด์ ๋ฐ๋ก ๋คํํฉ๋๋ค.
notepad.exe
์กฐ์ฐจ๋ ์ฐฝ์ ์ฌ๋ฌ ์ปจํธ๋กค์ด ์๊ณ ํธ์ง ์ปจํธ๋กค์์ ์ผ์ข
์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ ๋ ์ด์์ (์๋ง๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ ๊ฒ์)์ ํ์
ํ๊ณ ์์ต๋๋ค. ๊ตญ์ ํ ์ง์์์ํ ํ๋ ์ ์ํฌ ...)
๋ฌผ๋ก ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ํธ๋ ์ด๋ ์คํ๊ฐ ์์์ ์๋ฏธํ๊ธฐ๋ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ฒ๋ผ ์์ ํ ๊ตญ์ ์ ์ธ ํ ์คํธ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. RTL? ์ง๊ธ์ ์ด๋ ์์ญ์ด ์์ต๋๋ค. ์๋ก ๊ฒ์ดํธ ์๊ณผ ๊ทธ๋ฆผ ์ด๋ชจํฐ์ฝ? ์ฐ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ๋์ฐฉํ์ง๋ง ์์ง ๊ฑฐ๊ธฐ์ ์์ง ์์ต๋๋ค. ์ธ๋์ด ์คํฌ๋ฆฝํธ? ์๋.
์ฐ๋ฆฌ๋ ์ ์ด๋ฐ๊ฐ์? ํ๋์ ๊ฒฝ์ฐ, conhost.exe
๋ ๋จผ์ง์ฒ๋ผ ์ค๋๋์์ต๋๋ค. ๋๋ถ๋ถ์ ๋ค๋ฅธ ํ๋ ์ ์ํฌ๊ฐ ์์ฑ๋๊ธฐ ์ ์ ์์ฑ ๋์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฒ์ ๋ฒ ์ด ๋ฉํ ํ๋จ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค. ๋ํ ํ๋ ์ ์ํฌ ๋ ํ๋ ์ ์ํฌ์ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ธฐ ์ ์ ์ ์ด์ ์ฒด์ ๋ฒ์ ๋๋ ์ฅ์น๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๊ฐ์ฅ ๋จผ์ ๊ฐ์ ธ์์ผํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ํ ๋ฎ์ / ํ์ ์์ค์ ์ ์งํฉ๋๋ค. ์๋ํฉ๋๋ค. ๋ํ C / C ++๋ก ์์ฑ๋์๋๋ฐ, ์ด๋ ์ฐ๋ฆฌ๊ฐ ์ป์ ์์๋๋งํผ ๋ฎ๊ณ ๋ฒ ์ด ๋ฉํ์
๋๋ค.
์ด UI ํฅ์์ด Windows์ ๋ค๋ฅธ ์ฑ์๋ ์ ์ฉ๋ฉ๋๊น? ๊ฑฐ์ ํ์คํ์ง ์์ต๋๋ค. ๊ทธ๋ค์ ์ข์ ์ผ๊ณผ ๋์ ์ผ์ ๋๋ฌด ๋ง์ดํฉ๋๋ค. ์๋์ผ๋ก ํฝ์ ์ ๊ณ์ฐํ๊ฑฐ๋ ๊ธ๊ผด์ ์ ์ฉ๋๋ ์คํ์ผ์ ์ ๊ฒฝ์ ์ฐ์ง ์๊ณ ๋ชจ๋ ์ธ์ด์์ ๋ณต์กํ ๋ฐฉ์์ผ๋ก ํ๋์ ๋ฉ์๋์ ๋ ์ด์์ ํ ์คํธ๋ฅผ ํธ์ถ ํ ์์๋ ๋ฅ๋ ฅ์ด ๋ถ๋ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ ํฝ์ ๊ณ์ฐ, ๋ํฐ ์์ญ ์ํ, ์คํฌ๋กค ์์ญ ๊ด๊ธฐ ๋ฑ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ค๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์งํํ ์ ์๋๋กํฉ๋๋ค. ๋๋ ๋ํ ๋๊ตฐ๊ฐ๊ฐ "์ฐฝ ํ๋จ์ ์ํ ํ์ ์ค์ ์ถ๊ฐ ํ ์ ์๋?"๋ผ๊ณ ๋งํ๋ฉด UI ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฑฐ์ ํด๋ฆญํ์ฌ ์ ์๋ฆฌ๋ก ๋๋๊ทธ ํ ์ ์์ผ๋ฉฐ ์ฐ๋ฆฌ์ ๊ฐ์ ๊ณณ์์ ์๋ ํ ๊ฒ์ด๋ผ๋ ์ ์ด ๋ถ๋ฝ์ต๋๋ค. ์์ํ ๋ฐฑ ๋ก๊ทธ ํญ๋ชฉ์ด์๊ณ ๊ตฌํ์ ๋ํด ์๊ฐํ ๋ ๊ฐ์ด ์์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํด๋ณดํ์ง ์๋๋ก ๋ ธ๋ ฅํ ๊น์? ์! ์ง๊ธ์ ์ผ์ข ์ ์๋ ํ๋ก์ธ์ค์ ๋๋ค. ๋ฌด์ธ๊ฐ๊ฐ ๋๋ ค์ง๊ณ ์์์ ํ์ธํ ๋ค์ WPR์ ๊บผ๋ด ์ถ์ ์ ์์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋จ๊ฑฐ์ด ๊ธธ์ ์ณ๋ค๋ณด๊ณ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ถ๋ก ํ๊ณ ๊ฐ์ ํ๋ ค๊ณ ๋ ธ๋ ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ง์ง๋ง ํ๋์ฃผ๊ธฐ์์ ์ฐ๋ฆฌ๋ ์๋-ํฌ-์๋ ์ฑ๋ฅ์ ํฅ์์ํฌ ์์๋ ์ฃผ์ ์์ญ์ผ๋ก ํ ํ ๋น์ ์ด์ ์ ๋ง์ถ๊ณ ๊ธฐ๋ณธ ์์ฒญ์ ๋ํด ์คํ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐ๋ณต๊ธฐ์ ๊ฐ์ ํ์ฌ๋๋ฅผ ์ฌ์ฉํ๋๋ก ์ฝ๋์ ํค์ ๋ณ๊ฒฝํ์ต๋๋ค. ๊ฐ ์ฒ๋ฆฌ ์์ค์ ๋ํด ์ ํ ๊ณต๊ฐ์ผ๋ก ๋ณํ ๋ฐ ํ ๋นํ๋ ๋์ ๋ฒํผ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ ์ณ๋๊ณ @bitcrazed ๋ ํน์ ๋ฐฉ์์ผ๋ก ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์๋ํํ๊ธฐ๋ฅผ ์ํ์ง๋ง ์์ง์ด๋ฅผ ์ํ ํ ์ ์ด ๋ ํ๊ฒฝ์ ์์ง ํ์ ํ์ง ๋ชปํ์ต๋๋ค. Windows Engineering System์ ๋งค์ผ ๋ฐค ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์คํํ์ฌ ์ ์ฒด ์ด์ ์ฒด์ ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค ์๋์ง ์ ์์๋ ๋๋ต์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ฉฐ ๊ธฐ์ ์ ์ผ๋ก๋ ์์ฒด ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ฝ์ ํ ์์๋ ์ธ๋ฐํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์์ง ๊ทธ๊ฒ์ ๋ํด ์ดํดํ์ง ๋ชปํ์ต๋๋ค. ์๋ํ ๋ ๋ฐฉ์์ผ๋ก์ด ์์ ์ ์ํ ํ ์์๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์๋ค๋ฉด ๋ชจ๋ ๊ท๋ฅผ ๊ธฐ์ธ์ ๋๋ค.
๋ ์๊ณ ์ถ์ ๊ฒ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์. ํ๋ฃจ ์ข ์ผ ๊ฐ ์ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๊ฒ์ํ๊ธฐ ์ ์์ด ๋ต์ฅ์์ 15 ๊ฐ์ ํ์ ํธ์ฒ๋ผ ์ญ์ ํ์ต๋๋ค ....
์ ์์ค Windows API์ ๋ํด ๋งํ๋ฉด ์ฝ์ (conhost.exe, cmd.exe ...) ๋ฐ WSL (wsl.exe, LxssManager.dll ...)์ ๋ชจ๋ _user mode_ ๊ตฌ์ฑ ์์๊ฐ C ++ _STL_์ ์์ฒญ๋๊ฒ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฌธ์์ด ์กฐ์, ๋ฉ๋ชจ๋ฆฌ ํ ๋น, ๊ฐ์ ํ ์ด๋ธ ๋ฑ์์ C ๋ง ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๊น?
C ++ STL์ "์๋ฑํ๊ฒ"์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ์ง ์์ต๋๋ค. ๊ทธ๋ค์ ํ์คํ ์ปฌ๋ ์ ์ ์ผ๋ถ์ ์๋ง๋ ์ฝ๊ฐ์ ๋ฌธ์์ด ์กฐ์๊ณผ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ๊ธฐ์ ๊ธฐ์ ์ฌ์ฉํฉ๋๋ค. ๋๋ STL์ ๊ทธ ๋ช ๋นํธ๋ณด๋ค ๋ ๋ง์ ๊ฒ์ด ์๋ค๊ณ ๋๋๋๋ค.
ํ์ง๋ง ์ด์จ๋ ... ๋น์ ์ด ์ค๋ช ํ๋ ๋๋ถ๋ถ์ ๊ฒ์ C๋ก ๋๋ฐ๋ก ์ฐ์ฌ์ก์ต๋๋ค. ์ฐ๋ฆฌ๋ ์์์ ์ธ ์ ์ถฉ์์ผ๋ก C ++์ STL์ ์ ์ ๋ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ํ ํ๋ฆฟ์ด ๋ด๋ถ์์ ์ํํ๋ ์์ ์ ์ ์๊ณ ์ฌ๋ฐ๋ฅธ ํ ํ๋ฆฟ์ ์ ์คํ๊ฒ ์ฌ์ฉํ๋ ํ ์ผ๋ฐ์ ์ผ๋ก ๋ณด์ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ํธ์์ฑ์ ํฌ๊ฒ ํ๋ณดํ๋ฉด์ ๋งค์ฐ ์ ์ ์์ ์ฑ๋ฅ ๋ง ๊ฑฐ๋ํฉ๋๋ค.
๋ณด์์ ์ค์ ๋ก ๊ฐ๋ฅํ ๋๋ง๋ค ์์ฒด ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๊ฒ๋ณด๋ค STL ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ์ ๋๋ค. ์ปฌ๋ ์ ๊ณผ ๋ฌธ์์ด์ STL ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ๋ฐฉ์์ผ๋ก ์๋์ผ๋ก ์ํํด์ผํ๋ ๊ฒฝ๊ณ ๊ฒ์ฌ๋ฅผ ์ํ ํ ์ ์์ต๋๋ค (๋๋ ์ ํ ์ํํ์ง ์์).
๋ํ ์ฝ์ ์ฝ๋ ๋ด๋ถ์ 17 ๊ฐ์ ๋ค๋ฅธ ํ์ ๋ฐ ์ฐ๊ฒฐ ๋ชฉ๋ก ๊ตฌํ์ด์๋ ๊ฒฝ์ฐ C๊ฐ ์ค๋ std :: queue ๋ฐ std :: list๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ฑ๋ฅ๋ฉด์์ ์ ๋ฐ์ ์ผ๋ก ๋ ๋์์ง ํ์ ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ ํ์ ์ฑ๋ฅ ๋ฌธ์ (์คํ ๋ฆฌ์ง ๋ฐ ํ์ด์ง๋ก๋ I / O) ์ธ ๊ฐ ๊ฐ๋ณ ๊ตฌํ์ ๋ํด ๋ ๋ง์ ๋์คํฌ ๊ณต๊ฐ์ ์๋นํ์ ๊ฒ์ ๋๋ค.
์๊ฐ์๋ด์ด ๋ต์ฅ์ ์จ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์นญ์ฐฌ์๋ ๋ฌธ์ ์์ต๋๋ค.
์ง๋ ๋ช ๋ฌ ๋์ ์ ๋ ์ข์ ํฐ๋ฏธ๋ ์ค์ ์ ์ฐพ๊ณ ์์๋๋ฐ, tmux๋ฅผ ์ฌ์ฉํ๋ ubuntu.exe
์ ์ค๋๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋๊ตฌ๋ก ์ป์ ์์๋ ๊ฒ๋ง ํผ ์๋ฒฝ์ ๊ฐ๊น๋ค๊ณ ์๊ฐํฉ๋๋ค. ubuntu.exe
ํฐ๋ฏธ๋ ์์ฒด๋ ์์ฒญ๋๊ฒ ๋น ๋ฅด๋ฉฐ tmux๋ ์ธ์์ ๋ชจ๋ ํํ (ํญ, ๋ถํ ์ฐฝ, ๋ฒํผ ๊ฒ์ ๋ฑ)์ ์ ๊ณตํฉ๋๋ค.
์์ ํ ๋ง์ ํธํ์ฑ์ ๋์ด๋ ํฅํ ๋ฆด๋ฆฌ์ค์ ๊ธ๊ผด ํฌ๊ธฐ +/- ํ๋๋ฅผ์ํ ๋จ์ถํค์ ๊ฐ์ ์์ฑ ๊ด๋ จ ๊ฐ์ ์ฌํญ์ ์ ๋ง ๊ธฐ๋ํ๊ณ ์์ต๋๋ค.
@miniksa : ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ๊ฒ์๋ฌผ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์ฐ๋ฆฌ๋ Windows๊ฐ์ด ์์ ์ ์ํํ๋ ๋ฐ ํ์ํ ๊ฐ์ฅ ์ค๋๋๊ณ ๊ฐ์ฅ ๋ฎ์ ์์ค์ API ๊ทผ์ฒ์์ darn์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํด ํ๋์ ๊ถ๊ธํ์ต๋๋ค. ๋ค์ํ Win32 API (USER32 / GDI32)๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์ต๊ทผ์ Windows์ ์ต์ ๋ฒ์ (8.0 ์ด์)์์ ์ป์ ์์๋ ๊ฒ์ฒ๋ผ ์ฌ์ ํ ๋ฎ์ ์์ค์ธ์ง ๋๋ ์ด๋ฌํ API๊ฐ ๋ค๋ฅธ ํญ๋ชฉ (์ : Direct2D, DirectWrite ๋ฑ). ์ด์ API๋ ์ต์ API์ ์ด๋ค ๊ด๋ จ์ด ์์ต๋๊น? ๋น์ ์ด ๊ทธ ๋ถ๋ถ์ ๋ช ํํ ํ ์ ์๋ค๋ฉด ๋๋ ๊ทธ๊ฒ์ ์ข์ํ ๊ฒ์ ๋๋ค!
@stakx , USER32 ๋ฐ GDI32๋ฅผ ์ฐธ์กฐํ๊ณ ์์ต๋๋ค.
์ธ๋ถ ์ฌํญ์ ํ์ธํ๋ ๋ฐ ๋ช ์๊ฐ์ ์๋นํ์ง ์๊ณ ๋ด๊ฐ ์๊ณ ์๋ ๋ด์ฉ์ ๋ํ ๊ฐ๋จํ ๊ฐ์๋ฅผ ์ ๊ณตํ๊ฒ ์ต๋๋ค. ๋ฐ๋ผ์์ด ์ค ์ผ๋ถ๋ ์์ผ๋ก ํ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉฐ ์ฝ๊ฐ ๋ถ์ ํ ํ ์ ์์ง๋ง ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ ์ผ ์ ์์ต๋๋ค. ๋ชจ๋ ์ง์ ์ ์ธ์์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง์ ๋ํ ๋์ ๊ฐ์ธ์ ์ธ ์ง์์ผ๋ก ๊ฐ์ฃผํ๊ณ ์๊ฒฌ์ด๋ ์ค๋ฅ์ ์ํฅ์๋ฐ์ต๋๋ค.
ํ์ดํ ๋ผ์ธ์ ๊ทธ๋ํฝ ๋ถ๋ถ (GDI32)์ ๊ฒฝ์ฐ GDI์ ์ฌ์ฉ์ ๋ชจ๋ ๋ถ๋ถ์ ์๋นํ ์๋์ ์์ต๋๋ค. ์ฑ์ GDI32๋ฅผ ํธ์ถํ๊ณ ์ผ๋ถ ์์ ์ ์ฌ์ฉ์ ๋ชจ๋ ์ธก์์ ํด๋น DLL์์ ์ํ ๋ ๋ค์ ์ปค๋ ํธ์ถ์ด ์ปค๋๋ก ์ด๋ํ์ฌ ๊ทธ๋ฆฌ๊ธฐ๊ฐ ๋ฐ์ํฉ๋๋ค.
"๋ค๋ฅธ ํญ๋ชฉ ์์ ์๊ธฐ ์ํด ์๋์ผ๋ก ๋ณํ"์ ๋ํด ์๊ฐํ๋ ๋ถ๋ถ์ ์๋ง๋ ์ปค๋ ํธ์ถ์ ๋ฐ์ผ๋ฉด ์ปค๋ GDI ํญ๋ชฉ์ด ๋ค์๊ณผ ๊ฐ์ ํญ๋ชฉ ์์ ๋ค์ ํ๋ซํผ๋๋ ๊ฒฝํฅ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. DirectX๊ฐ ์ค์ ๋ก NVIDIA / AMD / Intel ๋ฑ์์ ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐ. ๊ทธ๋ํฝ ๋๋ผ์ด๋ฒ์ GPU๋ ์คํ ๋งจ ์๋์ ์์ต๋๋ค. Windows Vista ์ฉ WDDM์ ์ผ๋ถ๋ก ์ ๊ณต๋๋ ๊ทธ๋ํฝ ๋๋ผ์ด๋ฒ ์ฌ ์ํคํ ์ฒ์์ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋๊ฐ์ GDI์์ ํธ์ถ์ด ์ฌ์ ํ ์ ๋ง ๋น ๋ฅด๊ณ ํ๋ซํผ์ ์ฌ ๊ตฌ์ถ ํ ๊ฒฐ๊ณผ ๋ ๋๋ฆฐ ๊ฒ์ ๋ํ ๋ฌธ์๊ฐ ์์ต๋๋ค. ์ง๋๋ฒ์ ๊ทธ ๋ฌธ์๋ฅผ ์ฐพ์์ ํ์ธํ์ ๋ ๋น ๋ฅธ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
GDI ์ธ์๋ ๋ ์ข์ ์ ์ธ์ ํ๋ ์ ์ํฌ๋ฅผ ๊ฐ๊ธฐ ์ ์ UI๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋จ์ถ ๋ฐ ์์ ์งํฉ์ ์ ๊ณตํ๋ Common Controls ๋๋ comctl32.dll๊ณผ ๊ฐ์ ๊ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฝ์์์๋ ์ค์ ๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค (์ค๋ฅธ์ชฝ ํด๋ฆญ ๋ฉ๋ด์ ์์ฑ ์ํธ ์ ์ธ).
DirectWrite์ D2D, D3D ๋ฐ DXGI ์์ฒด๋ ์ฌ์ฉ์ ๋ชจ๋์ ์ปค๋ ๋ชจ๋ ๋ชจ๋์์ GDI์์ ์์ ํ ๋ฒ์ด๋ ๋ณ๋์ ๋ช ๋ น ๋ฐ ๊ฒฝ๋ก ์งํฉ์ ๋๋ค. ๋ ์ฌ์ด์ ์ํธ ์ด์ฉ์ฑ ์กฐํญ์ด ์๋ค๋ ๊ฒ ์ธ์๋ ์ค์ ๋ก ๊ด๋ จ์ด ์์ต๋๋ค. ํ์ง๋ง ๋๋ถ๋ถ์ ๋ค๋ฅธ UI ํ๋ ์ ์ํฌ๋ DirectX ์คํ ์์ ๊ตฌ์ถ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. XAML์ ํ์คํฉ๋๋ค. WPF๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. WinForms์ ๋ํด ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ปดํฌ์ง์ ์คํ๊ณผ ์ฐฝ ๊ด๋ฆฌ์๋ DirectX๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ดํ ๋ผ์ธ์ ์ ๋ ฅ / ์ํธ ์์ฉ ๋ถ๋ถ (USER32)์ ๊ดํด์๋ ๋๋ถ๋ถ์ ๋ค๋ฅธ ์๋ก์ด ๊ฒ (์ ์ด๋ ๋ฐ์คํฌํฑ PC์ ๊ฒฝ์ฐ)์ด ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒ ์์ ๊ตฌ์ถ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. USER32์ ์ฃผ์ ๊ฐ๋ ์ ์ฐฝ๊ณผ ์ฐฝ ํธ๋ค์ด๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์ฐฝ ํธ๋ค๋ก ์ ์ก๋ฉ๋๋ค. ๋ฐ์คํฌํฑ ์ปดํจํฐ (๋๋ ๋ฉํฑ ๋๋ ๊ธฐํ ... ๊ณ ์ ์ ์ธ ์คํ์ผ์ Windows ๊ธฐ๋ฐ ์ปดํจํฐ)๋ฅผ ์ฌ์ฉํ๋ ํ ๊ด๋ จ ์ฐฝ ํธ๋ค๊ณผ ๋ฉ์์ง๊ฐ ๋ ๋ค๋๋ฉฐ ์ด๋ ์ฐ๋ฆฌ๊ฐ USER32์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์์ ์๋ฏธํฉ๋๋ค.
์ฐฝ ๋ฉ์์ง ๋๊ธฐ์ด์ ์ ๊ฒฝ์์๋ ๋์ ํด๋น ์ฐฝ๊ณผ ๊ด๋ จํ์ฌ ๋ฐ์ํ ๋ชจ๋ ์ ๋ ฅ + ์์คํ ์ ๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ์ํด ์ฐฝ์ผ๋ก ์ ์ก ๋ ๋ชจ๋ ํญ๋ชฉ์ ๋จ์ํ FIFO (๋๋ถ๋ถ ๋๋ ์ ์)์ ๋๋ค.
์๋ก์ด ๊ธฐ์ ๊ณผ XAML, WPF ๋ฐ WinForms์ ๊ฐ์ ํ๋ ์ ์ํฌ๋ ์ฐฝ ๋ฉ์์ง ๋๊ธฐ์ด์์ ๋ฉ์์ง๋ฅผ ์ด๋ค ๋ฐฉ์ ์ผ๋ก๋ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ ์ด๋ฅผ ์ธ๊ณ ๋ด์์ ํ๋ก๋น์ ๋ ํ ๋ค์ํ ๊ฐ์ฒด์ ๋ํ ์ด๋ฒคํธ ์ฝ๋ฐฑ์ผ๋ก ๋ณํํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ XAML๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋น ๋ฐ์คํฌํฑ ํ๋ซํผ์์๋ ์๋ํ๋ ์ต์ ๊ธฐ์ ์ ์์ ํ ๋ค๋ฅธ ๋น USER32 ์คํ์์๋ ์ฒ๋ฆฌ ํ ์์๋ ๋ฅ๋ ฅ์ด ์์ต๋๋ค. USER32์ ๋ํ ๋ณ๋์ ๋ณ๋ ฌ ์คํ์ด ์์ผ๋ฉฐ, ๊ธฐ์กด ๋ฉ์์ง ๋๊ธฐ์ด๊ณผ ์ฐฝ ์ฒ๋ฆฌ๋ฅผ ์ ํํ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ์ง ์๋ ์ ๋ ฅ ๋ฐ ์ํธ ์์ฉ์ด ๋ฐ์ํ๋ ๋ฐฉ์์ ๋ํ ๋ชจ๋ ์๋ก์ด ํ์ ๋ฐ ์คํ์ด ์์ต๋๋ค. ์ด๊ฒ์ CoreWindow ๋ฐ CoreMessaging๊ณผ ๊ฐ์ ์ ์ฒด Core * ์ ํ๊ตฐ์ ๋๋ค. ๊ทธ๋ค์ ๋ํ ์ฑ ์ ์์ ํค๋ณด๋์ ๋ง์ฐ์ค๊ฐ์๋ ํ๋ฉด ์์ ๊ตฌ๋ฅด๋ ์์์์ ์๋ฉ์ด๋ฅผ ์ค์ฌ์ผ๋กํ์ง ์๋ "์ฌ์ฉ์๋ ๋ฌด์์ธ๊ฐ"๋ผ๋ ๋ค๋ฅธ ๊ฐ๋ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด์ XAML ๋๋ ๋ค๋ฅธ ํ๋ ์ ์ํฌ ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ด ๋ชจ๋ ๋ณต์ก์ฑ์ด ์ฒ๋ฆฌ๋ฉ๋๋ค. XAML์ DirectX์์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ํ์ ํ๊ณ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ๋ฉ์ง ํจ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ์ปดํฌ ์งํฐ ๋ฐ ์ฐฝ ๊ด๋ฆฌ์์ ํ์ํฉ๋๋ค. USER32 ๋๋ Core *์์ ์ ๋ ฅ ์ด๋ฒคํธ๋ฅผ ๊ฐ์ ธ์ฌ ์ง ๋๋ ํ๋ซํผ ๋ฐ ์ ๋ ฅ ์คํ์ ๋ฐ๋ผ ํฌ๋ช ํ๊ฒ ๊ฐ์ ธ์ฌ ์ง ์ฌ๋ถ๋ฅผ ํ์ ํ์ฌ ํ, ํฐ์น, ํค๋ณด๋, ๋ง์ฐ์ค ๋ฑ์ ํตํฉ ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ ํ ์ โโ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋น์ ์ ์ถ์ ์ฝ๊ฒ ๋ง๋๋ ๋ชจ๋ ์ข ๋ฅ์ ์ธ๊ณํ, ์ ๊ทผ์ฑ, ์ ๋ ฅ ์ํธ ์์ฉ ๋ฑ์ ์ํํ๊ธฐ ์ํด ๋ด๋ถ์ ํฌํจ ๋ ์กฐํญ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์์ค์ผ๋ก ์ง์ ์ด๋ํ์ฌ ์ง์ ์ฒ๋ฆฌํ๊ฑฐ๋ ์ ๊ฒฝ ์ฐ์ง ์๋ ๊ฒ์ ๊ฑด๋ ๋ฐ๋๋ก ์ ํํ ์ ์์ต๋๋ค.
ํธ๋ฆญ์ GDI32 ๋ฐ USER32๊ฐ ์ ํ๋ ๋ช ๋ น ์งํฉ์ผ๋ก ์ ํ๋ ์ธ๊ณ๋ฅผ ์ํด ์ค๊ณ๋์๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ์คํฌํฑ PC๋ ํค๋ณด๋์ ๋ง์ฐ์ค์ ๋จ์ผ ์ฌ์ฉ์, VGA ๋ชจ๋ํฐ์ ๋ํ ๊ฐ๋จํ ๊ทธ๋ํฝ ์ถ๋ ฅ์ด์๋ ์ ์ผํ ์กด์ฌ์์ต๋๋ค. ๋ฐ๋ผ์ conhost์ฒ๋ผ "๋ฎ์ ์์ค"์์ ์ง์ ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค. ์๋ก์ด ํ๋ซํผ์ "๋ฎ์ ์์ค"์์ ์ฌ์ฉ๋ ์ ์์ง๋ง 20 ๋ ์ด์ ๋์ ๋ค์ํ ํผ ํฉํฐ, ์ฌ๋ฌ ํ์ฑ ์ฌ์ฉ์, ์ฌ๋ฌ ๊ทธ๋ํฝ ์ด๋ํฐ์ ๊ฐ์ด ๊ฐ์ธ์ฉ ์ปดํจํ ์์ ๋ฐ์ํ ๋ชจ๋ ์ผ์ ์ค๋ช ํ๊ธฐ ๋๋ฌธ์ ํจ์ฌ ๋ ๋ณต์กํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณ์ํด์ ๊ณ์ํด์. ๋ฐ๋ผ์ ์๋ก์ด ๊ฒ์ ์ฌ์ฉํ ๋ ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋จธ๋ฆฌ๊ฐ ํฐ์ง์ง ์๋๋กํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๊ทธ๋ค์ ๋น์ ์ ์ํด ๊ทธ๊ฒ์ ์ฒ๋ฆฌํ์ง๋ง ์ด์ ๋ณด๋ค ๋ ๋ง์ด ์ฒ๋ฆฌํ๋ฏ๋ก ์ด๋ ์ ๋ ๋๋ฆฝ๋๋ค.
๊ทธ๋ ๋ค๋ฉด GDI32์ USER32๋ ์๋ก์ด ๊ฒ๋ณด๋ค "๋ฎ์"๊ฒ์
๋๊น? ์ผ์ข
์.
์ต์ ์ ํ์ผ๋ก ๊ทธ ์ ๋๋ฅผ ๋ฎ์ถ ์ ์์ต๋๊น? ๋๋ถ๋ถ ๊ทธ๋ ์ต๋๋ค.ํ์ง๋ง ๋น์ ์ ์๋ง ๊ทธ๋ ๊ฒํด์๋ ์๋๋ฉฐ ์ํ์ง๋ ์์ ๊ฒ์
๋๋ค.
์๋ก์ด ๊ฒ์ด ์ค๋๋ ๊ฒ ์์ ์ด๊ฑฐ๋ ์ค๋๋ ๊ฒ์ด ์ ๊ฒ ์์ ๋ค์ ํ๋ซํผ๋ฉ๋๊น? ๋๋๋ก ๊ทธ๋ฆฌ๊ณ / ๋๋ ๋ถ๋ถ์ ์ผ๋ก.
๊ธฐ๋ณธ์ ์ผ๋ก ... ๋ชจ๋ ์ํํธ์จ์ด์ ๋ํ ๋๋ต๊ณผ ๊ฐ์ต๋๋ค. "์์ ํ ์ฌ๋์ด๋ฉฐ ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์ ์ ๋ค๋ก ๋ฌผ๋ฌ ๋๋ฉด ์ ํ ์๋ํ์ง ์๋๋ค๋ ์ฌ์ค์ ๋๋ ๊ฒ์
๋๋ค." :ํผ
์ด์จ๋ , ์ด๋ ๋ ์์นจ์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค. ๊ทธ๊ฒ์ด ๋น์ ์ ์ง๋ฌธ์ ๋ค์ ๋๋ตํ๊ณ ์กฐ๊ธ ๋ ๋ง์ ํต์ฐฐ๋ ฅ์ ์คฌ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ทธ๊ฒ์ด ๋น์ ์ ์ง๋ฌธ์ ๋ค์ ๋๋ตํ๊ณ ์กฐ๊ธ ๋ ๋ง์ ํต์ฐฐ๋ ฅ์ ์คฌ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@miniksa , ์ค์ ๋ก ๊ทธ๋ฌ์ต๋๋ค! ๋ํ ์๋ฒฝํฉ๋๋ค. ์๊ฐ์๋ด์ด ๋ชจ๋ ๊ฒ์ ์์ฑํด ์ฃผ์ ์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค! : +1 :
์ง๊ธ์์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๊ฒ ์ต๋๋ค. ๋ฌธ์ ํด ์ฃผ์ ์ ๊ฐ์ฌ ๋๋ฆฌ๋ฉฐ ์ ๋ณด๊ฐ ์ฆ๊ฑฐ์์ ๊ธฐ์ฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๊ตฐ๊ฐ๊ฐ ์์ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ์ผ์ ์ํ๊ณ ์๋ค๊ณ ๋งํ ๋ ์ ๋ง ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋งค์ผ ๋ง์ ๋ถ๋ง์ ๋ฃ๊ณ ์ด์ ๊ฐ์ ๊ฒ์๋ฌผ์ ์ ์ ํ ๊ณต๊ธฐ์ ํธํก์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
๋ํ ๋น์ ์ด ๊ทธ๊ฒ์ ์ฝ๋ ๊ฒ์ ์ง์น ๋๊น์ง ๋๋ ๋น์ ๊ณผ ์ด๊ฒ์ ํ ๋ก ํ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ์ํ๋ ํ์ ์กฐ์น๋ฅผ ์์ฒญํ์ญ์์ค. ๋๋ ๋ด ์ผ์ ๋ํด ๋ฒ์ฑํฉ๋๋ค. :ํผ
ํ ์คํธ๋ฅผ ํ๋ฉด์ ํ์ ํ ๋ Windows์ ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ๋ณด๋ค ์ฐ๋ฆฌ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ง๋๋ ๊ฒ์ด ๋ฌด์์ธ์ง์ ๋ํด ๊ต์ก์ ์ธ ์ถ์ธก์ํด์ผํ๋ค๋ฉด ๋ง ๊ทธ๋๋ก ์ฐ๋ฆฌ์ ์ ์ผํ ์์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค! ๋ํ ์๋ง๋ Windows๊ฐ์ด ์์ ์ ์ํํ๋ ๋ฐ ํ์ํ ๊ฐ์ฅ ์ค๋๋๊ณ ๊ฐ์ฅ ๋ฎ์ ์์ค์ API๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ผ ๊ฒ์ ๋๋ค.
๋์ดํ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์๋ ์ผ์ข ์ ๋ ์ด์ด ๋๋ ํ๋ ์ ์ํฌ๊ฐ ํฌํจ๋์ด ์๊ฑฐ๋ Electron ๋ฐ Javascript์ ๋ํด ์ด์ผ๊ธฐํ๊ธฐ ์์ํ ๋ ๋ง์ ๋ ์ด์ด์ ํ๋ ์ ์ํฌ๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ถ๊ฐ ์ปจํธ๋กค์ด ์ฒจ๋ถ๋์ง ์์ ๋งค์ฐ ํน๋ณํ์ง ์์ ์ฐฝ ํ๋๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๋ณด๋ค ํจ์ฌ ๋ณต์กํ UI ํ๋ ์ ์ํฌ (WPF, WinForms, UWP, ์ ์). ๊ทธ๋ฆฌ๊ณ ์ฃผ๋ฆ์์ด GDI์ PolyTextOut ์ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ์ฐฝ ํ๋ฉด์ ๋ฐ๋ก ๋คํํฉ๋๋ค.
notepad.exe
์กฐ์ฐจ๋ ์ฐฝ์ ์ฌ๋ฌ ์ปจํธ๋กค์ด ์๊ณ ํธ์ง ์ปจํธ๋กค์์ ์ผ์ข ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ๋ ์ด์์ (์๋ง๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ ๊ฒ์)์ ํ์ ํ๊ณ ์์ต๋๋ค. ๊ตญ์ ํ ์ง์์์ํ ํ๋ ์ ์ํฌ ...)๋ฌผ๋ก ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ํธ๋ ์ด๋ ์คํ๊ฐ ์์์ ์๋ฏธํ๊ธฐ๋ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ฒ๋ผ ์์ ํ ๊ตญ์ ์ ์ธ ํ ์คํธ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. RTL? ์ง๊ธ์ ์ด๋ ์์ญ์ด ์์ต๋๋ค. ์๋ก ๊ฒ์ดํธ ์๊ณผ ๊ทธ๋ฆผ ์ด๋ชจํฐ์ฝ? ์ฐ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ๋์ฐฉํ์ง๋ง ์์ง ๊ฑฐ๊ธฐ์ ์์ง ์์ต๋๋ค. ์ธ๋์ด ์คํฌ๋ฆฝํธ? ์๋.
์ฐ๋ฆฌ๋ ์ ์ด๋ฐ๊ฐ์? ํ๋์ ๊ฒฝ์ฐ,
conhost.exe
๋ ๋จผ์ง์ฒ๋ผ ์ค๋๋์์ต๋๋ค. ๋๋ถ๋ถ์ ๋ค๋ฅธ ํ๋ ์ ์ํฌ๊ฐ ์์ฑ๋๊ธฐ ์ ์ ์์ฑ ๋์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฒ์ ๋ฒ ์ด ๋ฉํ ํ๋จ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค. ๋ํ ํ๋ ์ ์ํฌ ๋ ํ๋ ์ ์ํฌ์ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ธฐ ์ ์ ์ ์ด์ ์ฒด์ ๋ฒ์ ๋๋ ์ฅ์น๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๊ฐ์ฅ ๋จผ์ ๊ฐ์ ธ์์ผํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ํ ๋ฎ์ / ํ์ ์์ค์ ์ ์งํฉ๋๋ค. ์๋ํฉ๋๋ค. ๋ํ C / C ++๋ก ์์ฑ๋์๋๋ฐ, ์ด๋ ์ฐ๋ฆฌ๊ฐ ์ป์ ์์๋๋งํผ ๋ฎ๊ณ ๋ฒ ์ด ๋ฉํ์ ๋๋ค.์ด UI ํฅ์์ด Windows์ ๋ค๋ฅธ ์ฑ์๋ ์ ์ฉ๋ฉ๋๊น? ๊ฑฐ์ ํ์คํ์ง ์์ต๋๋ค. ๊ทธ๋ค์ ์ข์ ์ผ๊ณผ ๋์ ์ผ์ ๋๋ฌด ๋ง์ดํฉ๋๋ค. ์๋์ผ๋ก ํฝ์ ์ ๊ณ์ฐํ๊ฑฐ๋ ๊ธ๊ผด์ ์ ์ฉ๋๋ ์คํ์ผ์ ์ ๊ฒฝ์ ์ฐ์ง ์๊ณ ๋ชจ๋ ์ธ์ด์์ ๋ณต์กํ ๋ฐฉ์์ผ๋ก ํ๋์ ๋ฉ์๋์ ๋ ์ด์์ ํ ์คํธ๋ฅผ ํธ์ถ ํ ์์๋ ๋ฅ๋ ฅ์ด ๋ถ๋ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ ํฝ์ ๊ณ์ฐ, ๋ํฐ ์์ญ ์ํ, ์คํฌ๋กค ์์ญ ๊ด๊ธฐ ๋ฑ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ค๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์งํํ ์ ์๋๋กํฉ๋๋ค. ๋๋ ๋ํ ๋๊ตฐ๊ฐ๊ฐ "์ฐฝ ํ๋จ์ ์ํ ํ์ ์ค์ ์ถ๊ฐ ํ ์ ์๋?"๋ผ๊ณ ๋งํ๋ฉด UI ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฑฐ์ ํด๋ฆญํ์ฌ ์ ์๋ฆฌ๋ก ๋๋๊ทธ ํ ์ ์์ผ๋ฉฐ ์ฐ๋ฆฌ์ ๊ฐ์ ๊ณณ์์ ์๋ ํ ๊ฒ์ด๋ผ๋ ์ ์ด ๋ถ๋ฝ์ต๋๋ค. ์์ํ ๋ฐฑ ๋ก๊ทธ ํญ๋ชฉ์ด์๊ณ ๊ตฌํ์ ๋ํด ์๊ฐํ ๋ ๊ฐ์ด ์์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํด๋ณดํ์ง ์๋๋ก ๋ ธ๋ ฅํ ๊น์? ์! ์ง๊ธ์ ์ผ์ข ์ ์๋ ํ๋ก์ธ์ค์ ๋๋ค. ๋ฌด์ธ๊ฐ๊ฐ ๋๋ ค์ง๊ณ ์์์ ํ์ธํ ๋ค์ WPR์ ๊บผ๋ด ์ถ์ ์ ์์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋จ๊ฑฐ์ด ๊ธธ์ ์ณ๋ค๋ณด๊ณ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ถ๋ก ํ๊ณ ๊ฐ์ ํ๋ ค๊ณ ๋ ธ๋ ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ง์ง๋ง ํ๋์ฃผ๊ธฐ์์ ์ฐ๋ฆฌ๋ ์๋-ํฌ-์๋ ์ฑ๋ฅ์ ํฅ์์ํฌ ์์๋ ์ฃผ์ ์์ญ์ผ๋ก ํ ํ ๋น์ ์ด์ ์ ๋ง์ถ๊ณ ๊ธฐ๋ณธ ์์ฒญ์ ๋ํด ์คํ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐ๋ณต๊ธฐ์ ๊ฐ์ ํ์ฌ๋๋ฅผ ์ฌ์ฉํ๋๋ก ์ฝ๋์ ํค์ ๋ณ๊ฒฝํ์ต๋๋ค. ๊ฐ ์ฒ๋ฆฌ ์์ค์ ๋ํด ์ ํ ๊ณต๊ฐ์ผ๋ก ๋ณํ ๋ฐ ํ ๋นํ๋ ๋์ ๋ฒํผ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ ์ณ๋๊ณ @bitcrazed ๋ ํน์ ๋ฐฉ์์ผ๋ก ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์๋ํํ๊ธฐ๋ฅผ ์ํ์ง๋ง ์์ง์ด๋ฅผ ์ํ ํ ์ ์ด ๋ ํ๊ฒฝ์ ์์ง ํ์ ํ์ง ๋ชปํ์ต๋๋ค. Windows Engineering System์ ๋งค์ผ ๋ฐค ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์คํํ์ฌ ์ ์ฒด ์ด์ ์ฒด์ ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค ์๋์ง ์ ์์๋ ๋๋ต์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ฉฐ ๊ธฐ์ ์ ์ผ๋ก๋ ์์ฒด ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ฝ์ ํ ์์๋ ์ธ๋ฐํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์์ง ๊ทธ๊ฒ์ ๋ํด ์ดํดํ์ง ๋ชปํ์ต๋๋ค. ์๋ํ ๋ ๋ฐฉ์์ผ๋ก์ด ์์ ์ ์ํ ํ ์์๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์๋ค๋ฉด ๋ชจ๋ ๊ท๋ฅผ ๊ธฐ์ธ์ ๋๋ค.
๋ ์๊ณ ์ถ์ ๊ฒ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์. ํ๋ฃจ ์ข ์ผ ๊ฐ ์ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๊ฒ์ํ๊ธฐ ์ ์์ด ๋ต์ฅ์์ 15 ๊ฐ์ ํ์ ํธ์ฒ๋ผ ์ญ์ ํ์ต๋๋ค ....