Terminal: ๊ธฐ๋ณธ WSL ํ„ฐ๋ฏธ๋„ ๋‚ด๋ถ€์— ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ์•ฑ๋ณด๋‹ค ๋‚˜์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2018๋…„ 12์›” 14์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/terminal

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ธฐ๋ณธ WSL ํ„ฐ๋ฏธ๋„ (ํŠนํžˆ ์šฐ๋ถ„ํˆฌ)์„ ์‚ฌ์šฉํ•˜์—ฌํ–ˆ๋˜ ์ž‘์—…์„ ์ค‘๋‹จํ•˜์ง€ ์•Š๋„๋กํ•˜๋Š” ์ œ์•ˆ / ์š”์ฒญ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ํ‚ค.

๊ธฐ๋ณธ WSL ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์€ ๋ฐฉ์†ก ์ค‘์— ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. notepad.exe ์กฐ์ฐจ๋„ ๋‹ค๋ฅธ Windows ์•ฑ์—๋Š”์—†๋Š” ๋ถ€๋“œ๋Ÿฌ์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  Windows์˜ ๊ฒฝ์šฐ 75ms ์ด์ƒ (๋Œ€๋ถ€๋ถ„์˜ Electron ๊ธฐ๋ฐ˜ ์•ฑ์˜ ๊ฒฝ์šฐ 200 ~ 250ms ์ด์ƒ)์ด ์•„๋‹Œ 10ms์˜ ์ž…๋ ฅ ์ง€์—ฐ์ด์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๋Š” ๊ฒฝ์šฐ.

WSL ํ„ฐ๋ฏธ๋„์ด notepad.exe ๋ณด๋‹ค ๊ธฐ๋ถ„์ด ์ข‹์•„์ง€๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ด๋ฉฐ์ด ํ–ฅ์ƒ๋œ UI๋Š” ํ–ฅํ›„ ๋ชจ๋“  Windows ์•ฑ์— ์ ์šฉ๋  ๊ฒƒ์ž…๋‹ˆ๊นŒ?

๋…ผ์˜ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ๋‹ซ์œผ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์ฃผ๋กœ ๋ฏธ๋ž˜์— ์–ด๋–ค ์œ ํ˜•์˜ ํšŒ๊ท€๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ๋ง‰๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ข‹์€์ง€ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

Issue-Question Product-Conhost

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์™€์„œ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์ผ์„ ์ž˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•  ๋•Œ ์ •๋ง ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งค์ผ ๋งŽ์€ ๋ถˆ๋งŒ์„ ๋“ฃ๊ณ  ์ด์™€ ๊ฐ™์€ ๊ฒŒ์‹œ๋ฌผ์€ ์‹ ์„ ํ•œ ๊ณต๊ธฐ์˜ ํ˜ธํก์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋˜ํ•œ ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์ฝ๋Š” ๊ฒƒ์— ์ง€์น  ๋•Œ๊นŒ์ง€ ๋‚˜๋Š” ๋‹น์‹ ๊ณผ ์ด๊ฒƒ์„ ํ† ๋ก ํ•˜๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ํ›„์† ์กฐ์น˜๋ฅผ ์š”์ฒญํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๋‚ด ์ผ์— ๋Œ€ํ•ด ๋ฒˆ์„ฑํ•ฉ๋‹ˆ๋‹ค. :ํ”ผ

ํ…์ŠคํŠธ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œ ํ•  ๋•Œ 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 ๊ฐœ์˜ ํƒ„์  ํŠธ์ฒ˜๋Ÿผ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค ....

๋ชจ๋“  8 ๋Œ“๊ธ€

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์™€์„œ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์ผ์„ ์ž˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•  ๋•Œ ์ •๋ง ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งค์ผ ๋งŽ์€ ๋ถˆ๋งŒ์„ ๋“ฃ๊ณ  ์ด์™€ ๊ฐ™์€ ๊ฒŒ์‹œ๋ฌผ์€ ์‹ ์„ ํ•œ ๊ณต๊ธฐ์˜ ํ˜ธํก์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋˜ํ•œ ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์ฝ๋Š” ๊ฒƒ์— ์ง€์น  ๋•Œ๊นŒ์ง€ ๋‚˜๋Š” ๋‹น์‹ ๊ณผ ์ด๊ฒƒ์„ ํ† ๋ก ํ•˜๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ํ›„์† ์กฐ์น˜๋ฅผ ์š”์ฒญํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๋‚ด ์ผ์— ๋Œ€ํ•ด ๋ฒˆ์„ฑํ•ฉ๋‹ˆ๋‹ค. :ํ”ผ

ํ…์ŠคํŠธ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œ ํ•  ๋•Œ 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 :

์ง€๊ธˆ์€์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌธ์˜ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌ ๋“œ๋ฆฌ๋ฉฐ ์ •๋ณด๊ฐ€ ์ฆ๊ฑฐ์›Œ์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰