Microsoft-ui-xaml: ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ“ž WinUI ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฝœ (2020๋…„ 2์›” 19์ผ)

์— ๋งŒ๋“  2020๋…„ 02์›” 12์ผ  ยท  72์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/microsoft-ui-xaml

์—…๋ฐ์ดํŠธ: ๋ผ์ด๋ธŒ๋ฅผ ์‹œ์ฒญํ•˜๊ณ  ์šฐ๋ฆฌ์™€ ์ด์•ผ๊ธฐํ•˜๊ฑฐ๋‚˜ ๋…น์Œ์„ ์‹œ์ฒญํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!


์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„ -

๋‹ค์Œ WinUI ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฝœ์€ 2์›” 19์ผ ์ˆ˜์š”์ผ์— ์žˆ์Šต๋‹ˆ๋‹ค.

Windows ๊ฐœ๋ฐœ์ž YouTube ์ฑ„๋„์—์„œ ๋‹ค์‹œ ์ƒ์ค‘๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

https://www.youtube.com/watch?v=tasbSc3771A

์„ธ๋ถ€

๋‚ ์งœ: 2์›” 19์ผ ์ˆ˜์š”์ผ
์‹œ๊ฐ„: 17:00-18:00 UTC (ํƒœํ‰์–‘ ํ‘œ์ค€์‹œ ์˜ค์ „ 9:00-10:

๋ˆ„๊ตฌ๋“ ์ง€ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ „ ๋“ฑ๋ก์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ์—”์ง€๋‹ˆ์–ด๋ง ํŒ€ ๊ตฌ์„ฑ์›๊ณผ ์ง์ ‘ ๋น„๊ณต์‹ ์˜จ๋ผ์ธ ํ†ตํ™”์ž…๋‹ˆ๋‹ค.

์งˆ๋ฌธ/์ฃผ์ œ/ํ”ผ๋“œ๋ฐฑ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!

๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋‹ค์‹œ ๋‹ต๋ณ€ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์— ๋‹ค๋ฃจ์—ˆ์œผ๋ฉด ํ•˜๋Š” ์งˆ๋ฌธ์ด๋‚˜ ์ฃผ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ์ด ํ˜ธ์— ๋Œ“๊ธ€์„ ๋‚จ๊ฒจ ์ฃผ์„ธ์š”!

์ƒˆ๋กœ์šด WinUI 3 Alpha 2020๋…„ 2์›” ์—…๋ฐ์ดํŠธ ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณธ ๊ฒฝ์šฐ WebView2 ๋˜๋Š” ๊ธฐํƒ€ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ง€๊ธˆ๊นŒ์ง€ ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ํ”ผ๋“œ๋ฐฑ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜์ œ

  1. WinUI ๋ฐ์Šคํฌํ†ฑ ์— ๋Œ€ํ•œ ์ง„ํ–‰ ์ƒํ™ฉ ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. Miguel(@marb2000)์ด ์ŠคํŠœ๋””์˜ค์—์„œ ์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ win32 ์ง€์›, ๋ฐ์Šคํฌํ†ฑ ์ฐฝ, WinUI๊ฐ€ UWP์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ์•ฑ ๋ชจ๋ธ ๋ณ€๊ฒฝ๊ณผ ๊ฐ™์€ ์ฃผ์ œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. ๋‹ค๋ฅธ ์ตœ์‹  ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์š”์•ฝ: WebView2๋ฅผ ์‚ฌ์šฉํ•œ WinUI 3 Alpha 2020๋…„ 2์›” ์—…๋ฐ์ดํŠธ, Windows 10X ๊ฐœ๋ฐœ
  3. WinUI 3 ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ƒํƒœ - ํ˜„์žฌ ๊ณผ์ œ ๋ฐ ์ด๋ฒˆ ๋‹ฌ์— ์ž‘์—… ์ค‘์ธ ์‚ฌํ•ญ
  4. Q&A - ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์งˆ๋ฌธ(๋Œ“๊ธ€์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!)๊ณผ ํ†ตํ™” ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค .

๋˜ํ•œ ์ด๋ฒˆ ๋‹ฌ์— ๋ช‡ ๋ช…์˜ ๊ฐœ๋ฐœ ํŒ€ ๋ฆฌ๋“œ ๊ฐ€ ์ „ํ™”๋ฅผ ๊ฑธ์–ด ์˜๊ฒฌ์„ ์ œ์‹œํ•˜๊ฑฐ๋‚˜ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

discussion hot

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

@pjmlp DirectX์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด ์ €๋Š” ์ž์œ  ์‹œ๊ฐ„ ์— WinUI ๋ณด๊ธฐ์—์„œ D3D12/11 ๋“ฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํœด๋Œ€์šฉ ๋ฐ ๋ถˆ๊ฐ€์ง€๋ก ์  C# ๊ทธ๋ž˜ํ”ฝ, ์˜ค๋””์˜ค ๋ฐ ์ž…๋ ฅ ํ”„๋ ˆ์ž„์›Œํฌ ์ ๊ทน์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

XNA์™€ ๊ฐ™์€ ๋ Œ๋”๋ง์— ๋Œ€ํ•œ ํ›จ์”ฌ ๋” ํ˜„๋Œ€์ ์ด๊ณ  ์„ฑ๋Šฅ ์ค‘์‹ฌ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ €๋ฅผ ํฌํ•จํ•ด ๋งŽ์€ ๋ถ„๋“ค์ด ์›ํ•˜์…”์„œ ๋งŒ๋“ค์–ด ๋ดค์Šต๋‹ˆ๋‹ค. D3D12 ๋ฐ Vulkan์ด ์ง€์›๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค. HLSL์ด๋‚˜ GLSL ๋“ฑ ๋Œ€์‹  C#์œผ๋กœ ์…ฐ์ด๋”๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜๋ฉด ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋Œ€๊ทœ๋ชจ SDK๋‚˜ ๊ฒŒ์ž„ ์—”์ง„์ด ์•„๋‹Œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ํœด๋Œ€๊ฐ€ ๊ฐ„ํŽธํ•˜๊ณ  ๊ฐ€๋ฒผ์šฐ๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. WinUI, WPF ๋˜๋Š” ์ผ๋ถ€ ๊ธฐ๋ณธ C# Win32 ๋˜๋Š” WinRT ์•ฑ์—์„œ 3D ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

https://github.com/reignstudios/Orbital-Framework

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

Windows 10X ๊ฐœ๋ฐœ์— ๊ด€ํ•ด ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์–ธ์ œ AMD ํ”„๋กœ์„ธ์„œ(์ค‘์ฒฉ ๊ฐ€์ƒํ™”)๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๊นŒ? Windows 10 2003 ๋ฒ„์ „์„ ๋ฏฟ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

#1958์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ WinUI ๊ด€๋ จ, Live Tiles์˜ ๋ฏธ๋ž˜๋Š”?

AMD Ryzen ์ง€์›์œผ๋กœ ์ธํ•ด ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์–ธ์ œ ์ˆ˜์ •๋ ์ง€์— ๋Œ€ํ•œ ์†Œ์‹์„ ๋“ฃ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@jp-weber @mdtauk

์ด๊ฒƒ์€ ๊ณต์‹ ๋ฌธ๊ตฌ์ž…๋‹ˆ๋‹ค(https://docs.microsoft.com/en-us/dual-screen/windows/get-dev-tools).

AMD ํ”„๋กœ์„ธ์„œ๋Š” ํ˜„์žฌ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ Windows 10X๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ค‘์ฒฉ ๊ฐ€์ƒํ™”๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ Windows๋Š” ์•„์ง AMD ํ”„๋กœ์„ธ์„œ์—์„œ ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณ„์† ์ง€์ผœ๋ด ์ฃผ์„ธ์š”!

๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์›ํ•˜์‹œ๋ฉด [email protected]์— ๋ฌธ์˜

@Felix-Dev์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋Š” 10X ์—๋ฎฌ๋ ˆ์ดํ„ฐ์˜ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ข‹์€ ์žฅ์†Œ์ด๋ฉฐ ํ•ด๋‹น ์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” WinUI์™€ ๊ด€๋ จ์ด ์—†๋Š” ๋‹ค๋ฅธ 10X ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๊ฐ€์žฅ ์ข‹์€ ์—ฐ๋ฝ์ฒ˜์ž…๋‹ˆ๋‹ค.

๊ณตํ‰ํ•˜๊ฒŒ, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ์ค€๋น„๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

Windows 10X์—์„œ Win32 ์•ฑ์€ VEIL ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. UWP๊ฐ€ ์•„๋‹Œ WinUI 3.0 ์•ฑ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๊ธฐ๋ณธ UWP ์•ฑ์ด 10X์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ‘œ์‹œ๋˜๋‚˜์š”?

@mdtauk WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์€ ๊ธฐ๋ณธ UWP ์•ฑ์ด

๋˜ํ•œ ์•ž์œผ๋กœ WinUI ์•ฑ ๊ฒฉ๋ฆฌ์— ๋Œ€ํ•œ ๊ณ„ํš์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ด€์ ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ฒฉ๋ฆฌ/์ƒŒ๋“œ๋ฐ•์‹ฑ ๋ฐ ๊ธฐ๋Šฅ ์ œ์–ด(์‚ฌ์šฉ์ž ์˜ตํŠธ์ธ ์•„๋‹˜)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฏธ๊ตฌ์—˜์„ ์œ„ํ•œ ์ฃผ์ œ๋กœ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค..

@mdtauk WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์€ ๊ธฐ๋ณธ UWP ์•ฑ์ด

์กฐ๊ธˆ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. Win32 ์•ฑ์€ ๋‹ค๋ฅธ ์ฐฝ ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ์ „๊ฒฝ์— ์žˆ์„ ๋•Œ ํ™”๋ฉด์„ ์–ด๋‘ก๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ „ํ™˜๋„ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Xaml UI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด ์ตœ์†Œํ•œ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ๋ฉด์ ์œผ๋กœ๋Š” ๋‘ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ชจ๋‘์—์„œ ์ตœ๊ณ ๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@mdtauk ์šฐ๋ฆฌ์—๊ฒŒ ์ถœ์‹œ๋œ ํ˜„์žฌ 10X ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์ด๋ฏธ์ง€๋Š” ์•„์ง ๋งค์šฐ ์ดˆ๊ธฐ ๋‹จ๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์‹ ์ด ์•Œ์•„์ฐจ๋ฆฐ ๋ฌธ์ œ/๋™์ž‘(๋‚ด ํ…Œ์ŠคํŠธ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)์ด ์ถœ์‹œ๋  ๋•Œ๊นŒ์ง€ ํ•ด๊ฒฐ/๋ณ€๊ฒฝ๋  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค(์ฆ‰, ์ง€๊ธˆ ๋กœ๋“œํ•  ์ˆ˜ ์—†์Œ).

์ฆ‰, 10X์˜ WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๋‚ด ํ˜„์žฌ ์ƒ๊ฐ์€ ์ง€๊ธˆ๊นŒ์ง€ WinUI ๋ฐ์Šคํฌํ†ฑ(Win32 ์•ฑ ๋ชจ๋ธ), 10X ํ”„๋ ˆ์  ํ…Œ์ด์…˜ How Windows 10X runs UWP and Win32 apps ๋ฐ ๋ฐ์Šคํฌํ†ฑ ๋ธŒ๋ฆฌ์ง€ ํ…Œ์ŠคํŠธ ์•ฑ์— ๋Œ€ํ•ด ๋“ค์—ˆ๋˜ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๋‚ด XAML Island ํ…Œ์ŠคํŠธ ์•ฑ์€ ํ˜„์žฌ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ๋กœ๋“œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ( App Launch Initialized ๋‹จ๊ณ„์—์„œ ๋ฉˆ์ถค) ์–ด๋–ค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ Win32 ์•ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— Win32 ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋†€๋ž„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด 10X์˜ Win32 ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ํ™•์‹คํžˆ ํŒ€์—๊ฒŒ ๋ฌผ์–ด๋ณด๋Š” ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค!

@Felix-Dev๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋™์ผํ•œ ๋น„๋””์˜ค(Windows 10X๊ฐ€ UWP ๋ฐ Win32 ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•)์— ๋”ฐ๋ฅด๋ฉด 20:18๋ถ„์— ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•ฑ(Win32/UWP)์ด ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ (์•„์ง?) ๋‚ด ์ดํ•ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•ฑ์ž…๋‹ˆ๋‹ค. XAML Island๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•ฑ์ž…๋‹ˆ๋‹ค.

Q1) SwapchainPanel์€ ์–ธ์ œ WinUI์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋‚˜์™€ ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ•˜๋Š” ์ผ์— ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Q2) SharpDX๋Š” ์ œ์ž‘์ž๊ฐ€ ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Microsoft๋Š” SharpDX์™€ WinUI์˜ ํ•˜๋“œ์›จ์–ด ๋ Œ๋”๋ง ํ‘œ๋ฉด ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ์ œ๊ณตํ•  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ? MS๋Š” SharpDX ์—†์ด C#์œผ๋กœ ํ•˜๋“œ์›จ์–ด ๋ Œ๋”๋ง์„ ํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋„ ๋ด…๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” Unity์— ๋Œ€ํ•ด ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, C#์—์„œ ์ž์ฒด ๊ทธ๋ž˜ํ”ฝ ๋„๊ตฌ, ์—”์ง„ ๋ฐ Unity๊ฐ€ ์•„๋‹Œ ๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ž์œ ๋กœ์šด ํ˜•์‹์˜ ๊ทธ๋ž˜ํ”ฝ ๊ฐœ๋ฐœ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Win2d๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ „์ฒด ํ•˜๋“œ์›จ์–ด ๋ Œ๋”๋ง ๊ธฐ๋Šฅ(DirectX)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Q3) ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋งˆ์šฐ์Šค๋ฅผ ํ™”๋ฉด์˜ ์œ„์ชฝ ๋ฐ ์•„๋ž˜์ชฝ ๊ฐ€์žฅ์ž๋ฆฌ๋กœ ์ด๋™ํ•  ๋•Œ ์ž‘์—… ํ‘œ์‹œ์ค„ ๋ฐ ์ œ๋ชฉ ํ‘œ์‹œ์ค„ ํŒ์—…์„ ๋„๋Š” ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์นด๋ฉ”๋ผ ํŒฌ ๋˜๋Š” ํŒ์—…๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์œ„ํ•ด ์ž์ฒด UI์—์„œ ํ™”๋ฉด ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋งŽ์€ ๊ฒŒ์ž„(๋ฐ ์ผ๋ถ€ ์•ฑ)์— ๋Œ€ํ•œ ๊ฑฐ๋ž˜ ์ฐจ๋‹จ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์–ธ์ œ ์ˆ˜์ •๋  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ(Windows ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ API๋กœ ๊ตฌ๋™ํ•ด์•ผ ํ•˜๋ฏ€๋กœ WinUI์™€ ๊ด€๋ จ๋จ).

Q4) Xaml์„ ์šฐํšŒํ•˜๊ณ  ์ฐฝ ๋ฐ”์ธ๋”ฉ๋œ Swapchain์— ์ง์ ‘ ๋ Œ๋”๋งํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด CoreWindow(IFrameworkView) ์•ฑ ๋ชจ๋ธ์„ ํฌํ•จํ•˜๋„๋ก WinUI๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

WinUI๊ฐ€ Xaml์ด ์•„๋‹Œ ํ‘œ๋ฉด์„ ์ œ๊ณตํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ์ด์ƒํ•˜๊ฒŒ ๋“ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ CoreWindow๋Š” ๋™์ผํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ XamlWindow(UWP์—์„œ๋Š” Window๋ผ๊ณ  ํ•จ)์— ์†ํ•˜๋ฉฐ .net 5์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก UWP์™€๋„ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. .net 5๊ฐ€ uwp๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋น„ uwp๋„ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ UWP ์™ธ๋ถ€์—๋Š” ์ตœ์‹  C++ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋ธ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๋Š” ๋ ˆ๊ฑฐ์‹œ C ์ฝ”๋“œ(Win32)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์ž„ ๋˜๋Š” ๊ทธ๋ž˜ํ”ฝ ์•ฑ์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .net ์ฝ”์–ด์—๋Š” ์ตœ์‹  ๋ฐ์Šคํฌํƒ‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋ธ๋„ ์—†์Šต๋‹ˆ๋‹ค. CoreWindow์šฉ UWP ์†”๋ฃจ์…˜์€ ํšจ๊ณผ์ ์ด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. UWP ์™ธ๋ถ€์— ์กด์žฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค(C++/๋น„ uwp ๋ฐ .net 5 ๋ชจ๋‘). UWP์—์„œ CoreWindow๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์ ์€ UWP์—์„œ .net 5(๋ฐ uwp๊ฐ€ ์•„๋‹Œ ์ตœ์‹  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋ธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ C++)๋กœ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ด์‹ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๋Š” ์ฐฝ ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜๊ณ  ๋ฐฐํฌ ์Šคํ† ๋ฆฌ๊ฐ€ ์ •๋ ฌ๋  ๋•Œ๊นŒ์ง€ UWP๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜์–ด์„œ Microsoft๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ API๋ฅผ UWP ์™ธ๋ถ€๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. UWP๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋‹ค๋ฉด ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  1215 ํ˜ธ์˜ ์ถ”๊ฐ€ ๋…ผํ‰

๋น„ํฌํ•จ/๋น„Xaml ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด Win32 ์ฐฝ์„ CoreWindow๋กœ ๋ฐ”๊พธ๊ณ  CoreWindow๋ฅผ .Net 5 ๋น„ UWP์— ์ œ๊ณตํ•˜๋ฉด ๋น„ Xaml ์ž‘์—…์„ ์œ„ํ•ด Windows ์ „์ฒด์—์„œ ํ†ตํ•ฉ๋œ ์•ฑ/์ฐฝ ๋ชจ๋ธ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ Win32 FOR EVER๋ฅผ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ์•ฑ ๋ชจ๋ธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

ํฌํ•จ๋œ ์‹คํ–‰๊ณผ ํฌํ•จ๋˜์ง€ ์•Š์€ ์‹คํ–‰(์˜ˆ: UWP์™€ Win32 ๊ฐ„)์„ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ  - ์˜ค๋Š˜๋‚  ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง๋ฉดํ•œ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. UWP์— ์ปค๋ฐ‹ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Win32 ๋ฐฐํฌ ์ž์œ ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋“ค์€ HWnd ๋˜๋Š” .Net Framework ์•ฑ ๋ชจ๋ธ์„ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. UWP ์•ฑ/์ฐฝ ๋ชจ๋ธ์„ uwp๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์€ ์•ฑ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋™์ผํ•œ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์—์„œ MS ์Šคํ† ์–ด์™€ ๋‹ค๋ฅธ ์Šคํ† ์–ด ๋ชจ๋‘์— ๋Œ€ํ•ด ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@leoniDEV ์ด ์ค‘ ๋Œ€๋ถ€๋ถ„์€ "ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•ฑ"์ด ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์—ฌ์ „ํžˆ ์ถ”์ธก์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด XAML Island ์•ฑ์ด ํ•ด๋‹น ๋ฒ”์ฃผ์— ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ด ํŠธ์œ„ํ„ฐ ์Šค๋ ˆ๋“œ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค(Matteo Pagani๋Š” Microsoft์—์„œ Windows AppConsult Engineer ๋กœ ๊ทผ๋ฌดํ•ฉ๋‹ˆ๋‹ค). UWP ์ปค๋ฎค๋‹ˆํ‹ฐ ์˜ MS ์ง์›์€ Win32 ์™„์ „ ์‹ ๋ขฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” UWP ์•ฑ์— ๋Œ€ํ•œ ์ง€์›์ด ํ•˜๋ฃจ ๋งŒ์— ์ง€์›๋˜์ง€๋Š” ์•Š์ง€๋งŒ ๋‚˜์ค‘์— ์ถ”๊ฐ€๋  ์˜ˆ์ •์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

@Gavin-Williams WinUI์—๋Š” WinUI UWP์™€ WinUI Desktop์˜ ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. WinUI UWP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Windows 10X์˜ UWP ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์ „์ฒด UWP ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Win32 ์•ฑ์ด UWP UI API(XAML, ๊ตฌ์„ฑ, ์ž…๋ ฅ,... - CoreWindow ์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ API ์ œ์™ธ)์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” WinUI ๋ฐ์Šคํฌํ†ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์•ฑ์€ UWP ์ƒŒ๋“œ๋ฐ•์Šค ๋˜๋Š” UWP์˜ ๊ธฐํƒ€ ๋””์ž์ธ ์ œํ•œ์„ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ UWP ์•ฑ์ด ์•„๋‹ˆ๋ฏ€๋กœ WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์€ UWP ์•ฑ์ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ด‘๋ฒ”์œ„ํ•œ Windows 10 ์žฅ์น˜ ๋ฒ”์ฃผ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ข‹์€ ๊ฐœ์š”๋Š” WinUI ๋กœ๋“œ๋งต ์—์„œ ๊ฐ€์ ธ์˜จ ์•„๋ž˜ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
alt text

WinUI๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฏ€๋กœ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š” ์•ฑ ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์—์„œ ๊ฐ•์กฐํ–ˆ๋“ฏ์ด I believe they will run in the mentioned Win32 container ์€ ์ˆœ์ˆ˜ํ•˜๊ฒŒ WinUI Desktop, 10X์—์„œ ์‹คํ–‰ํ•œ 10X ๋น„๋””์˜ค ๋ฐ ๋ฐ์Šคํฌํƒ‘ ๋ธŒ๋ฆฌ์ง€ ํ…Œ์ŠคํŠธ ์•ฑ์— ๋Œ€ํ•œ ํ˜„์žฌ์˜ ์ดํ•ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ์ง€์‹์ด ์—†์Šต๋‹ˆ๋‹ค. WinUI ํŒ€์€ WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ๊ณผ ์‚ฌ์šฉ๋œ 10X ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๊ณ„ํš์ด ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํžˆ ์•Œ๋ ค์ค„ ๊ฒƒ์ด๋ฉฐ ์—ฌ๊ธฐ์„œ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์˜ˆ, WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์€ 10X์˜ UWP ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

WinUI/Microsoft UI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ๋นŒ๋“œํ•  ๋•Œ Java, Python, JavaScript ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ž ์žฌ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์— ๋Œ€ํ•ด ๋” ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Xlang(cross-lang)์ด๋ผ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ณธ์งˆ์ ์œผ๋กœ .NET์ด ๋” ๋‚˜์€ COM์ด์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

WinUI์™€ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

xlang์€ ๊ธฐ๋ณธ์ ์œผ๋กœ WinRT(Windows ๋Ÿฐํƒ€์ž„)์˜ ํ”Œ๋žซํผ ๊ฐ„ ์˜คํ”ˆ ์†Œ์Šค ๋ฒ„์ „์ด์ง€๋งŒ ์™„์ „ํžˆ ํ˜ธํ™˜๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. WinRT์˜ ๋ชฉ์ ์€ ๋ง์”€ํ•˜์‹  ๋Œ€๋กœ ์–ธ์–ด ๊ฐ„์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ์ด๋ฉฐ COM์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. WinUI์˜ API๋Š” C++์™€ C#์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” WinRT๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Python , Rust (์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ์ž‘์—…ํ•œ ์–ธ์–ด) ๋ฐ JavaScript๋ฅผ ํฌํ•จํ•˜์—ฌ WinRT์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๊ฐ€ ์žˆ์ง€๋งŒ (์•„์ง) WinUI๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์–ธ์–ด๊ฐ€ ์žˆ๋Š” ํ•œ WinUI ์ง€์›์€ ํŠนํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ปดํฌ์ง€์…˜ ๋ฐ XAML API๋Š” ๋‹ค๋ฅธ WinRT ๋ฐ UWP API๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์–ธ์–ด์˜ ํ˜•์‹ ์‹œ์Šคํ…œ์— ๋งคํ•‘ํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํ˜•์‹(๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌํ˜„ ์ƒ์†์˜ ํ•œ ํ˜•ํƒœ)์ด๋ผ๋Š” ํ˜•์‹ ์‹œ์Šคํ…œ ๊ธฐ๋Šฅ์— ํฌ๊ฒŒ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
C++/WinRT์˜ ์ฐฝ์‹œ์ž์ธ Kenny Kerr๋Š” ํ˜„์žฌ ์ƒˆ๋กœ์šด Rust WinRT ํ”„๋กœ์ ์…˜์„ ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์‚ฌ์‹ค ์ตœ๊ทผ์— Rust๊ฐ€ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์œ ํ˜•(๋ฐ WinUI)์„ ๊ฐ€์žฅ ์ž˜ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งŽ์ด ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์–ผ๋งˆ๋‚˜ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋Š๋‚„ ์ˆ˜ ์žˆ๋Š”์ง€ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ”„๋กœ์ ์…˜์„ ๋งŒ๋“œ๋Š” ์ž‘์—…์„ ํ•˜๋ฉด ๋ชจ๋“  ์–ธ์–ด๊ฐ€ WinRT๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ ์–ธ์–ด์˜ ๋””์ž์ธ์— ๋”ฐ๋ผ WinRT ์œ ํ˜• ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ์–ธ์–ด์˜ ์œ ํ˜• ์‹œ์Šคํ…œ์— ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด ๋•Œ๋•Œ๋กœ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋Š๊ปด์ง„๋‹ค.

xlang์€ ๋‚˜์—๊ฒŒ ์ฃฝ์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. C++/WinRT๋Š” ์‹ค์ œ๋กœ ์™„์„ฑ๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ์™€ ๋งค์šฐ ์ด์ƒํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๋‚จ์•„ ์žˆ์–ด ์ผ๋ฐ˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” C++/WinRT๋ฅผ ์ž‘๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์‹œ๊ฐ„ ๋™์•ˆ ๊ณ ๊ตฐ๋ถ„ํˆฌํ–ˆ๊ณ  C++/CX๋กœ 30๋ถ„ ๋งŒ์— ํ–ˆ๋˜ ์ผ์„ ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  C++/CX๋Š” ์žฅ๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋” ์‰ฌ์› ์Šต๋‹ˆ๋‹ค. Microsoft๊ฐ€ Average Joe๊ฐ€ ์ด๋Ÿฌํ•œ ๊ต์ฐจ ์–ธ์–ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉด ๋ฌธ์ œ์— ํŒ€์„ ๋ฐฐ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ Kenny Kerr๊ฐ€ ๋ชจ๋“  ์ž‘์—…์„ ํ˜ผ์ž ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋†”๋‘์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ข‹์€ ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋Š” ํญ๋„“์€ ๋งค๋ ฅ์„ ํ•„์š”๋กœ ํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ์ œํ’ˆ์„ ์™„์„ฑํ•˜๊ณ  ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋ ค๋ฉด ๋„์›€์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ UWP ๋ฐ ํ›„์† ์ œํ’ˆ์ธ WinUI๋Š” LOB ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ง๋ฉดํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

  • ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด WinUI ์ข…์†์„ฑ ์†์„ฑ์€ https://github.com/microsoft/microsoft-ui-xaml/issues/1633 ๋ณด๋‹ค 50๋ฐฐ ๋Š๋ฆฝ๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. wpf๋ณด๋‹ค ๋ช‡ ๋ฐฐ ๋Š๋ฆผ
  • ๋‹ท๋„ท ๋„ค์ดํ‹ฐ๋ธŒ
  • ๋ฆด๋ฆฌ์Šค ์‚ฌ์ด์— ๋งŽ์€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒŒ๋“œ๋ฐ•์‹ฑ ๋ฐ ๊ถŒํ•œ ๋ชจ๋ธ
  • wpf์— ๋น„ํ•ด ํƒ€์‚ฌ ๊ณต๊ธ‰์—…์ฒด์— ๋Œ€ํ•œ ์ œํ•œ๋œ ์‚ฌ์šฉ์ž ์ง€์ • ๊ธฐ๋Šฅ

WinUI๊ฐ€ ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ  ํ–ฅํ›„ 10๋…„ ๋™์•ˆ ์ฐจ์„ธ๋Œ€ LOB ์ง€์› ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๋˜๋Š” ์ „์ž ๋ธ”๋ ˆ์ด์ € ์•ฑ์œผ๋กœ ์ด๋™ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค)

WinUI์˜ ํ˜„์žฌ ์ƒํƒœ์— ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

C++/WinRT๋Š” C++/CX ๋„๊ตฌ ๋ฐ ์ „๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜์— ๋น„ํ•ด ์—ฌ์ „ํžˆ ๋งค์šฐ ์—ด์•…ํ•œ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜์ž…๋‹ˆ๋‹ค. C++๋กœ ์ž‘์„ฑ๋œ WinUI ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๊ฒฝ์šฐ C++/CX ๋„๊ตฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„์— ๋Œ€ํ•ด ์ตœ์†Œํ•œ 1:1 ์ ์šฉ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

C++/CX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ƒ์‚ฐ์„ฑ์ด ๋–จ์–ด์ง€๊ณ  UWP ๊ตฌ์„ฑ ์š”์†Œ๋‚˜ XAML ๊ธฐ๋ฐ˜ UI๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋‘ ๋ฐฐ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๋ฉด ํ‘œ์ค€ C++17์ด ๋˜๋Š” ๊ฒƒ์€ ์•„๋ฌด ์†Œ์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค.

UWP/WinUI์—์„œ C++๋ฅผ ๋‹ค๋ฃจ์–ด์•ผ ํ•˜๋Š” ์ฃผ๋œ ์ด์œ ์ธ ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์œผ๋กœ ์ด์–ด์ง€๋Š” ๊ฒƒ์€ Microsoft๊ฐ€ .NET ์–ธ์–ด์— ๋Œ€ํ•œ ๋ชจ๋“  ์ข…๋ฅ˜์˜ DirectX ๋ฐ”์ธ๋”ฉ์—์„œ ๊ณต์„ ๋†“์ณค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด WinUI๋Š” ๋Œ€์ฒด ๋˜๋Š” WPF 3D ์žฅ๋ฉด ๊ทธ๋ž˜ํ”„์™€ ๊ฐ™์€ XNA์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋ถ„๋ช…ํžˆ ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์—์„œ ๋ผ๋””์˜ค ์นจ๋ฌต์„ ์–ป์—ˆ๊ณ  MonoGame๊ณผ ๊ฐ™์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”„๋กœ์ ํŠธ ๋˜๋Š” Unity์™€ ๊ฐ™์€ ์™„์ „ํ•œ ์—”์ง„์— ๊ฐ•์ œ๋กœ ์ฐธ์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Win2D๊ฐ€ ๋งˆ์นจ๋‚ด WinUI์˜ ์ผ๋ถ€๊ฐ€ ๋˜๋Š” ์‹œ๊ธฐ๋Š” ์–ธ์ œ์ž…๋‹ˆ๊นŒ? ํ˜„์žฌ๋กœ์„œ๋Š” ๋ถˆํ™•์‹คํ•œ ๋ฏธ๋ž˜์™€ ํ•จ๊ป˜ ์œ ์ง€ ๋ณด์ˆ˜ ๋ชจ๋“œ์— ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋‚ด ๋น„๋ˆ„ ์ƒ์ž ์ฃผ๋ณ€์˜ ์ฒญ์ทจ์ž๊ฐ€ ๊ณ„์† ์ค„์–ด๋“ค๋ฉด์„œ UWP ๊ฟˆ์„ ๊ณ„์† ํŒ๋งคํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์–ด๋ ค์›Œ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Windows 10X UI ์š”์†Œ๋Š” ์–ธ์ œ ๋ฐ์Šคํฌํ†ฑ Windows 10์— ์ ์šฉ๋ฉ๋‹ˆ๊นŒ?

@carmellolb 2022-2025?

ํŽธ์ง‘: MS๋Š” ์•„๋งˆ๋„ ์ด๊ฒƒ์„ ์‚ญ์ œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ๋”ฐ๋ผ์„œ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋Š” ์ œํ’ˆ ๋ฐฐ์†ก ์ผ์ •์„ ์ œ์•ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค ;)

@Felix-Dev "WinUI Desktop ..์„ ์‚ฌ์šฉํ•˜๋ฉด Win32 ์•ฑ์ด CoreWindow์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ API๋ฅผ ์ œ์™ธํ•˜๊ณ  UWP UI API์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CoreWindow ์ œ์™ธ? OMG - UWP์—์„œ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ์ด์ž ๊ฐ€์žฅ ์ค‘์š”ํ•œ API์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ฐฝ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ API์ž…๋‹ˆ๋‹ค. UWP ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๋ฐ ์™ธ๋ถ€์—์„œ ๋ณดํŽธ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ธต์— ๋Œ€ํ•œ ๊ณตํ†ต ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฉฐ C++์˜ ๋ ˆ๊ฑฐ์‹œ Win32 c ์ฝ”๋“œ ๋˜๋Š” C#์— ๋Œ€ํ•ด .net ์ฝ”์–ด๊ฐ€ ์ œ๊ณตํ•  ๋ชจ๋“  ๊ฒƒ(๋˜ ๋‹ค๋ฅธ Window ํด๋ž˜์Šค?)์— ๊ฐ‡ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค.

Microsoft๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. UWP ์•ˆํŒŽ์—์„œ XamlWindow๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ UWP ์•ˆํŒŽ์—์„œ CoreWindow๋„ ์ œ๊ณตํ•˜์„ธ์š”.

ํ†ตํ™” ์ •๋ณด: Teams์—์„œ ๋ฉ€์–ด์ง„ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? YouTube๋Š” ๋งˆ์ง€๋ง‰์— ๊ทธ๋ ‡๊ฒŒ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@Gavin-Williams

https://github.com/microsoft/microsoft-ui-xaml/issues/1215#issuecomment -531994216์—์„œ:

์šฐ๋ฆฌ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ WinUI 3๊ฐ€ UWP์—์„œ ์‹คํ–‰ํ•  ๋•Œ CoreWindow๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ฐ์Šคํฌํ†ฑ(Win32)์—์„œ ์‹คํ–‰ํ•  ๋•Œ Win32 Window(HWind)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

UWP ์•ฑ์˜ WinUI 3์€ AppWindow API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Desktop์˜ ๊ฒฝ์šฐ ๋น„์Šทํ•œ ๊ฒƒ์ด ๋‚˜์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ด๊ฒƒ์„ ์„ค๊ณ„ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ง€๊ธˆ๊นŒ์ง€ ์ž์„ธํ•œ ๋‚ด์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด ํŒ€์€ ๋˜ํ•œ ๊ฐ™์€ API๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ฐพ๊ณ  ๋งํ–ˆ๋‹ค CoreApplicationViewTitleBar.ExtendViewIntoTitleBar ์šฐ๋ฆฌ๋Š” ๋‘ ์„ธ๊ณ„์˜ ์ตœ๊ณ  ์–ป์„ ์ˆ˜์žˆ์„ ์ˆ˜ ์žˆ๋„๋ก๋ฟ๋งŒ ์•„๋‹ˆ๋ผ WinUI ๋ฐ์Šคํฌํƒ‘์„. Win32 ์ฐฝ ๋””์ž์ธ(์˜ˆ: ์ œ๋ชฉ ํ‘œ์‹œ์ค„ ์—†์Œ/100% ์‚ฌ์šฉ์ž ์ง€์ • ์ œ๋ชฉ ํ‘œ์‹œ์ค„, ์•ฑ ์ฐฝ < ํ•„์š”ํ•œ ์ตœ์†Œ ํฌ๊ธฐ, ์ž‘์—… ํ‘œ์‹œ์ค„ ๋ฒ„ํŠผ ์—†์Œ ๋“ฑ) ๋ฐ ์ƒˆ๋กœ์šด ์ตœ์‹  UWP ์‚ฌ์šฉ์ž ์ง€์ • API์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ. (UWP์˜ ๊ฒฝ์šฐ AppWindow V2๊ฐ€ ํ˜„์žฌ Win32 ์œˆ๋„์šฐ ๊ธฐ๋Šฅ์— ๊ฐ€๊นŒ์šด ์œˆ๋„์šฐ ๊ธฐ๋Šฅ์„ ๊ฐ€์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

@jesbis WinUI ๋ฐ์Šคํฌํ†ฑ ๊ด€๋ จ ์งˆ๋ฌธ: https://github.com/microsoft/microsoft-ui-xaml/issues/1939 ๋ฌธ์ œ์—์„œ (์ ์–ด๋„) MSIX ํŒจํ‚ค์ง€ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์—์„œ ์•Œ๋ฆผ ํ™œ์„ฑํ™”๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ง€์ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ์— ์–ธ๊ธ‰๋œ 1909๋…„:

Desktop Bridge ์•ฑ์˜ ๊ฒฝ์šฐ UWP ์•ฑ์ฒ˜๋Ÿผ ์•Œ๋ฆผ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค. ์‚ฌ์šฉ์ž๊ฐ€ ์•Œ๋ฆผ์„ ํด๋ฆญํ•˜๋ฉด ์•Œ๋ฆผ์—์„œ ์ง€์ •ํ•œ ์‹œ์ž‘ ์ธ์ˆ˜์™€ ํ•จ๊ป˜ ์•ฑ์ด ๋ช…๋ น์ค„์—์„œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

์–ธ๊ธ‰๋œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐ์Šคํฌํ†ฑ ๋ธŒ๋ฆฌ์ง€ ์•ฑ์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” OS ๋ฒ„์ „์œผ๋กœ ๋ฐฑํฌํŠธ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๋™์•ˆ ๋‚ด ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด ์œ„์— ์ธ์šฉ๋œ ๊ธฐ๋ณธ ํ† ์ŠคํŠธ ํ™œ์„ฑํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ COM Activator) ๋ชจ๋“  WinUI ๋Œ€์ƒ Windows 10 ๋ฒ„์ „์—์„œ? (๋˜๋Š” ์œ ์‚ฌํ•œ ํ† ์ŠคํŠธ ํ™œ์„ฑํ™” ๊ฐœ๋….)

@Felix-Dev ์„ค๋ช…์„œ์—์„œ XAML Island๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•ฑ์„ ์—„๊ฒฉํ•˜๊ฒŒ ์˜๋ฏธํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ดํ•ดํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ง€์ • ์ปจํŠธ๋กค ์‚ฌ์šฉ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์žƒ๋Š” ๋Œ€์‹  Win32 ์•ฑ์—์„œ UWP XAML ํ˜ธ์ŠคํŒ… API๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฌธ์„œ(๋ฐ ๋ฌธ์„œ์˜ ์ฐธ๊ณ ):

XAML ์•„์ผ๋žœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WPF ์•ฑ์—์„œ ํ‘œ์ค€ UWP ์ปจํŠธ๋กค ํ˜ธ์ŠคํŒ…

ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ

์•ฑ์˜ ํ”„๋กœ์ ํŠธ ๋ฐ ์†Œ์Šค ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. WindowsXamlHost ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์ค€ ์ž์‚ฌ UWP ์ปจํŠธ๋กค์„ ํ˜ธ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ .NET Framework ๋˜๋Š” .NET Core 3์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์•ฑ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

XamlApplication ์—์„œ ํŒŒ์ƒ๋˜๋Š” ๋ฃจํŠธ Application ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” UWP ์•ฑ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค . WPF ๋˜๋Š” Windows Forms ํ”„๋กœ์ ํŠธ์—๋Š” Windows Community Toolkit์—์„œ ์ œ๊ณตํ•˜๋Š” Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐœ์ฒด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ์‚ฌ์šฉ์ž ์ง€์ • UWP XAML ํ˜•์‹์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋ฃจํŠธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ณต๊ธ‰์ž ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

Although this component isn't required for trivial XAML Island scenarios such as hosting a
first-party UWP control, your app needs this XamlApplication object to support the full
range of XAML Island scenarios, including hosting custom UWP controls.
Therefore, we recommend that you always define a XamlApplication object in any solution
in which you are using XAML Islands.

๋‚˜๋Š” C++/WinRT๋ฅผ ์ž‘๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์‹œ๊ฐ„ ๋™์•ˆ ๊ณ ๊ตฐ๋ถ„ํˆฌํ–ˆ๊ณ  C++/CX๋กœ 30๋ถ„ ๋งŒ์— ํ–ˆ๋˜ ์ผ์„ ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

C++๋กœ ์ž‘์„ฑ๋œ WinUI ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๊ฒฝ์šฐ C++/CX ๋„๊ตฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„์— ๋Œ€ํ•ด ์ตœ์†Œํ•œ 1:1 ์ ์šฉ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

@Gavin-Williams, @pjmlp ์ฐพ๊ณ  ์žˆ๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด cppwinrt ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์—์„œ ๋ฌธ์ œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹์ˆ˜ ์žˆ๋Š” WinUI ๊ด€๋ จ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” C++/WinRT ์ง€์›์— ๋Œ€ํ•ด ์ ๊ทน์ ์œผ๋กœ ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋“ฃ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋„ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด WinUI ๊ธฐ๋Šฅ์€ ๋ชจ๋‘ C++/WinRT์— ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•ฑ(์˜ˆ: ๊ณ„์‚ฐ๊ธฐ )๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

ํ†ตํ™” ์ •๋ณด: Teams์—์„œ ๋ฉ€์–ด์ง„ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? YouTube๋Š” ๋งˆ์ง€๋ง‰์— ๊ทธ๋ ‡๊ฒŒ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์˜ค๋””์˜ค ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๋ฉด: ์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ๋‹ฌ์— ์ผ€์ด๋ธ”์ด ๋ถˆ๋Ÿ‰ํ–ˆ์œผ๋ฉฐ ๋‚ด์ผ์€ ๋” ๋‚˜์•„์ง€๊ธฐ๋ฅผ ๋ฐ”๋ผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. YouTube๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ๋” ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜๊ณ  Channel9 ์ŠคํŠœ๋””์˜ค๋Š” ์šฐ๋ฆฌ๊ฐ€ Teams์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ํšŒ์˜์‹ค๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋‚˜์€ ์˜ค๋””์˜ค ๋ฐ ๋น„๋””์˜ค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


RE: CoreWindow, win32 ์ง€์›, ์ปจํ…Œ์ด๋„ˆ - ๋‚ด์ผ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฝœ์—์„œ @marb2000 ๊ณผ ํ•จ๊ป˜ ํ˜„์žฌ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ

๋˜ํ•œ ์ง€๊ธˆ๊นŒ์ง€์˜ ๋‹ค๋ฅธ ์งˆ๋ฌธ(์˜ˆ: SwapChainPanel ํƒ€์ž„๋ผ์ธ, Win2D/DirectX, ์„ฌ ๋“ฑ์˜ ํ˜„์žฌ ์ƒํƒœ)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์˜๊ฒฌ๊ณผ ์งˆ๋ฌธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@jebis ๋‹ค์‹œ

๊ฐœ๋ฐœ์— ๋Œ€ํ•œ C++/WinRT ์ ‘๊ทผ ๋ฐฉ์‹์€ C++/CX๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ƒ์‚ฐ์„ฑ์— ์™„์ „ํžˆ ๋’ค๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์—ด์–ด์•ผ ํ•  ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

C++/CX๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜์Œ์—๋Š” Microsoft๊ฐ€ ๋งˆ์นจ๋‚ด Visual C++๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํŒ๋งคํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ 25๋…„ ํ›„ Visual C++๋Š” C++ Builder์˜ RAD ๊ฒฝํ—˜์„ ๋”ฐ๋ผ ์žก์•˜์Šต๋‹ˆ๋‹ค.

๋Œ€์‹  C++/WinRT๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ MIDL ์ƒ์šฉ๊ตฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ATL/WTL ์‹œ์ ˆ๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. MIDL 3.0์ด ์›๋ž˜ MIDL๋ณด๋‹ค ๋‹ค์†Œ ๋‚ซ๊ธด ํ•˜์ง€๋งŒ C++/CX๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” UWP ๋ฐ”์ธ๋”ฉ ์ƒ์šฉ๊ตฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜.

C++/CX๊ฐ€ ์™„๋ฒฝํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์€ ์—ฌ์ „ํžˆ โ€‹โ€‹C#/VB.NET ๋˜๋Š” C++ Builder์— ๋ฏธ์น˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

UWP๋Š” ์–ด์จŒ๋“  Windows์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ˆœ์ˆ˜ํ•œ C++ ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ C++/Winrt๋ฅผ ๊ตฌ์ž…ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ C# ๋˜๋Š” VB.NET์—์„œ์™€ ๋˜‘๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ATL/WTL.

๊ทธ๋ฆฌ๊ณ  ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด DirectX๋ฅผ UWP ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ ์š”์†Œ ์ง‘ํ•ฉ์œผ๋กœ ๋…ธ์ถœํ•˜๋ ค๋Š” ํ˜ธ์†Œ๊ฐ€ ๊ณ„์† ๋ฌด์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” C++๋กœ๋งŒ ๋ฐ”์ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ cppwinrt์—์„œ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Š” ๊ฒƒ์ด C++/CX๋งŒํผ ์‰ฝ๊ฒŒ Blend ๋ฐ Visual Studio์—์„œ C++/Winrt๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. cppwinrt ํŒ€์ด Visual Studio ํŒ€์— ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ–ˆ๊ณ , ์ „ํ†ต์ ์œผ๋กœ(MFC/ATL/WTL) C++ ๋„๊ตฌ ํŒ€์€ ๋‹ค๋ฅธ ํšŒ์‚ฌ๊ฐ€ C++(Qt, ์— ๋ฐ”์นด๋ฐ๋กœ).

@pjmlp ์„ธ๋ถ€ ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. C++/WinRT ๋„๊ตฌ์— ๋Œ€ํ•ด ๊ณต์œ ํ•  ์ •๋ณด๊ฐ€ ๋” ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค๊ณผ ํ™•์ธ ์ค‘์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด์ผ๊นŒ์ง€ ์ข‹์€ ๋‹ต๋ณ€์„ ์–ป์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์„ ์œ„ํ•ด C++/WinRT์— ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์ง€๋งŒ, ๋„์›€์ด๋œ๋‹ค๋ฉด WinUI 3์šฉ C++/CX ํ…œํ”Œ๋ฆฟ๋„ ํฌํ•จํ•˜๋„๋ก ๋กœ๋“œ๋งต์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์•ž์œผ๋กœ WinUI ์•ฑ ๊ฒฉ๋ฆฌ์— ๋Œ€ํ•œ ๊ณ„ํš์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ด€์ ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ฒฉ๋ฆฌ/์ƒŒ๋“œ๋ฐ•์‹ฑ ๋ฐ ๊ธฐ๋Šฅ ์ œ์–ด(์‚ฌ์šฉ์ž ์˜ตํŠธ์ธ ์•„๋‹˜)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฏธ๊ตฌ์—˜์„ ์œ„ํ•œ ์ฃผ์ œ๋กœ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค..

@infoequipt ๊ฒฉ๋ฆฌ๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž์„ธํžˆ AppContainer ์ง€์›๊ณผ ๊ฐ™์€๊ฐ€์š”?

ํ˜„์žฌ UWP ๋ฐ ํ›„์† ์ œํ’ˆ์ธ WinUI๋Š” LOB ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

  • ๋ฆด๋ฆฌ์Šค ์‚ฌ์ด์— ๋งŽ์€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@Xarlot ์–ด๋–ค ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๊นŒ? UWP API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆด๋ฆฌ์Šค๋งˆ๋‹ค ๋†’์€ ์ˆ˜์ค€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์— ๊ด€ํ•œ ๊ฐœ๋นˆ ์œŒ๋ฆฌ์—„ @ SharpDX ์‚ฌ์šฉ๋˜์ง€๋ฅผ, ๋‹น์‹ ์€ ๋ณด๊ธธ ์›ํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜๋„ Vortice.Windows ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ๋Œ€์•ˆ์ด๋‹ค. @Aminator ๋Š” ํ˜„์žฌ ์ž์‹ ์˜ ์™„์ „ํ•œ UWP/C#/XAML DX12 ๊ฒŒ์ž„ ์—”์ง„ ๋ฐ ํŽธ์ง‘๊ธฐ์ธ DX12GameEngine ์žˆ์Šต๋‹ˆ๋‹ค.
๊ท€ํ•˜์˜ ์•ฑ์—์„œ ๊ท€ํ•˜์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ์ ํ•ฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค! ๐Ÿ˜„

ํ†ตํ™”์— ๋Œ€ํ•œ ์งˆ๋ฌธ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‚ฌ์†Œํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ WinUI 3์œผ๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด "์ค‘์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ"์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ๋Š” ์ž‘์€ ๋ ˆ๊ฑฐ์‹œ UI ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? StackPanel Spacing ์†์„ฑ์„ ์ ‘ํžŒ ํ•ญ๋ชฉ์— ์ž˜๋ชป ์ ์šฉํ–ˆ์Šต๋‹ˆ๊นŒ?

์ฆ‰. StackPanel ์ ‘ํžŒ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ํ•ญ๋ชฉ ์‚ฌ์ด์— ๊ฐ„๊ฒฉ์ด ์ ์šฉ๋˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ํ‘œ์‹œ/์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ญ๋ชฉ ์‚ฌ์ด์— ์ˆ˜๋™ ํŒจ๋”ฉ/์—ฌ๋ฐฑ์œผ๋กœ ๋Œ€์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š”์— ๋Œ€ํ•œ PR์ด ํŠน์ • ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ • ํ•œ WrapPanel ์œˆ๋„์šฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ํˆดํ‚ท ( # 2838 ), ๊ทธ๋ฆฌ๊ณ  ๋ถ„๋ช…ํžˆ์ด ํ–‰๋™ StackPanel ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋Š” ๋‹ค๋ฅธ MS์˜ ์—”์ง€๋‹ˆ์–ด์— ์˜ํ•ด ์ธ์ •๋˜์—ˆ๋‹ค ๋˜ํ•œ. ๐Ÿค”

์•ž์œผ๋กœ๋„ ํž˜์จ์ฃผ์„ธ์š”! ๐Ÿš€

@leoniDEV ์ง€์ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด์ผ ํ™•์‹คํ•œ ๋‹ต์ด ๋‚˜์˜ฌ์ง€ ์ง€์ผœ๋ด…์‹œ๋‹ค ๐Ÿ™‚

@jesbis WinUI Desktop์— ๊ด€ํ•œ ๋‘ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์งˆ๋ฌธ(์„œ๋กœ ๊ด€๋ จ๋จ):

  1. WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์— ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค(Win32 ํ‘œ์ค€)์™€ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค(UWP ํ‘œ์ค€) ๊ฐ„์— ๋‚ด์žฅ๋œ ์Šค์œ„์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ง€๊ธˆ ๋‹น์žฅ Win32 ์•ฑ์ด ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋˜๋„๋ก ํ•˜๋ ค๋ฉด ์ด ๋™์ž‘์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•ฑ ์ž ๊ธˆ(์˜ˆ: ์ธ์Šคํ„ด์Šค๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ฎคํ…์Šค)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‘ ๋ฒˆ์งธ ์•ฑ ์ธ์Šคํ„ด์Šค์—์„œ ๊ธฐ๋ณธ ์•ฑ ์ธ์Šคํ„ด์Šค๋กœ ์ž‘์—…์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด SendMessage ์™€ ๊ฐ™์€ Win32 API๊ฐ€ ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์งˆ๋ฌธ 2 ์ฐธ์กฐ). WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์šฉ UWP ์•ฑ์˜ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ๋™์ž‘์„ ๊ฐ–๋Š” ์˜ต์…˜์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  1. WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์—์„œ UWP Jumplist API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํ˜„์žฌ ๋ฐ์Šคํฌํ†ฑ ๋ธŒ๋ฆฌ์ง€ ์•ฑ์€ ์•ฑ์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ๊ฐœ์š”๋Š” Windows ํ„ฐ๋ฏธ๋„ ๋ฌธ์ œ https://github.com/microsoft/terminal/issues/576 ์ฐธ์กฐ). Win32/WPF API๋ณด๋‹ค ์ž‘์—…ํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ์— ๋Œ€ํ•ด ์ด API๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ ํ”„ ๋ชฉ๋ก ์ž‘์—… ์•„์ด์ฝ˜์€ ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋œ .exe ๋˜๋Š” .dll์„ ๋งŒ๋“  ๋‹ค์Œ ํ•ด๋‹น ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋Œ€์‹  ms-appx:/// ๋˜๋Š” ms-appdata:/// URI ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๋˜ํ•œ ํŠน์ • ์•„์ด์ฝ˜์— ๋Œ€ํ•œ ํŒŒ์ผ์˜ ์˜คํ”„์…‹ ์ž…๋‹ˆ๋‹ค.

    ๋ฌธ์„œ ์—๋Š” UWP Jumplist API์˜ ์žฅ์ ์ด ์š”์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋˜๋Š” UWP Windows.UI.StartScreen.JumpList API๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋ฉด ํŒจํ‚ค์ง€ ๊ด€๋ จ ms-resource URI ์ฒด๊ณ„(์–ธ์–ด, DPI ๋ฐ ๊ณ ๋Œ€๋น„ ์ธ์‹)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ๋ฐ ์ด๋ฏธ์ง€ ์ž์‚ฐ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

UWP ์•ฑ์˜ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ๋™์ž‘์€ ์ž ์žฌ์ ์œผ๋กœ ์ ํ”„ ๋ชฉ๋ก ์ž‘์—…์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์•ฑ ์ธ์Šคํ„ด์Šค์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ์ ํ”„ ๋ชฉ๋ก ์ž‘์—…์ด ์žˆ๋Š” ๊ฒฝ์šฐ WPF/Win32์—์„œ ๋‘ ๋ฒˆ์งธ ์•ฑ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์š”์ฒญ๋œ ์ž‘์—…์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด SendMessage Win32 API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์•ฑ ์ธ์Šคํ„ด์Šค์—. ์‹คํ–‰ ์ค‘์ธ ์•ฑ์—์„œ UWP์˜ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ๋™์ž‘์„ ์‚ฌ์šฉ ํ•˜๋ฉด ํ˜ธ์ถœ๋œ ์ ํ”„ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Win32์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ์ถ”๊ฐ€ ์ž‘์—… ์—†์ด.

@pjmlp ๋‹น์‹ ์ด ๋ณด์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ ์ง€๋‚œ Build ์ปจํผ๋Ÿฐ์Šค์˜ Kenny Kerr์™€ Scott Jones์˜ ์ด ์„ธ์…˜์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฐ”์ธ๋”ฉ์— ๋Œ€ํ•œ ํ”„๋กœํ† ํƒ€์ž… ๊ฐœ์„  ์‚ฌํ•ญ๊ณผ ์ผ๋ถ€ C++์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๋งˆ์ง€๋ง‰ ~11๋ถ„์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ IDL ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ฝ”๋“œ ์ƒ์„ฑ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํ”Œ๋ ‰์…˜ ๋ฐ ๋ฉ”ํƒ€ํด๋ž˜์Šค ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ  ์‚ฌ์–‘:

https://youtu.be/X41j_gzSwOY?t=2659

์‹œ๊ฐ„์ด ๋œ๋‹ค๋ฉด ๋‚ด์ผ ํ†ตํ™”์—์„œ๋„ ์ด์— ๋Œ€ํ•ด ์กฐ๊ธˆ ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jesbis ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์•ผ๊ธฐ๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„์ง ๋„ˆ๋ฌด ๋จผ ๋ฏธ๋ž˜๋‹ค.

์ง€๊ธˆ ๋‹น์žฅ์€ ๊ธฐ์กด DirectX ์ฝ”๋“œ๋ฅผ @Sergio0694 ๊ฐ€ ์ง€์ ํ•œ ์ด์‹ํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋Ÿฌํ•œ ๋„๊ตฌ๊ฐ€ ์—ด๋งค๋ฅผ

๋‚˜๋Š” ๋‹น์‹ ์˜ ๋…ธ๋ ฅ์— ๊ฐํƒ„ํ•˜์ง€๋งŒ Silverlight, XNA, WinRT, UAP, UWP, WinUI, .NET Framework, WCF, EF6 ์ดํ›„์— ์ฐธํ˜ธ์—์„œ ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ๊ณ„์† ์žฌ์ž‘์„ฑ์„ ํ•˜๋Š” ๋ฐ ์ง€์ณค์Šต๋‹ˆ๋‹ค.

WinUI๋Š” ๋ชจ๋“  ๋ฉด์—์„œ WPF๋ณด๋‹ค ์šฐ์ˆ˜ํ•ด์•ผ ํ•˜๋ฉฐ ์ด์œ  ๋•Œ๋ฌธ์— C++๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๋„๊ตฌ๋Š” .NET ๊ฐœ๋ฐœ์ž๊ฐ€ ์ข‹์•„ํ•˜๊ฒŒ ๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ˆ˜์ค€์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Electron ์Šคํƒ€์ผ ์•ฑ์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@Sergio0694๊ฐ€ ์ด๋ฏธ ์งˆ๋ฌธํ•œ ๊ฒƒ์ฒ˜๋Ÿผ WinUi 3.0์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ „ํ™˜ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž˜๋ชป ์ ์šฉ๋œ ๊ณต๋ฐฑ๊ณผ ๊ฐ™์€ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํฌํ•จํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฆ„๊ณผ ์œ ํ˜•์ด ํ˜„์žฌ ์‹ค์ œ๋กœ ์ •๋ ฌ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ NavigationView.IsBackButtonVisible ์†์„ฑ์˜ ์ด๋ฆ„์„ BackButtonVisibility ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(IsBackButtonVisible์€ bool์ด ์•„๋‹Œ NavigationViewBackButtonVisible ์—ด๊ฑฐํ˜•์ž„). ์ด๊ฒƒ ์€ ์—ฌ๊ธฐ ์—์„œ๋„ ๋…ผ์˜

@chingucoding ํŒ€์—์„œ WinUI 3.0 ์ž์ฒด์˜ ๊ฒฝ์šฐ ๊ธฐ์กด(UWP) ์•ฑ์„ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด์‹ํ•˜๋ ค๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์Šน์ธ๋˜๋ฉด ํ›„์† WinUI 3.x/4/5/.... ๋ฆด๋ฆฌ์Šค์—์„œ ๊ตฌํ˜„๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Q: WinUI 3.x๋Š” AcrylicBrush ์™€ ํ•จ๊ป˜ HostBackdrop AcrylicBrush ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ? ํ˜„์žฌ ์•ŒํŒŒ์—์„œ ๊นจ์ง„ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์ง€๋งŒ ๋ฆด๋ฆฌ์Šค ์ „์— ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋กœ๋“œ๋งต์— ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

Q: WinUI Desktop์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์Šคํฌํ†ฑ ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ AcrylicBrush ์™€ ํ•จ๊ป˜ HostBackdrop AcrylicBrush ๋ฅผ _๋งˆ์นจ๋‚ด_ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์ด์ „์— ๊ตฌ์„ฑ ์†์„ฑ ์‚ฌ์šฉ WCA_ACCENT_POLICY ๊ฐ€์ง„ ACCENT_ENABLE_ACRYLICBLURBEHIND ๊ทธ๋Ÿฌ๋‚˜ ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๋Š” ๋น„ํŒ์  19H1 +์ด ํŒŒ์‚ฐํ•˜๊ณ  ์šฐ๋ฆฌ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์ดํ›„ ๊ณ ํ†ต์„ํ•˜๊ณ ์žˆ๋‹ค. (์ด๋Š” Emoji Picker์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์—๋„ ์˜ํ–ฅ์„ ์ฃผ์—ˆ์ง€๋งŒ Microsoft๋Š” ๋Œ€์‹  ์•„ํฌ๋ฆด์ด ์•„๋‹Œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„œ๋น„์Šคํ–ˆ์Šต๋‹ˆ๋‹ค.)

WebView2 ์ •๋ณด:
https://docs.microsoft.com/en-us/microsoft-edge/hosting/webview2

"๊ฐœ๋ฐœ์ž ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” Windows 10, Windows 8.1, Windows 8 ๋ฐ Windows 7์—์„œ Win32 C++์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ .NET์—์„œ WebView2 ๋ฐ XAML์„ ์ง€์›ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค."

์ œ ์งˆ๋ฌธ์€ .. WebView2 SDK์˜ .NET ๋ฒ„์ „์ด Win8.1, 8 ๋ฐ 7์— ์ ์šฉ๋˜๋„๋ก ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?
.NET์˜ WebView2๋Š” WinUI3์„ ํ†ตํ•ด์„œ๋งŒ ์ง€์›๋œ๋‹ค๋Š” ์šฐ๋ ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ดํ•ด์— ๋”ฐ๋ฅด๋ฉด WinUI3 WinForms ์•ฑ ์ง€์›์€ .NET Core ๊ธฐ๋ฐ˜ ๋ฐ Win10์—๋งŒ ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ์ƒํ™ฉ์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด ํด๋ผ์ด์–ธํŠธ์—๋Š” IE BrowserControl์„ ์‚ฌ์šฉํ•˜๋Š” WinForm ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ IE๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์•ฑ์€ Win7, 8, 8.1์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(SHOULD). (์˜ค๋ž˜๋œ os ์ง€์›์— ๋Œ€ํ•ด ๋‚˜๋ฅผ ๋น„๋‚œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค)

๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด:

  • WinUI 3.0์šฉ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋นŒ๋“œ์˜ Win32 ETA
  • ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ์ค‘์ธ ์ผ๋ถ€ UI ์š”์†Œ์˜ ์ด๋ฏธ ์ปดํŒŒ์ผ๋œ ๋ฐ๋ชจ exe๋ฅผ ์ œ๊ณตํ•˜๋ฉด ๋™๋ฃŒ ๋™๋ฃŒ์—๊ฒŒ ์ž๋ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • WinUI 3.0์€ WPF/Silverlight์™€ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ง€์ • ์…ฐ์ด๋” ํšจ๊ณผ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•  ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๊นŒ? WinUI์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ Œ๋”๋ง ๋ ˆ์ด์–ด์—์„œ๋„ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

@leoniDEV ๊ฐ•์กฐ ํ‘œ์‹œํ•œ ๋Œ€๋กœ XAML Island ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค(๋ณ„๋„์˜ UWP ํ”„๋กœ์ ํŠธ ์—†์Œ). ๋‹จ์ผ UWP ๋ฐ›์€ ํŽธ์ง€ํ•จ ์ปจํŠธ๋กค(๋ฒ„ํŠผ)์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ 10X์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ด์•ผ๊ธฐ๋Š” ๋†€๋ž์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ์˜ˆ์ƒ๋Œ€๋กœ Win32 ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ตœ์†Œํ•œ ํ˜„์žฌ๋กœ์„œ๋Š” ๋ณ„๋„์˜ UWP ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” XAML Island ์•ฑ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ง€์›์ด ์•„์ง ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ ˆ๊ฑฐ์‹œ WPF ์•ฑ์˜ v-next๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ .NET Core WPF๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ WinUI๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ Windows.UI.Xaml(Microsoft.UI.Xaml๊ณผ ๋ฐ˜๋Œ€)์—์„œ ํŒŒ์ƒ๋˜๋Š” Prism๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. WinUI์— ๋Œ€ํ•œ ํ™•์‹คํ•œ PnP ์ง€์นจ์ด ์•„์ง ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋„ˆ๋ฌด ์ด๋ฅธ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

Windows 10x์˜ ์‹œ์ž‘ ๋ฉ”๋‰ด์™€ ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ๊ฐ€ WinUI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์›น ๊ธฐ๋ฐ˜์ธ ์ด์œ ์— ๋Œ€ํ•ด ์…ธ ํŒ€์ด๋‚˜ ๋ฐ›์€ ํŽธ์ง€ํ•จ ์•ฑ ํŒ€์˜ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์ด์•ผ๊ธฐํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ•„์š”ํ•œ ๊ฒƒ์€ ํ˜„์žฌ UWP ์•ฑ(๋ฐ์Šคํฌํ†ฑ ํ™•์žฅ ํฌํ•จ)์—์„œ WinUI ๋ฐ์Šคํฌํ†ฑ ์•ฑ(๋ฐ์Šคํฌํ†ฑ ํ™•์žฅ ์—†์Œ)์œผ๋กœ์˜ ์›ํ™œํ•œ ํฌํŒ… ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”? ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ํ•จ์ •์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๊ฒƒ์ด ์–ด๋ ค์šด ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜๋ฉด ์•ž์œผ๋กœ ํ•ญ์ƒ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•˜๊ณ  P/Invoke๋ฅผ ํ†ตํ•ด ๋ชจ๋“  win32 API๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋กœ๋“œ๋˜๋Š” dll์„ ํ—ˆ์šฉํ•˜๋„๋ก UWP(๋ฐ์Šคํฌํ†ฑ์—์„œ ์‹คํ–‰๋˜๋Š” ์•ฑ์šฉ)๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? LoadPackagedLibrary๊ฐ€ ์—†๋Š” ๋‹ค๋ฅธ dll(๊ทธ๋Ÿฌ๋‚˜ LoadLibrary๊ฐ€ ์žˆ์Œ).

์ฒซ ๋ฒˆ์งธ Windows 10X ์žฅ์น˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ WinUI 3.0์ด ์‹คํ–‰๋  ๊ฐ€๋Šฅ์„ฑ์€ ์–ผ๋งˆ๋‚˜ ๋ฉ๋‹ˆ๊นŒ? ์ €๋Š” Windows ๊ฐœ๋ฐœ ์„ธ๊ณ„๋กœ ๋›ฐ์–ด๋“œ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ๋ฉฐ ์ด ์‹œ์ ์—์„œ ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์ด ๊ฐ€์žฅ ํƒ€๋‹นํ•œ์ง€ ๊ฒฐ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ์„ ํ•ด์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ, ์‹œ์ฒญํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋…น์Œ์€ ๊ฐ™์€ ๋งํฌ์—์„œ ์ƒ์ค‘๊ณ„๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์–ป์ง€ ๋ชปํ•œ ๋งŽ์€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์š”์•ฝํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ๋‹ต๋ณ€์„ ๊ณง ๊ฒŒ์‹œํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ข‹์€ ์‡ผ ์—ฌ๋Ÿฌ๋ถ„, ์ œ ์งˆ๋ฌธ์„ ๋ฐ›์•„์ฃผ์‹œ๊ณ  Miguel์ด ๋ฐœํ‘œํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๋งˆ์Œ์œผ๋กœ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ๋” ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๊ธฐ์กด Win32 ์•ฑ์€ WM_PAINT์˜ ํ™”๋ฉด์— ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. XAML ์•ฑ์€ ์œ ์ง€ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ๊ฐœ์ฒด/์ปจํŠธ๋กค์„ ๋งŒ๋“ค๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์„ ํ™”๋ฉด์— ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ์ฐฝ์— ๊ทธ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ํ˜„๋Œ€์ ์ธ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” WM_PAINT๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๊นŒ? Win2D ๋˜๋Š” ๋‹ค๋ฅธ ์ฆ‰์‹œ ๋ชจ๋“œ API?

  2. ์ ‘๊ทผ์„ฑ์€ Win32(COM API)์™€ WPF(์ž๋™ํ™” ํ”ผ์–ด)์—์„œ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. Win32 + WinUI ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ฉด ์ ‘๊ทผ์„ฑ ํŠธ๋ฆฌ๋ฅผ ๋” ์‰ฝ๊ฒŒ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ด์ „ COM API๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋‚ด ์‚ฌ์šฉ์ž ์ง€์ • ๊ทธ๋ฆฐ ์ฝ˜ํ…์ธ ๋ฅผ ์ ‘๊ทผ์„ฑ ํŠธ๋ฆฌ์˜ ์ ‘๊ทผ์„ฑ ์ปจํŠธ๋กค๊ณผ ์–ด๋–ป๊ฒŒ ํ˜ผํ•ฉํ•ฉ๋‹ˆ๊นŒ?

  3. ์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๋Š” ํ”„๋ฆฐํ„ฐ DC์— ๊ทธ๋ฆผ์„ ๊ทธ๋ ค์„œ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. Win32+WinUI๋กœ ์ƒˆ๋กœ์šด ์ธ์‡„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

  4. ๋‚˜๋Š” ์—ฌ์ „ํžˆ HWND, CoreWindow ๋ฐ WinUI์— ๋Œ€ํ•ด ๋‹ค์Œ์— ์˜ค๋Š” ๋ชจ๋“  ๊ฒƒ ์‚ฌ์ด์˜ ๊ด€๊ณ„์™€ ๊ด€๋ จํ•˜์—ฌ ์•ฝ๊ฐ„ ๋‹นํ™ฉํ•ฉ๋‹ˆ๋‹ค. HWND๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด CreateWindow ํ˜ธ์ถœ์„ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค... ๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์•ฝ ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋‚˜๋ฅผ ์™ธ๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ์— ๋„˜๊ฒจ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ HWND๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ƒ์œ„ HWND).

  5. Win32+WinUI ์•ฑ์—์„œ WebView2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž„๋ฒ ๋””๋“œ IE ์ปจํŠธ๋กค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ณต์—ญ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ๋”ฐ๋ผ์žก๊ธฐ ์‹œ์ž‘:

WinUI๋Š” ๋‹จ์ง€ UWP ๊ฐœ๋ฐœ์ด์ง€๋งŒ ๋” ํ˜„๋Œ€์ ์ธ ์‚ฌ์–‘์ž…๋‹ˆ๊นŒ? WinUI์— ๋Œ€ํ•œ ๋Œ€ํ™”๋ฅผ ๋ณด๊ณ  UWP ๊ฐœ๋ฐœ, UWP ๊ฐœ๋ฐœ์˜ ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š”์ง€ 100% ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

WinUI๋Š” ํŠนํžˆ UI ๊ณ„์ธต์ด๋ฉฐ ์ผ์‹œ ์ค‘๋‹จ/์žฌ๊ฐœ์šฉ ์•ฑ ๋ชจ๋ธ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ๋“ฑ๊ณผ ๊ฐ™์€ UWP ์•ฑ ํ”Œ๋žซํผ์˜ ๋‹ค๋ฅธ ์ธก๋ฉด์„ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

UWP ์•ฑ์˜ ๊ฒฝ์šฐ ํŠนํžˆ Windows.UI.Xaml , Windows.UI.Composition ๋ฐ Windows.UI.Input ์ผ๋ถ€๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


WinUI ์•ฑ์— ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค(Win32 ํ‘œ์ค€)์™€ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค(UWP ํ‘œ์ค€) ๊ฐ„์— ๋‚ด์žฅ๋œ ์Šค์œ„์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@Felix-Dev ์šฐ๋ฆฌ๋Š” ์•„์ง win32 ์•ฑ์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ์ง€์›์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ํƒ์ƒ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ž์œ ๋กญ๊ฒŒ ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


WinUI 3.x๋Š” HostBackdrop๊ณผ ํ•จ๊ป˜ AcrylicBrush๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ? ํ˜„์žฌ ์•ŒํŒŒ์—์„œ ๊นจ์ง„ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์ง€๋งŒ ๋ฆด๋ฆฌ์Šค ์ „์— ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋กœ๋“œ๋งต์— ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. WinUI Desktop์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์Šคํฌํ†ฑ ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งˆ์นจ๋‚ด HostBackdrop๊ณผ ํ•จ๊ป˜ AcrylicBrush๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@riverar ๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ์€ WinUI 3.0 RTM ๊ณ„ํš์— ์—†์Šต๋‹ˆ๋‹ค. OS์™€ ๋ถ„๋ฆฌ๋œ UI ํ”Œ๋žซํผ์—์„œ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์žˆ์ง€๋งŒ 3.0 ์ดํ›„์— ๋‹ค์‹œ ๊ฒ€ํ† ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.


WebView2 ์ •๋ณด: ์ œ ์งˆ๋ฌธ์€ .. WebView2 SDK์˜ .NET ๋ฒ„์ „์ด Win8.1, 8 ๋ฐ 7์— ์ ์šฉ๋˜๋„๋ก ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?
.NET์˜ WebView2๋Š” WinUI3์„ ํ†ตํ•ด์„œ๋งŒ ์ง€์›๋œ๋‹ค๋Š” ์šฐ๋ ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@pnp0a03 WinUI Xaml ์ปจํŠธ๋กค์€ WinUI 3์—์„œ๋งŒ ์ง€์›๋˜์ง€๋งŒ win32 ์•ฑ์šฉ Windows 7, 8 ๋ฐ 8.1์šฉ ํ•ต์‹ฌ WebView 2 SDK์˜ ๊ฐœ๋ฐœ์ž ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

https://docs.microsoft.com/microsoft-edge/hosting/webview2


์—ฌ์ „ํžˆ Windows.UI.Xaml(Microsoft.UI.Xaml๊ณผ ๋ฐ˜๋Œ€)์—์„œ ํŒŒ์ƒ๋˜๋Š” Prism๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. WinUI์— ๋Œ€ํ•œ ํ™•์‹คํ•œ PnP ์ง€์นจ์ด ์•„์ง ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋„ˆ๋ฌด ์ด๋ฅธ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

@GraniteStateHacker ๋‚ด ์ƒ๊ฐ์—๋Š” ๋„ˆ๋ฌด ์ด๋ฅด๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. WinUI 3์€ ์•„์ง ๋งŽ์€ ์ƒํƒœ๊ณ„ ์ง€์›์„ ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ƒˆ๋กญ์ง€๋งŒ(์•ŒํŒŒ์—๋งŒ ์žˆ์Œ) @hassanuz ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜ธํ™˜์„ฑ/๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์˜ต์…˜์„ ์กฐ์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…


WinUI๋Š” ์Šคํ† ์–ด ์•ฑ ์ „์šฉ์ž…๋‹ˆ๊นŒ?

์•„๋‹ˆ์˜ค - ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Xaml Islands๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด win32 ์•ฑ(WPF, WinForms, MFC ๋“ฑ)์— ํฌํ•จ
  • MSIX ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œํ•˜๊ณ  ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฐฐํฌํ•˜์‹ญ์‹œ์˜ค.
  • ํŒจํ‚ค์ง•๋˜์ง€ ์•Š์€ ์•ฑ์„ ๋งŒ๋“ค๊ณ  xcopy ๋˜๋Š” ๋‹ค๋ฅธ ์ˆ˜๋‹จ์„ ํ†ตํ•ด ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค(WinUI 3์—์„œ๋Š” ์•„์ง ์ง€์›๋˜์ง€ ์•Š์ง€๋งŒ RTM์—์„œ๋Š” ๊ณ„ํš๋จ).

์ฒซ ๋ฒˆ์งธ Windows 10X ์žฅ์น˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ WinUI 3.0์ด ์‹คํ–‰๋  ๊ฐ€๋Šฅ์„ฑ์€ ์–ผ๋งˆ๋‚˜ ๋ฉ๋‹ˆ๊นŒ? ์ €๋Š” Windows ๊ฐœ๋ฐœ ์„ธ๊ณ„๋กœ ๋›ฐ์–ด๋“œ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ๋ฉฐ ์ด ์‹œ์ ์—์„œ ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์ด ๊ฐ€์žฅ ํƒ€๋‹นํ•œ์ง€ ๊ฒฐ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@dwalleck WinUI 3์—๋Š” ์ด๋ฏธ ์•ŒํŒŒ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋นŒ๋“œ ํšŒ์˜ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋” ๊ธฐ๋Šฅ์ ์ธ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋‘˜ ๋‹ค 2020๋…„ ํ›„๋ฐ˜์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. UWP Xaml ๋ฐ/๋˜๋Š” WinUI๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ 10X ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ข‹์€ ๊ฒฝ๋กœ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .


๊ธฐ์กด Win32 ์•ฑ์€ WM_PAINT์˜ ํ™”๋ฉด์— ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. XAML ์•ฑ์€ ์œ ์ง€ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ๊ฐœ์ฒด/์ปจํŠธ๋กค์„ ๋งŒ๋“ค๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์„ ํ™”๋ฉด์— ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ์ฐฝ์— ๊ทธ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ํ˜„๋Œ€์ ์ธ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” WM_PAINT๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๊นŒ? Win2D ๋˜๋Š” ๋‹ค๋ฅธ ์ฆ‰์‹œ ๋ชจ๋“œ API?

@jschroedl Xaml ์š”์†Œ ํŠธ๋ฆฌ ๋ฐ ๋ธŒ๋Ÿฌ์‹œ๋Š” ์œ ์ง€ ๋ชจ๋“œ์ด์ง€๋งŒ ์—ฌ๋Ÿฌ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๊ฐ€๋ฒผ์šด ๋ Œ๋”๋ง ๊ธฐ๋ณธ ์š”์†Œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ปดํฌ์ง€์…˜ ๋ ˆ์ด์–ด ๋น„์ฃผ์–ผ
  • ์ปดํฌ์ง€์…˜ ๋ ˆ์ด์–ด ๋งค์šฐ ๊ณ ์„ฑ๋Šฅ์œผ๋กœ ์œ ์ง€๋œ ํ˜•์ƒ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ชจ์–‘ - ๋˜ํ•œ Lottie ๋ชจ์–‘/์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋Š” WinUI AnimatedVisualPlayer ์ปจํŠธ๋กค๊ณผ ๊ฐ™์€ ์šฉ๋„๋กœ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • SwapChainPanel, SurfaceImageSource ๋˜๋Š” VirtualSurfaceImageSource๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Xaml๊ณผ DirectX ์ƒํ˜ธ
  • ์œ„์˜ DirectX ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ์ถ”์ƒํ™”ํ•˜๊ณ (Direct2D, DirectWrite ์‚ฌ์šฉ) .NET API๋ฅผ ์ œ๊ณตํ•˜๋Š” Win2D

์ ‘๊ทผ์„ฑ์€ Win32(COM API)์™€ WPF(์ž๋™ํ™” ํ”ผ์–ด)์—์„œ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. Win32 + WinUI ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ฉด ์ ‘๊ทผ์„ฑ ํŠธ๋ฆฌ๋ฅผ ๋” ์‰ฝ๊ฒŒ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ด์ „ COM API๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋‚ด ์‚ฌ์šฉ์ž ์ง€์ • ๊ทธ๋ฆฐ ์ฝ˜ํ…์ธ ๋ฅผ ์ ‘๊ทผ์„ฑ ํŠธ๋ฆฌ์˜ ์ ‘๊ทผ์„ฑ ์ปจํŠธ๋กค๊ณผ ์–ด๋–ป๊ฒŒ ํ˜ผํ•ฉํ•ฉ๋‹ˆ๊นŒ?

์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค! @marb2000 ์— ํŽ˜์ด์ง•ํ•˜์—ฌ ์ด๊ฒƒ์ด ํฌํ•จ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ตœ์‹  ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ WinUI Xaml ํŠธ๋ฆฌ๋Š” AutomationPeers๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ WinUI๊ฐ€ ์•„๋‹Œ win32 ์ฝ˜ํ…์ธ ๋กœ ํ™•์žฅํ• ์ง€ ์—ฌ๋ถ€๋Š” ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๋Š” ํ”„๋ฆฐํ„ฐ DC์— ๊ทธ๋ฆผ์„ ๊ทธ๋ ค์„œ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. Win32+WinUI๋กœ ์ƒˆ๋กœ์šด ์ธ์‡„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

WinUI ์ฝ˜ํ…์ธ ์˜ ์ฃผ์š” ์ธ์‡„ ๊ธฐ๋Šฅ์€ WinRT PrintDocument API์˜ WinUI ๋ฒ„์ „์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ HWND, CoreWindow ๋ฐ WinUI์— ๋Œ€ํ•ด ๋‹ค์Œ์— ์˜ค๋Š” ๋ชจ๋“  ๊ฒƒ ์‚ฌ์ด์˜ ๊ด€๊ณ„์™€ ๊ด€๋ จํ•˜์—ฌ ์•ฝ๊ฐ„ ๋‹นํ™ฉํ•ฉ๋‹ˆ๋‹ค. HWND๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด CreateWindow ํ˜ธ์ถœ์„ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋‚˜๋ฅผ ์™ธ๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ์— ๋„˜๊ฒจ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ HWND๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ:

WinUI๋Š” hwnds๋ฅผ ๋Œ€์ฒดํ•˜์ง€ ์•Š์ง€๋งŒ ๋ชฉํ‘œ๋Š” WPF ์ž‘๋™ ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•œ Xaml API๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์‚ฌ์šฉ๋ฒ•์„ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Xaml API๋Š” ์—ฌ์ „ํžˆ ๊ธฐ๋ณธ ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด๋กœ hwnds/CoreWindows๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ํ•„์š”ํ•  ๋•Œ hwnd์— ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” "backdoor"/"escape-hatch" API๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ์ฃผ ์•ˆ์— ์ œ์•ˆ ์ดˆ์•ˆ์ด ์žˆ์–ด์•ผ ์ด๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jebis ๋‹ต๋ณ€ ๊ฐ์‚ฌ
ํ˜„์žฌ WebView2 SDK Win32 "C++"(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ๋ฒ„์ „์ด ์ด ์‚ฌ์ดํŠธ์—์„œ ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Win7, 8 ๋ฐ 8.1์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
https://docs.microsoft.com/en-us/microsoft-edge/hosting/webview2
์ œ ์งˆ๋ฌธ์€ .NET ๋ฒ„์ „์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ .NET ๋ฒ„์ „์€ WinUI 3์—์„œ๋งŒ ์ง€์›๋˜์ง€๋งŒ, ์•„์‹œ๋‹ค์‹œํ”ผ Win7, 8, 8.1์—์„œ๋Š” WinUI 3์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(๋งž๋‚˜์š”?).
๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์งˆ๋ฌธ๊ธ€์„ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

์ œ ์งˆ๋ฌธ์€ .. WebView2 SDK์˜ .NET ๋ฒ„์ „์ด Win8.1, 8 ๋ฐ 7์— ์ ์šฉ๋˜๋„๋ก ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

@jebis ์˜์š•์ด ๋“ค๊ธด ํ–ˆ์ง€๋งŒ ์ œ ์งˆ๋ฌธ์— ๋‹ต

์—ฌ๊ธฐ์— ๊ฑด์„ค์ ์ธ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Microsoft๊ฐ€ C++/WinRT ๋„๊ตฌ์™€ ๊ด€๋ จํ•˜์—ฌ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์€ ์ผ๋ถ€ ๊ณต๊ฐœ ์ œ์•ˆ์„ ์ง€์ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šด์ด ์ข‹์œผ๋ฉด ISO๊ฐ€ C++23 ๋˜๋Š” C++26 ์‚ฌ์ด์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Visual Studio ํŒ€์ด ๊ฒฐ๊ตญ ๊ทธ ์œ„์— C++/CX๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋ฉด ์ง€๊ธˆ์œผ๋กœ๋ถ€ํ„ฐ ์•ฝ 6๋…„์ด ๋ฉ๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ C++ UI ๋„๊ตฌ๋ฅผ ์›ํ•œ๋‹ค๋ฉด WinUI๋Š” ํ™•์‹คํžˆ ํ”Œ๋žซํผ ์ด์‹์„ฑ์˜ ์ด์ ์ด ์ถ”๊ฐ€๋œ Qt ๋˜๋Š” C++ Builder๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ๋ณธ ํ›„์—๋„ ์—ฌ์ „ํžˆ XNA(DirectXTK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ C++๋กœ ๋‹ค์‹œ ์ž‘์„ฑ), WinRT 8.0, WinRT UAP 8.1, UWP W10, C++ Direct2D์˜ ํ‰ํ„ฐ๋ฅผ System ๋Œ€์‹  ์ฐฉ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ธฐ(Win2D๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€, ์ง€๊ธˆ์€ ์ •์ฒด ์ƒํƒœ), WinUI๋Š” ํ™•์‹คํžˆ ๋ณด๋ฅ˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ์ €๋Š” ๊ณ ๊ฐ์—๊ฒŒ .NET์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” WPF๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  C++๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” Qt๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์›น ๊ธฐ์ˆ ๋กœ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ PWA์— ์ง‘์ค‘ํ•˜๋ผ๊ณ  ์กฐ์–ธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

WinUI 3.0 ๋กœ๋“œ๋งต์€ ๋ฐ์Šคํฌํ†ฑ ์‹œ์žฅ์—์„œ UWP ํŒ๋งค๊ฐ€ ๊ณ„์† ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋˜ ๋‹ค๋ฅธ ์žฌ๋ถ€ํŒ…์ด ์ž„๋ฐ•ํ–ˆ๋‹ค๋Š” ํ™•์‹ ์„ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์˜๋ฏธ์—์„œ ๋‚ด๊ฐ€ ์ง€์ ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ Microsoft ๊ฒฝ์˜์ง„์ด Windows 8 ๋ฆด๋ฆฌ์Šค ์ดํ›„๋กœ ์šฐ๋ฆฌ๋ฅผ ์ˆ˜์—†์ด ์‹คํŒจ์‹œํ‚จ ํ›„ WinUI ์ฑ„ํƒ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์šฐ๋ฆฌ์—๊ฒŒ ํŒ๋งคํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@pjmlp ์ผ๋ฐ˜ C++/WinRT ํ”ผ๋“œ๋ฐฑ์€ ์•„๋งˆ๋„ cppwinrt ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ๊ฐ€์žฅ ์ž˜ ์ „๋‹ฌ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ISO ํ‘œ์ค€ ์—…๋ฐ์ดํŠธ์—๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€๋งŒ ์–ธ๊ธ‰ํ•˜์‹  ๊ธฐ๊ฐ„๋ณด๋‹ค ์งง์•˜์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜์˜ ์ง€์›์ด ์ตœ์šฐ์„  ๊ณผ์ œ์ด๋ฉฐ ์ง€๋‚œ ์ฃผ ํ”„๋ผํ•˜์—์„œ ์—ด๋ฆฐ C++ ํšŒ์˜์—์„œ ์ด์— ๋Œ€ํ•ด ๋…ผ์˜ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

DirectXTK๋Š” ์•„์ง ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ ์ •๊ธฐ์ ์ธ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Xaml ํ”„๋ ˆ์ž„์›Œํฌ API์˜ ๊ด€์ ์—์„œ WinUI๋Š” ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๊ธธ์ด๋ฉฐ Windows 8๋กœ ๋Œ์•„๊ฐ€๋Š” ์ƒ๋‹นํžˆ ๊นจ์ง€์ง€ ์•Š์€ ํ˜ธํ™˜์„ฑ ๊ณ„๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋†’์€ ์ˆ˜์ค€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ™‚ ๋ช‡ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์…ธ ํ†ตํ•ฉ์œผ๋กœ ์ธํ•ด, VS ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋“ฑ) ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Windows 8 Xaml์„ ํ˜„์žฌ Windows 10 ์•ฑ์œผ๋กœ ์ด์‹ํ•˜๊ณ  ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜๊ณ  ์ตœ์‹  ๋‚ด๋ถ€์ž ๋น„ํ–‰์—์„œ ์‹คํ–‰ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

WinUI์˜ ๋†’์€ ์ˆ˜์ค€์˜ ์ด์  ์ค‘ ์ผ๋ถ€์—๋Š” UWP WinRT API์™€ win32 API ๊ฐ„์˜ ์žฅ๋ฒฝ ์ œ๊ฑฐ, .NET 5 ์ง€์›, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ฆ‰๊ฐ์ ์ธ ํ•˜์œ„ ์ˆ˜์ค€ ์ง€์› ํ™œ์„ฑํ™”, ๋งŽ์€ ์กฐ๊ฑด๋ถ€ OS ๋ฒ„์ „ ํ™•์ธ ์ˆ˜ํ–‰์˜ ํ•„์š”์„ฑ ์ œ๊ฑฐ, OSS ๊ธฐ์—ฌ ํ™œ์„ฑํ™” ๋ฐ Xaml ์„ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด win32 ์•ฑ์— ๋Œ€ํ•œ ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

@pnp0a03 .NET ์š”์†Œ๋ฅผ ์‹œ์žฅ์— ๋‚ด๋†“๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ๋‚ ์งœ๋ฅผ ๋ง์”€๋“œ๋ฆด ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ์ˆ˜์š”๋ฅผ ์ธ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์กฐ์œจ ์ค‘์ž…๋‹ˆ๋‹ค.

@jschroedl ์šฐ๋ฆฌ๋Š” ์˜๊ณต ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉฐ ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๋ Œ๋”๋ง ๊ณ„ํš์„ ์„ธ์šฐ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@jesbis ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด cppwinrt์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋ฌด ๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋กœ๋“œ๋งต์ด ์ˆ˜์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”ผํ•  ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์•„๋‹Œ ํ•œ C++/WinRT๋ฅผ ์ฑ„ํƒํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. ISO.

DirectXTK์™€ ๊ด€๋ จํ•˜์—ฌ ์ €๋Š” Microsoft๊ฐ€ XNA๋ฅผ ์‚ญ์ œํ•˜๊ณ  DirectXTK๋ฅผ "๋Œ€์•ˆ"์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ C# ์ฝ”๋“œ๋ฅผ C++๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋„๋ก ๊ฐ•์š”ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ์˜ˆ๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๋ง™๊ฒŒ๋„ ์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” MonoGame์„ ๊ณ ์•ˆํ•˜๊ณ  Microsoft๊ฐ€ XNA๋กœ ์ถ”๊ตฌํ•˜๊ธฐ๋ฅผ ๊ฑฐ๋ถ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์ค‘ ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์˜ ์ผ๋ถ€ ๋Œ“๊ธ€์—์„œ C++๊ฐ€ ์–ผ๋งˆ๋‚˜ ํ›Œ๋ฅญํ•˜๊ณ  ์žฌ๋ฏธ์žˆ๋Š”์ง€, WinDev(Longhorn์ด ์ธ์ˆ˜ํ•œ ์ดํ›„ ํ•œ ๋ฒˆ ๋”)๊ฐ€ C++๋ฅผ ๋จผ์ € ํŒ๋งคํ•˜๊ณ  .NET์„ ๋‚˜์ค‘์— ํŒ๋งคํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ C++ ๋„๊ตฌ๋ฅผ ์›ํ•˜๋ฉด Visual C++๊ฐ€ ์•„๋‹ˆ๋ผ Qt ๋ฐ C++ Builder๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

ISO์—์„œ ์ผ๋ถ€ ๋ฉ”ํƒ€ํด๋ž˜์Šค์™€ ๋ฆฌํ”Œ๋ ‰์…˜ ์•„์ด๋””์–ด๊ฐ€ ๋ฐ›์•„๋“ค์—ฌ์ง€๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๋Œ€์‹  ํŒ€์ด ๊ฒฝ์Ÿ์—์„œ ์˜ค๋Š˜๋‚  ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๊ฒฝ์˜์ง„์—๊ฒŒ ์ •๋ง๋กœ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

.NET Framework์—์„œ .NET Core๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” API ๋ฐ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ WPF/UWP์—์„œ WinUI๋กœ์˜ ๋ชจ๋“  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฌธ์ œ์™€ "๊ทธ๋ƒฅ ์“ฐ๊ธฐ C++/WinRT์—์„œ๋Š” ๋ฉ‹์ง€๊ณ  ๋ช‡ ๋…„ ์•ˆ์— ๋” ์ข‹์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค."

Microsoft ๊ฒฝ์˜์ง„์€ ์ด ์žฌ์ž‘์„ฑ์„ ๋ถˆํƒ€๋ฒ„๋ฆฐ .NET ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํŒ๋งคํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊นŠ์ด ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด๋ฏธ ์ œ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋Š” ์Šคํƒ์—์„œ ๋ฉ€์–ด์ง€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@pjmlp DirectX์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด ์ €๋Š” ์ž์œ  ์‹œ๊ฐ„ ์— WinUI ๋ณด๊ธฐ์—์„œ D3D12/11 ๋“ฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํœด๋Œ€์šฉ ๋ฐ ๋ถˆ๊ฐ€์ง€๋ก ์  C# ๊ทธ๋ž˜ํ”ฝ, ์˜ค๋””์˜ค ๋ฐ ์ž…๋ ฅ ํ”„๋ ˆ์ž„์›Œํฌ ์ ๊ทน์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

XNA์™€ ๊ฐ™์€ ๋ Œ๋”๋ง์— ๋Œ€ํ•œ ํ›จ์”ฌ ๋” ํ˜„๋Œ€์ ์ด๊ณ  ์„ฑ๋Šฅ ์ค‘์‹ฌ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ €๋ฅผ ํฌํ•จํ•ด ๋งŽ์€ ๋ถ„๋“ค์ด ์›ํ•˜์…”์„œ ๋งŒ๋“ค์–ด ๋ดค์Šต๋‹ˆ๋‹ค. D3D12 ๋ฐ Vulkan์ด ์ง€์›๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค. HLSL์ด๋‚˜ GLSL ๋“ฑ ๋Œ€์‹  C#์œผ๋กœ ์…ฐ์ด๋”๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜๋ฉด ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋Œ€๊ทœ๋ชจ SDK๋‚˜ ๊ฒŒ์ž„ ์—”์ง„์ด ์•„๋‹Œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ํœด๋Œ€๊ฐ€ ๊ฐ„ํŽธํ•˜๊ณ  ๊ฐ€๋ฒผ์šฐ๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. WinUI, WPF ๋˜๋Š” ์ผ๋ถ€ ๊ธฐ๋ณธ C# Win32 ๋˜๋Š” WinRT ์•ฑ์—์„œ 3D ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

https://github.com/reignstudios/Orbital-Framework

@zezba9000 ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ๋งŽ์€ ์ธ์ƒ์ ์ธ ์ผ์„ ํ•˜์…จ์Šต๋‹ˆ๋‹ค.

DirectX์— ๋Œ€ํ•œ ๊ด€๋ฆฌ ์ง€์›๊ณผ ๊ด€๋ จํ•˜์—ฌ ์šฐ๋ฆฌ๋Š” Managed DirectX ๋ฐ XNA๋ฅผ ํƒฑํ‚นํ•œ ํ›„ DirectX ๊ฐœ๋ฐœ ๋…ธ๋ ฅ์„ ์ธ์ˆ˜ํ•œ C++ MS ๊ตฐ์ค‘๊ณผ ๊ฐ™์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋…ธ๋ ฅ์—๋งŒ ์˜์กดํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

WinDev๊ฐ€ ์ถ”์ง„ํ•˜๊ธฐ๋ฅผ ์ข‹์•„ํ•˜๋Š” "C++ ๋˜๋Š” ํ•˜์ด ๋กœ๋“œ"์ผ ํ•„์š”๋Š” ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๋งˆ์ผ€ํŒ…์œผ๋กœ์„œ ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ ์ค‘ ์ ์–ด๋„ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋Š” ๋‚ด ์˜นํ˜ธ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๊ทธ๋“ค์€ OpenGL ES/Metal with Swift ๋˜๋Š” OpenGL ES/Vulkan with Java/Kotlin์—์„œ ๊ตํ›ˆ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ 3D ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์ด Windows๋ฅผ ์ด๊ธฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค(์Šฌํ”„๊ฒŒ๋„ WP๋Š” ํ›Œ๋ฅญํ•œ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค).

์—ฌ๋Ÿฌ๋ถ„์˜ ๋…ธ๋ ฅ์— ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค. C#์œผ๋กœ ์…ฐ์ด๋”๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ๋งค๋ ฅ์ ์œผ๋กœ ๋ณด์ด์ง€๋งŒ CS2X๋ฅผ ์•Œ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

@pjmlp Ya CS2X ๋ถ€๋ถ„์€ C#์—์„œ ๋ถˆ๊ฐ€์ง€๋ก ์  GPU ์…ฐ์ด๋”๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค(์ด๋ก ์ ์œผ๋กœ ์…ฐ์ด๋”๋ฅผ ๋‹จ์œ„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค). C# ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ์˜ ๊ฒฝ์šฐ CS2X๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด CS2X๊ฐ€ C# ํ•˜์œ„ ์ง‘ํ•ฉ์„ C89 ๋Ÿฐํƒ€์ž„์œผ๋กœ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ .NET ๋Ÿฐํƒ€์ž„์ด ์ง€์›ํ•˜๋Š” ๊ฒƒ ์ด์™ธ์˜ ํ”Œ๋žซํผ์„ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CS2X => C89 ๋Ÿฐํƒ€์ž„์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฐจ๋ก€๋กœ ์ด๋Ÿฌํ•œ ํ”Œ๋žซํผ๋„ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฐ ํ”„๋กœ์ ํŠธ์ง€๋งŒ ๋‚ด๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

WinUI 2.4์—์„œ HwndHost๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์‹œํ—˜ํŒ ๋ฒ„์ „์—์„œ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ณ„ํš๋œ ์ฐฝ(XAML ์ฐฝ) ๋ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(XAML ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ)์ด ํฌํ•จ๋œ WinUI3์—์„œ ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋ฉฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์—์„œ ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๋•Œ์ž…๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ WinUI3์—์„œ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด ๊ธฐ๋Šฅ์ด WinUI 2 ์ƒˆ ๋ฆด๋ฆฌ์Šค์— ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ WinUI 2๊ฐ€ Uwp ์•ฑ์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” HwndHost๋ฅผ ํ†ตํ•ด ๋งŽ์€ C++ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” WPF ์•ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์„ WinUI๋กœ ์ด๋™ํ•  ๊ณ„ํš์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์€ WinUI ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ WinUI 2๋„ ๋ณด๊ธฐ์— ์ข‹๊ณ  XAML ๋ถ€๋ถ„์€ ์ „์†กํ•˜๊ธฐ ๋งค์šฐ ์‰ฝ๊ณ  Composition Api๋Š” ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ Uwp Community Toolkit์€ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ HwndHost ๋ฐ C++ Win32 ์ฝ”๋“œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ธ์ œ WinUI3๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋˜ํ•œ x:Bind๋ฅผ ๋งŽ์ด ์ข‹์•„ํ•˜์ง€๋งŒ WinUI3 ๋ฆด๋ฆฌ์Šค์˜ ๊ฒฝ์šฐ์—๋„ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.

@zezba9000

DirectX์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด, ์ €๋Š” ์—ฌ๊ฐ€ ์‹œ๊ฐ„ ์— WinUI ๋ณด๊ธฐ์—์„œ.... ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒƒ๋“ค ์ค‘์—์„œ D3D12/11 ๋“ฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํœด๋Œ€์šฉ ๋ฐ ๋ถˆ๊ฐ€์ง€๋ก ์  C# ๊ทธ๋ž˜ํ”ฝ, ์˜ค๋””์˜ค ๋ฐ ์ž…๋ ฅ ํ”„๋ ˆ์ž„์›Œํฌ ์ ๊ทน์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค! ๋ฏธ์นœ ์ž‘์—…๋Ÿ‰์ž…๋‹ˆ๋‹ค!

WinUI 2.4์—์„œ HwndHost๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์‹œํ—˜ํŒ ๋ฒ„์ „์—์„œ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ณ„ํš๋œ ์ฐฝ(XAML ์ฐฝ) ๋ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(XAML ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ)์ด ํฌํ•จ๋œ WinUI3์—์„œ ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋ฉฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์—์„œ ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๋•Œ์ž…๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ WinUI3์—์„œ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด ๊ธฐ๋Šฅ์ด WinUI 2 ์ƒˆ ๋ฆด๋ฆฌ์Šค์— ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ WinUI 2๊ฐ€ Uwp ์•ฑ์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” HwndHost๋ฅผ ํ†ตํ•ด ๋งŽ์€ C++ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” WPF ์•ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์„ WinUI๋กœ ์ด๋™ํ•  ๊ณ„ํš์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์€ WinUI ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

WinUI XAML ๋‚ด์—์„œ user32/comctl ๋˜๋Š” WPF UI๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์—ด๋ ค ์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/microsoft/microsoft-ui-xaml/issues/1833

๋งŒ๋“ค์–ด์ง€๋ฉด 3.0 ์ดํ›„์—๋Š” ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ #1833์— ๊ฒŒ์‹œํ•œ๋‹ค
https://github.com/microsoft/microsoft-ui-xaml/issues/1833 ํ•˜์ง€๋งŒ ๋ณต์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์€ ์—ฌ๊ธฐ์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค: ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ C++ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” WPF ์•ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
HwndHost ์ปจํŠธ๋กค. Wpf ์•ฑ์„ WinUI๋กœ ์˜ฎ๊ธฐ๊ณ  Xaml์„ ์˜ฎ๊ธธ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.
๋ฌธ์ œ ์—†์ด ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ HwndHost๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
WinUI3์—์„œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
HwndHost๋ฅผ ํ†ตํ•œ DirectShow์™€ ํ˜„์žฌ WinUI 2์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ฐ€๋Šฅํ•œ. WinUI3์—์„œ HwndHost๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ˜„์‹ค์ ์ธ ๋‚ ์งœ๋Š” ์–ธ์ œ์ž…๋‹ˆ๊นŒ? ๋„
์ด ์ƒˆ๋กœ์šด Xaml ์ฐฝ ๋ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์ตœ๊ทผ 2์›”์— ๋…ผ์˜๋œ ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
WinUI ์ปค๋ฎค๋‹ˆํ‹ฐ ํ˜ธ์ถœ, ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์—˜๋”, 2์›” 23์ผ de 2020 a la(s) 13:42, Max Strini(
[email protected]) ์„ค๋ช…:

WinUI 2.4์—์„œ HwndHost๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์‹œํ—˜ํŒ ๋ฒ„์ „์—์„œ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ณ„ํš์ด ์žˆ๋Š” WinUI3์—์„œ ๊ฐ€๋Šฅํ• ๊นŒ์š”?
์œˆ๋„์šฐ(XAML ์ฐฝ) ๋ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(XAML ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ) ๋ฐ ์˜ˆ์ธ ๊ฒฝ์šฐ
์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ณผ ์ฒซ ๋ฒˆ์งธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ WinUI3์—์„œ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด ๊ธฐ๋Šฅ์€
WinUI 2 ์ƒˆ ๋ฆด๋ฆฌ์Šค์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์œผ๋ฉด WinUI 2๊ฐ€ Uwp ์•ฑ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ C++ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” WPF ์•ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
HwndHost, ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฒƒ์„ WinUI๋กœ ์˜ฎ๊ธธ ๊ณ„ํš์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์€
WinUI ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๋ถ€์— user32/comctl ๋˜๋Š” WPF UI๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์—ด๋ ค ์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
WinUI XAML: #1833
https://github.com/microsoft/microsoft-ui-xaml/issues/1833

๋งŒ๋“ค์–ด์ง€๋ฉด 3.0 ์ดํ›„์—๋Š” ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/microsoft/microsoft-ui-xaml/issues/1972?email_source=notifications&email_token=AG66BVVOQ6W3Z6LBVYZVJ63REJVLPA5CNFSM4KUFQ63REJVLPA5CNFSM4KUFQ6MKYY3PNVWWK3TUL52HS4DFVEXG43VM
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AG66BVRWNTNC7FUIBBP5C6DREJVLPANCNFSM4KUFQ6MA
.

--
๋งˆ๋ฆฌ์˜ค ๋ž€์น˜์น˜
์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด
๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๊ณต์ธ ์ „๋ฌธ๊ฐ€

์ง€๋‚œ ์ฃผ์— ์ •๋ง ์ข‹์€ WinUI ์ปค๋ฎค๋‹ˆํ‹ฐ ํ˜ธ์ถœ์ด์—ˆ์Šต๋‹ˆ๋‹ค! ๋‚ด์šฉ์€ ๋งŽ์€ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ํฅ๋ฏธ๋กญ๊ณ  ์ƒ์„ธํ•˜๊ณ /๊ธฐ์ˆ ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ๋งต/๊ฐœ๋ฐœ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋Š” WinUI ์†Œ๋น„์ž์™€ ์ž์ฒด ๊ฐœ๋ฐœ ๋กœ๋“œ๋งต์—๊ฒŒ๋„ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ „ํ™”๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

WinUI 3์˜ HwndHost ์ •๋ณด.
HwndHost๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด WPF ๋‚ด๋ถ€์—์„œ Win32 ์ฝ˜ํ…์ธ ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ WinUI 3.0 ๋ฐ์Šคํฌํ†ฑ ๋˜๋Š” WinUI ์•„์ผ๋žœ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ WinUI 3.0์—๋Š” ์ด๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค. @mariorancic01์—์„œ ์„ค๋ช…ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด DirectShow ๋Œ€์‹  UWP MediaPlayer API๋ฅผ ํ‰๊ฐ€ํ–ˆ์Šต๋‹ˆ๊นŒ?

Uwp ์นด๋ฉ”๋ผ๊ฐ€ ๋” ์ข‹์•„ ๋ณด์ด์ง€๋งŒ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์นด๋ฉ”๋ผ๋ฅผ DirectShow์™€ ํ•จ๊ป˜ ๊ฐ€์ƒ ์นด๋ฉ”๋ผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋น„๋””์˜ค, ์‚ฌ์ง„ ๋ฐ PjSip์„ ์‚ฌ์šฉํ•˜์—ฌ ์นด๋ฉ”๋ผ ์ŠคํŠธ๋ฆผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฐ™์€ ์‹œ๊ฐ„์— DirectShow๋กœ ํ•˜๊ธฐ ์ „์— ๋ง์ด์ฃ . ์ด Uwp๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
PjSip์ด ์žˆ๋Š” MediaPlayer.

El miรฉ., 2์›” 26์ผ de 2020 a la(s) 23:47, Miguel Ramos(
[email protected]) ์„ค๋ช…:

WinUI 3์˜ HwndHost ์ •๋ณด.
HwndHost๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด WPF ๋‚ด๋ถ€์—์„œ Win32 ์ฝ˜ํ…์ธ ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๊ฑฐ๊ธฐ
WinUI 3.0 Desktop์„ ํฌํ•จํ•˜์—ฌ WinUI 3.0์—์„œ๋Š” ์ด๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.
WinUI ์ œ๋„. ์‹œ๋‚˜๋ฆฌ์˜ค ์ •๋ณด @mariorancic01
https://github.com/mariorancic01 ์„ค๋ช…, UWP๋ฅผ ํ‰๊ฐ€ํ–ˆ์Šต๋‹ˆ๊นŒ?
DirectShow ๋Œ€์‹  MediaPlayer API?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/microsoft/microsoft-ui-xaml/issues/1972?email_source=notifications&email_token=AG66BVR4ABZ7KA3S2RQVHELRE3WOJA5CNFSM4KUFQ6MKYY3PNVWWK3TUL52HS4DFVREXG43VMXVBW
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AG66BVSBFMKZMD3TD5RGDKTRE3WOJANCNFSM4KUFQ6MA
.

--
๋งˆ๋ฆฌ์˜ค ๋ž€์น˜์น˜
์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด
๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๊ณต์ธ ์ „๋ฌธ๊ฐ€

๋น„์ฆˆ๋‹ˆ์Šค์šฉ Windows Store์— ๋Œ€ํ•ด ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ LOB ์•ฑ์— ๋งค์šฐ ์œ ์šฉํ•˜๊ณ  ๋งค์šฐ ์œ ์šฉํ•ด ๋ณด์ด์ง€๋งŒ ํฌ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ์ด๊ฒƒ ์— ๋Œ€ํ•œ ๊ณ„ํš ์— ๋Œ€ํ•ด ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

@marionrancic01 ์ด์ œ MSIX ํŒจํ‚ค์ง•์„ ํ†ตํ•ด UWP ์•ฑ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Šฌํ”„๊ฒŒ๋„ @mariorancic01 ์ฒ˜๋Ÿผ ๋น„์ฆˆ๋‹ˆ์Šค์šฉ Windows ์Šคํ† ์–ด๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜ž

@kmgallahan ๋งํ–ˆ๋“ฏ์ด @leoniDEV ๋‚œ ๋‹น์‹ ์ด ๋‹จ์ˆœํžˆ MSIX๋กœ ๊ฒŒ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๋•Œ ๋น„์ฆˆ๋‹ˆ์Šค, ์šฉ Windows ์Šคํ† ์–ด๋ฅผ ํ•„์š”๋กœํ•˜๋Š” ์ด์œ  ์†”์งํžˆ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค

@kmgallahan @jtorjo ๊ทธ๋“ค์ด ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์‚ฌ์„ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์นดํƒˆ๋กœ๊ทธ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. MSIX๋Š” ๋‚ด๊ฐ€ ๋ฏฟ๋Š” ๊ฒƒ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ํšŒ์‚ฌ์—์„œ ์ œ๊ณตํ•˜๋Š” MSIX๋ฅผ ๋‚˜์—ดํ•˜๋Š” ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌํ•˜์ง€ ์•Š๋Š” ํ•œ?
๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ์ด์ „ MSI ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์•ฑ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Windows ์Šคํ† ์–ด์— ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์€ ์‰ฌ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ํ›จ์”ฌ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € MS์˜ ์ธ์ฆ์„œ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ธ์ฆ์„œ๋Š” ๊ฒŒ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ธ์ฆ์„œ์ž…๋‹ˆ๋‹ค(์ง€๊ธˆ ์ •ํ™•ํ•œ ๋‹จ๊ณ„๋Š” ๊ธฐ์–ต๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฐ ๋‹ค์Œ ์•ฑ์ด ์Šคํ† ์–ด ์š”๊ตฌ ์‚ฌํ•ญ์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜๋ฝํ•˜๋Š” ๋ฐ ๋ฉฐ์น ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ(๋˜๋Š” ๊ฑฐ๋ถ€๋  ์ˆ˜ ์žˆ์Œ) ์‚ฌ๋žŒ๋“ค์ด ์•ฑ์„ ์ฐพ๋Š” ๋ฐ ์Šคํ† ์–ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜์กดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ง์ ‘ ๋ฐฐํฌํ•˜๋ฉด ์„ค์ •ํ•˜๊ธฐ๊ฐ€ ์•ฝ๊ฐ„ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์ง€๋งŒ(์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค) ์ผ๋‹จ ์™„๋ฃŒ๋˜๋ฉด ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„ค, ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์•ฑ์„ ์„ธ์ƒ์— ๋ณด์—ฌ์ค„ ์ฑ…์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์ฆˆ๋‹ˆ์Šค์šฉ ์Šคํ† ์–ด๋ฅผ ํฌํ•จํ•˜์—ฌ Microsoft Store์— ์—ฌ๋Ÿฌ ์•ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์œผ๋กœ์„œ ์ €๋Š” ์ง€๋‚œ ๋ช‡ ๊ฐœ์›” ๋™์•ˆ Microsoft Store์— ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ข‹์•„์กŒ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๊ธฐ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์ธ์ฆ์€ ๋•Œ๋•Œ๋กœ ๋ช‡ ์‹œ๊ฐ„ ๋‚ด์— ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋งค์žฅ ๊ฐ€์ด๋“œ๋ผ์ธ๋„ ์ค€์ˆ˜ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด์— ๋…๋ฆฝ ์‹คํ–‰ํ˜• msix๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€์— ์„œ๋ช…ํ•˜๋Š” ์Šคํ† ์–ด์™€ ๋‹ฌ๋ฆฌ ์Šคํ† ์–ด ์™ธ๋ถ€์— ์•ฑ์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ ์ง์ ‘ ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@jtorjo ์ธ์ฆ์„œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์Šคํ† ์–ด์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ๊ฐœ๋ฐœ์ž ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ โ€‹โ€‹๊ฐ€๋” ๋‹ค์šด๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ, ์œ„์˜ ์š”์ ์€ ๋น„์ฆˆ๋‹ˆ์Šค ์•ฑ์šฉ ์Šคํ† ์–ด๊ฐ€ ์žˆ์œผ๋ฉด ๊ฝค ํŽธ๋ฆฌํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋น„์ฆˆ๋‹ˆ์Šค์šฉ ์Šคํ† ์–ด๋ฅผ ํฌํ•จํ•˜์—ฌ Microsoft Store์— ์—ฌ๋Ÿฌ ์•ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์œผ๋กœ์„œ ์ €๋Š” ์ง€๋‚œ ๋ช‡ ๊ฐœ์›” ๋™์•ˆ Microsoft Store์— ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ข‹์•„์กŒ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๊ธฐ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์ธ์ฆ์€ ๋•Œ๋•Œ๋กœ ๋ช‡ ์‹œ๊ฐ„ ๋‚ด์— ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋งค์žฅ ๊ฐ€์ด๋“œ๋ผ์ธ๋„ ์ค€์ˆ˜ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

@yaichenbaum ํ™•์‹คํžˆ ์•Œ๊ณ  ์žˆ์–ด์„œ ์ข‹์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ถœํŒํ•  ๋•Œ(2๋…„ ์ „์ฏค)์—๋Š” ํ›จ์”ฌ ๋” ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์ง์ ‘ ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ธ์ฆ์„œ๋ฅผ ๊ตฌ์ž…ํ•˜๊ณ  "๊ฒŒ์‹œ" ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ์„œ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ๋ฒˆ ์„ค์ •ํ•˜๋ฉด ์žŠ์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@riverar ๋‚ด๊ฐ€ ์ถœํŒํ•  ๋•Œ(2๋…„ ์ „์ฏค), ์ด๋ฆ„์„ ์˜ˆ์•ฝํ•ด์•ผ ํ•˜๊ณ , ๊ทธ๋Ÿฐ ๋‹ค์Œ MS๊ฐ€ ์•ฑ์— ์„œ๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” ์ธ์ฆ์„œ๋กœ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. > MS๊ฐ€ ๊ท€ํ•˜๋ฅผ ์œ„ํ•ด ๋ฐœํ–‰ํ•  ๊ฒƒ).

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