๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ Development Study/๐Ÿ’ป Win32API

UIManager, UIBase

by eazuooz 2022. 11. 9.

์˜ˆ์ œ :)

https://github.com/eazuooz/WindowAPI/commit/332b2d05fbaec11e5624acf131c513e66590b349

 

UI Bases · eazuooz/WindowAPI@332b2d0

Show file tree Showing 13 changed files with 240 additions and 40 deletions.

github.com

 

๊ฒŒ์ž„ UI ( user interface )

๊ฒŒ์ž„๊ณผ ์œ ์ € ์‚ฌ์ด์˜ ์˜์‚ฌ์†Œํ†ต์„ ์œ„ํ•ด์„œ ๋ฌผ๋ฆฌ์  ๊ฐ€์ƒ์  ๋งค๊ฐœ์ฒด๋กœ ๊ฐ€์‹œ์ ์œผ๋กœ ๋ณด์ด๋Š” ํ™”๋ฉด ( ๋ฒ„ํŠผ, ์Šคํฌ๋ฃฐ )๊ณผ ํ„ฐ์น˜, ๋“œ๋ž˜๊ทธ ์™€ ๊ฐ™์€ ์กฐ์ž‘ ๋ฐฉ๋ฒ•์„ ์ด์•ผ๊ธฐ ํ•œ๋‹ค.

 

1. ํ’€ ํ™”๋ฉด 

: ํ•˜๋‚˜์˜ ์žฅ๋ฉด์ด ์Šคํฌ๋ฆฐ์— ๊ฝ‰ ์ฑ„์›Œ์ง€๋Š” ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค.

[ ๋ธŒ๋กค์Šคํƒ€์ฆˆ ํ’€ ํ™”๋ฉด ]

2. ํŒ์—… ํ™”๋ฉด ( ํŒ์—… : ๊ฐ‘์ž๊ธฐ ํˆญ ํŠ€์–ด ๋‚˜์˜ค๋Š” ์ด๋ผ๋Š” ๋œป์„ ๊ฐ€์ง )

: ํ•˜๋‚˜์˜ ์žฅ๋ฉด์ด ๊ธฐ์กด ํ™”๋ฉด ์œ„์— ํŒ์—…์œผ๋กœ ๋œจ๋Š” ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค.

[ ๋ธŒ๋กค์Šคํƒ€์ฆˆ ํŒ์—… ํ™”๋ฉด ]

โ–ถ ๊ฒŒ์ž„์—์„œ๋Š” ํ™”๋ฉด ๋‹จ์œ„๋กœ UI๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ปจํŠธ๋กค ํ•จ์œผ๋กœ์จ ์œ ์ €์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ์ผ์–ด๋‚œ๋‹ค.

: ํƒ€์ดํ‹€ ํ™”๋ฉด์—์„œ ๊ฒŒ์ž„ ์Šคํƒ€ํŠธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๊ฒŒ์ž„์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ, ๋กœ๋น„ ํ™”๋ฉด์—์„œ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ ๋“ฑ ๊ฒŒ์ž„์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ชจ๋‘ ํ™”๋ฉด์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ ํ™”๋ฉด์œผ๋กœ ๋๋‚˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์–ด๋–ป๊ฒŒ ๊ฒŒ์ž„์—์„œ๋Š” ์ด๋Ÿฐ ํ™”๋ฉด ๋‹จ์œ„๋ฅผ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š”๊ฐ€?

: Android์—์„œ Activity๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์‰ฝ๊ฒŒ UI๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ• ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

: Android์—์„œ๋Š” Activity ( = ํ•˜๋‚˜์˜ ํ™”๋ฉด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ) ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ์— Stack ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌํ•œ๋‹ค.

 

โ— Stack ์ด๋ž€?

: Last-In-First-Out ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

: ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด Activity 1์ด ์žˆ๋Š” ์ƒํƒœ์—์„œ Activity 2๊ฐ€ ๋“ค์–ด์˜ค๋ฉด Activity 1 ์œ„์— ์Œ“์ด๊ณ , Activity 3์ด ๋“ค์–ด์˜ค๋ฉด Acivitiy 2 ์œ„์— ์Œ“์ด๋Š” ํ˜•ํƒœ์—์„œ, Back ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” Activity3 ์ด ์—†์–ด์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

โ— ๊ฒŒ์ž„ UI์— Stack ๊ตฌ์กฐ๋ฅผ ์ ์šฉ ํ•œ๋‹ค๋ฉด ์–ด๋–ค ๋ชจ์Šต์ด ๋˜๋Š”๊ฐ€. 

: ์˜ˆ๋ฅผ ๋“ค์–ด ํ‚น์˜คํŒŒ ์ต์ŠคํŠธ๋ฆผ ๋งค์น˜์˜ ํ”Œ๋กœ์šฐ๋ฅผ ๋ณธ๋‹ค๋ฉด

1. ๋กœ๋น„ ํ™”๋ฉด ( ํ’€ ํ™”๋ฉด )

2. ๋กœ๋น„์—์„œ ์Šคํ…Œ์ด์ง€ ๋ฒ„ํŠผ ํด๋ฆญ -> ์Šคํ…Œ์ด์ง€ ํ™”๋ฉด ( ํ’€ ํ™”๋ฉด )

3. ์Šคํ…Œ์ด์ง€ ํ™”๋ฉด์—์„œ ์Šคํ…Œ์ด์ง€ ์„ ํƒ -> ์Šคํ…Œ์ด์ง€ ์ •๋ณด ํ™”๋ฉด ( ํŒ์—… ํ™”๋ฉด )

4. ์Šคํ…Œ์ด์ง€ ์ •๋ณด ํ™”๋ฉด์—์„œ ์ˆœ์œ„ ๋ฒ„ํŠผ ์„ ํƒ -> ์ˆœ์œ„ ํ™”๋ฉด ( ํŒ์—… ํ™”๋ฉด )

5. ์ˆœ์œ„ ํ™”๋ฉด์„ ๋‹ซ์€ ๊ฒฝ์šฐ ( 3๋ฒˆ ํ™”๋ฉด์œผ๋กœ ์ด๋™ )

6. ์Šคํ…Œ์ด์ง€ ์ •๋ณด ํ™”๋ฉด์„ ๋‹ซ์€ ๊ฒฝ์šฐ ( 2๋ฒˆ ํ™”๋ฉด์œผ๋กœ ์ด๋™ )

7. ์Šคํ…Œ์ด์ง€ ํ™”๋ฉด์„ ๋‹ซ์€ ๊ฒฝ์šฐ ( 1๋ฒˆ ํ™”๋ฉด์œผ๋กœ ์ด๋™ )

: ์œ„์˜ ํ”Œ๋กœ์šฐ๋ฅผ ๋„์‹ํ™” ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

: ์œ ์ €์˜ ์ƒํ˜ธ์ž‘์šฉ์— ์˜ํ•ด ๋ณ€ํ™”๋˜๋Š” ํ™”๋ฉด์ด ์•ˆ๋“œ๋กœ์ด๋“œ์˜ Activity ๊ด€๋ฆฌ ( Stack )์™€ ๋™์ผํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

โ— ๋ชจ๋“  ํ™”๋ฉด์„ Stack์œผ๋กœ๋งŒ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด UI๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ.

โ–ถ Stack๋งŒ์œผ๋กœ๋Š” ๊ฒŒ์ž„์˜ ๋กœ์ง์— ๋งž๋Š” ํ™”๋ฉด ๊ตฌ์„ฑ์„ ํ•  ์ˆ˜ ์—†๋‹ค. 

โ–ถ ์œ„์—์„œ ์ •์˜ํ•œ ํ’€ ํ™”๋ฉด ๋˜๋Š” ํŒ์—… ํ™”๋ฉด์— ๋”ฐ๋ผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์— ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

: ํ’€ ํ™”๋ฉด์ด 2๊ฐœ ์ด์ƒ ์Œ“์—ฌ์žˆ๋Š” ๊ฒฝ์šฐ, ๊ฐ€์žฅ ์ตœ์ƒ๋‹จ์˜ ํ’€ ํ™”๋ฉด๋งŒ์„ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜์œ„์˜ ํ’€ํ™”๋ฉด์€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ˆจ๊น€ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

: ํŒ์—… ํ™”๋ฉด์ด 2๊ฐœ ์ด์ƒ ์Œ“์—ฌ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ํŒ์—… ํ™”๋ฉด์˜ ์ง‘์ค‘๋„๋ฅผ ์œ„ํ•ด ์ตœ์ƒ๋‹จ์˜ ํŒ์—… ํ™”๋ฉด์„ ์ œ์™ธํ•œ ํ•˜์œ„์˜ ํŒ์—… ํ™”๋ฉด์€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ˆจ๊น€ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

: ํ‚น์˜คํŒŒ ์ต์ŠคํŠธ๋ฆผ ๋งค์น˜, ๋ธŒ๋กค์Šคํƒ€์ฆˆ ๋“ฑ์˜ ๊ฒŒ์ž„์—์„œ ํ™”๋ฉด์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋ณด๋ฉด ์œ„์™€ ๊ฐ™์ด ์ฒ˜๋ฆฌ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

'๐Ÿ“ Development Study > ๐Ÿ’ป Win32API' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Sound  (0) 2022.11.09
Gravity  (0) 2022.11.09
Tile Map  (0) 2022.11.02
Clone Object(๋ณต์‚ฌ ์ƒ์„ฑ์ž)  (0) 2022.10.26
Rigidbody  (0) 2022.10.20

๋Œ“๊ธ€