250x250
Rainbow๐ŸŒˆCoder
My dev Note๐Ÿ“’
Rainbow๐ŸŒˆCoder
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (411)
    • ๊ณต์ง€์‚ฌํ•ญ (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ • (3)
      • React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ (6)
      • next.js (2)
      • pixi.js (7)
    • ๋งˆํฌ์—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • ์ด๊ฒƒ์ด C#์ด๋‹ค (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(๊ธฐ์ดˆ) (8)
      • Unity(C#์ค‘๊ธ‰) (5)
      • ์œ ๋‹ˆํ‹ฐ ํฌํ†ค(๋„คํŠธ์›Œํฌ) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • ์Šคํ”„๋ง (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (15)
      • ์ž๋ฃŒ๊ตฌ์กฐ (5)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
    • ํ˜•์ƒ๊ด€๋ฆฌ (15)
      • Git (11)
      • ์†Œ์ŠคํŠธ๋ฆฌ (3)
    • ๊ทธ๋ž˜ํ”ฝ์Šค (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • ๋ฆฌ๋ˆ…์Šค (5)
      • ๋ฆฌ๋ˆ…์Šค (5)
    • ์ฑ… ๋ฆฌ๋ทฐ (13)
      • ํด๋ฆฐ์ฝ”๋“œ(์ฑ…๋ฆฌ๋ทฐ) (3)
      • ์œ ์ง€๋ณด์ˆ˜๊ฐ€๋Šฅํ•œ์ฝ”๋”ฉ์˜๊ธฐ์ˆ C#ํŽธ(์ฑ…๋ฆฌ๋ทฐ) (1)
      • ๋ฆฌํŒฉํ† ๋ง(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒ) (9)
    • Server (2)
      • ๊ฒŒ์ž„ ์„œ๋ฒ„(๋„คํŠธ์›Œํฌ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ,OS) (2)
    • ์„ค๊ณ„, ์•„ํ‚คํ…์ณ (4)
    • ํŒŒ์ด์ฌ (5)
    • ๋””์ž์ธํŒจํ„ด (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • ์ธ๊ณต์ง€๋Šฅ (1)
      • ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š”๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์œ„์ž„
  • ใ…ฃใ„ท
  • ์ปดํฌ์ง€์…˜
  • MySQL

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Rainbow๐ŸŒˆCoder

My dev Note๐Ÿ“’

C++/win api

[Win api] CreateWindow

2021. 5. 30. 19:21
728x90

๋ณธ๋ฌธ์—์„œ๋Š” ์•„๋ž˜ ํ•˜์ด๋ผ์ดํŠธ ๋ถ€๋ถ„์„ ์„ธ๋ถ€์ ์œผ๋กœ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค.


BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{
   hInst = hInstance; 
   HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
  
   if (!hWnd) //์œˆ๋„์šฐ์ฐฝ์„ ์ƒ์„ฑ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฌธ์ด๋‹ค.
   {
      return FALSE;
   }


CreateWindow๋ฅผ ํ•˜๋ฉด ๋ฌด์กฐ๊ฑด ์œˆ๋„์šฐ ํ•ธ๋“ค์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.
์‹ค์ œ ์œˆ๋„์šฐ์ฐฝ์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. ์ƒ์„ฑํ•œ ์œˆ๋„์šฐ์˜ ํ•ธ๋“ค์„ ๋ฐ˜ํ™˜ํ•ด์คŒ
   

์‹ค์ œ ์ฝ”๋“œ ; HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

 

๊ฐ ์ธ์ˆ˜์˜ ์˜๋ฏธ: HWND CreateWindow(lpszClassName, lpszWindowName, dwStyle, x, y, nWidth, nHeight, hwndParent, hmenu, hinst, lpvParam)


1 lpszClassName
์ƒ์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ์œˆ๋„์šฐ์˜ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฌธ์ž์—ด์ด๋‹ค. ์•ž์—์„œ ์ •์˜ํ•œ WndClass๊ตฌ์กฐ์ฒด์˜ lpszClassName ๋ฉค๋ฒ„์˜ ์ด๋ฆ„์„ ์—ฌ๊ธฐ์— ๊ธฐ์ž…ํ•ด ์ค€๋‹ค. 

2 lpszWindowName
์œˆ๋„์šฐ์˜ ํƒ€์ดํ‹€ ๋ฐ”์— ๋‚˜ํƒ€๋‚  ๋ฌธ์ž์—ด์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์ง€์ •ํ•œ ๋ฌธ์ž์—ด์ด ์œˆ๋„์šฐ์˜ ํƒ€์ดํ‹€ ๋ฐ”์— ๋‚˜ํƒ€๋‚œ๋‹ค. 

3 dwStyle
๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ์œˆ๋„์šฐ์˜ ํ˜•ํƒœ๋ฅผ ์ง€์ •ํ•˜๋Š” ์ธ์ˆ˜์ด๋‹ค. ์ผ์ข…์˜ ๋น„ํŠธ ํ•„๋“œ๊ฐ’์ด๋ฉฐ ๊ฑฐ์˜ ์ˆ˜์‹ญ๊ฐœ๋ฅผ ํ—ค์•„๋ฆฌ๋Š” ๋งคํฌ๋กœ ์ƒ์ˆ˜๋“ค์ด ์ •์˜๋˜์–ด ์žˆ๊ณ  ์ด ์ƒ์ˆ˜๋“ค์„ OR์—ฐ์‚ฐ์ž๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์œˆ๋„์šฐ์˜ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋ฅผ ์ง€์ •ํ•œ๋‹ค. 

์œˆ๋„์šฐ๊ฐ€ ๊ฒฝ๊ณ„์„ ์„ ๊ฐ€์งˆ ๊ฒƒ์ธ๊ฐ€, ํƒ€์ดํ‹€ ๋ฐ”๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์ธ๊ฐ€ ๋˜๋Š” ์Šคํฌ๋กค ๋ฐ”์˜ ์œ ๋ฌด ๋“ฑ๋“ฑ์„ ์„ธ์„ธํ•˜๊ฒŒ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ์Šคํƒ€์ผ๊ฐ’์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ์กฐํ•˜๋˜ WS_OVERLAPPEDWINDOW๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์žฅ ๋ฌด๋‚œํ•œ ์œˆ๋„์šฐ ์„ค์ • ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ฆ‰ ์‹œ์Šคํ…œ ๋ฉ”๋‰ด, ์ตœ๋Œ€ ์ตœ์†Œ ๋ฒ„ํŠผ, ํƒ€์ดํ‹€ ๋ฐ”, ๊ฒฝ๊ณ„์„ ์„ ๊ฐ€์ง„ ์œˆ๋„์šฐ๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

4 X, Y, nWidth, nHeight
์ธ์ˆ˜์˜ ์ด๋ฆ„์ด ์˜๋ฏธํ•˜๋“ฏ์ด ์œˆ๋„์šฐ์˜ ์œ„์น˜์™€ ๊ฐ€๋กœ ๋ฐ ์„ธ๋กœ๋ฅผ ์ง€์ •ํ•˜๋ฉฐ ํ”ฝ์…€ ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. x, y์ขŒํ‘œ๋Š” ๋ฉ”์ธ ์œˆ๋„์šฐ์˜ ๊ฒฝ์šฐ๋Š” ์ „์ฒด ํ™”๋ฉด์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋ฉฐ ์ฐจ์ผ๋“œ ์œˆ๋„์šฐ๋Š” ๋ถ€๋ชจ ์œˆ๋„์šฐ์˜ ์ขŒ์ƒ๋‹จ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค. ์ •์ˆ˜๊ฐ’์„ ๋ฐ”๋กœ ์ง€์ •ํ•ด๋„ ๋˜๋ฉฐ CW_USEDEFAULT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œˆ๋„์šฐ์ฆˆ๊ฐ€ ์•Œ์•„์„œ ์ ๋‹นํ•œ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ์„ค์ •ํ•ด ์ค€๋‹ค. 

5 hWndParent 
๋ถ€๋ชจ ์œˆ๋„์šฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ถ€๋ชจ ์œˆ๋„์šฐ์˜ ํ•ธ๋“ค์„ ์ง€์ •ํ•ด ์ค€๋‹ค. ํŒ์—… ์œˆ๋„์šฐ๋Š” ์œˆ๋„์šฐ๋ผ๋ฆฌ ์ˆ˜์ง์ ์ธ ์ƒํ•˜๊ด€๊ณ„๋ฅผ ๊ฐ€์ ธ ๋ถ€์ž(parent-child) ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝ๋˜๋Š”๋ฐ ์ด ๊ด€๊ณ„๋ฅผ ์ง€์ •ํ•ด ์ฃผ๋Š” ์ธ์ˆ˜์ด๋‹ค.

๋ถ€๋ชจ ์œˆ๋„์šฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ๋Š” ์ด ๊ฐ’์„ NULL๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.

6 hmenu
์œˆ๋„์šฐ์—์„œ ์‚ฌ์šฉํ•  ๋ฉ”๋‰ด์˜ ํ•ธ๋“ค์„ ์ง€์ •ํ•œ๋‹ค. WndClass์—๋„ ๋ฉ”๋‰ด๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š”๋ฐ ์œˆ๋„์šฐ ํด๋ž˜์Šค์˜ ๋ฉ”๋‰ด๋Š” ๊ทธ ์œˆ๋„์šฐ ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ชจ๋“  ์œˆ๋„์šฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ˜๋ฉด ์ด ์ธ์ˆ˜๋กœ ์ง€์ •๋œ ๋ฉ”๋‰ด๋Š” ํ˜„์žฌ CreateWindow ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์œˆ๋„์šฐ์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค. ๋งŒ์•ฝ WndClass์—์„œ ์ง€์ •ํ•œ ๋ฉ”๋‰ด๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด ์ธ์ˆ˜๋ฅผ NULL๋กœ ์ง€์ •ํ•˜๋ฉด ๋˜๋ฉฐ WndClass์—์„œ ์ง€์ •ํ•œ ๋ฉ”๋‰ด ๋Œ€์‹  ๋‹ค๋ฅธ ๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด ์ธ์ˆ˜์— ์›ํ•˜๋Š” ๋ฉ”๋‰ด ํ•ธ๋“ค์„ ์ฃผ๋ฉด ๋œ๋‹ค. 

7 hinst

์œˆ๋„์šฐ ์ฐฝ์ด ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ ์†Œ์†์˜ ์œˆ๋„์šฐ ์ฐฝ์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ธ์Šคํ„ด์Šค ๋ฒˆํ˜ธ(์šด์šฉ์ฒด์ œ๊ฐ€ ๋งŒ๋“  ์‹๋ณ„๋ฒˆํ˜ธ)

์ฆ‰ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•ธ๋“ค. WinMain์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ hInstance๋ฅผ ๋Œ€์ž…ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

8 lpvParam
CREATESTRUCT๋ผ๋Š” ๊ตฌ์กฐ์ฒด์˜ ๋ฒˆ์ง€์ด๋ฉฐ ํŠน์ˆ˜ํ•œ ๋ชฉ์ ์— ์‚ฌ์šฉ๋œ๋‹ค. ๋ณดํ†ต์€ NULL๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

์ฐธ๊ณ ๋ฌธํ—Œ:

Win32 API ์ž…๋ฌธ ๊ฐ•์ขŒ (soen.kr)

 

Win32 API ์ž…๋ฌธ ๊ฐ•์ขŒ

WinMain ํ•จ์ˆ˜์—์„œ ํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ผ์€ ์œˆ๋„์šฐ๋ฅผ ๋งŒ๋“œ๋Š” ์ผ์ด๋‹ค. ์œˆ๋„์šฐ๊ฐ€ ์žˆ์–ด์•ผ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ  ์ถœ๋ ฅ์„ ๋ณด์—ฌ์ค„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์œˆ๋„์šฐ๋ฅผ ๋งŒ๋“œ๋ ค๋ฉด ์œˆ๋„์šฐ ํด๋ž˜์Šค๋ฅผ ๋จผ

www.soen.kr

 

728x90

'C++ > win api' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Win api] InvalidateRect vs updatewindow  (0) 2021.05.30
[Win api] DC์™€ WM_PAINT, ๊ทธ๋ฆฌ๊ณ  BeginPaint() vs GetDC() ๊ด€ํ•œ ๋น„๊ต  (0) 2021.05.30
    'C++/win api' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Win api] InvalidateRect vs updatewindow
    • [Win api] DC์™€ WM_PAINT, ๊ทธ๋ฆฌ๊ณ  BeginPaint() vs GetDC() ๊ด€ํ•œ ๋น„๊ต
    Rainbow๐ŸŒˆCoder
    Rainbow๐ŸŒˆCoder
    ๋ชฐ๋ผ๋„ ๊ฒฐ๊ตญ์€ ์•„๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•œ ๋งค์ผ์˜ ํ•œ๊ฑธ์Œ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”