[C++/MFC] πŸ–₯️ MFC ν”„λ‘œκ·Έλž˜λ° (1)

Singery00Β·2024λ…„ 10μ›” 19일

MFC

λͺ©λ‘ 보기
1/6
post-thumbnail

κ°œμš”

πŸ–₯️ C++ MFC ν”„λ‘œκ·Έλž˜λ° <ν”„λ‘œμ νŠΈ μ„ΈνŒ… 편>

세상일 μ–΄λ–»κ²Œ 될지 정말 λͺ¨λ₯΄λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
ν•™λΆ€ GUI ν”„λ‘œκ·Έλž˜λ° 전곡 κ³Όλͺ© λ•Œ MFCλ₯Ό λ°°μ› μ—ˆμŠ΅λ‹ˆλ‹€.
'이런 ꡬλ‹₯닀리 같은걸 μ™œ ν•΄μ•Όν•˜μ§€'라고 μƒκ°ν•˜λ©΄μ„œλ„ μ—΄μ‹¬νžˆ ν•˜κΈ΄ ν–ˆλŠ”λ°...
근데 κ·Έκ±Έ μ‚¬μš©ν•˜κ²Œ λ˜λŠ” 날이 μ™”μŠ΅λ‹ˆλ‹€. μ–΄λ””κΉŒμ§€ 내닀보신 κ²λ‹ˆκΉŒ κ΅μˆ˜λ‹˜...

λͺ¨λ₯΄λŠ” κ²ƒλ³΄λ‹€λŠ” λ‚«λ‹€λŠ” 마음으둜 기얡을 λ˜μ§šμ–΄λ³΄λ©° λͺ‡κ°€μ§€ 예제λ₯Ό μ§„ν–‰ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

μš°μ„ μ€ ν”„λ‘œμ νŠΈ μ„ΈνŒ…λΆ€ν„° μ§„ν–‰ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

❗ VS 2022 ν™˜κ²½μ—μ„œ μ§„ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€ ❗


λ³Έλ‘ 


πŸ–₯️ ν”„λ‘œμ νŠΈ μ„ΈνŒ…


Visual Studio Installer

VS Installerμ—μ„œ μš°μ„  MFCλ₯Ό μ„€μΉ˜ν•©μ‹œλ‹€.

C++λ₯Ό μ‚¬μš©ν•œ λ°μŠ€ν¬ν†± 개발의 μ„€μΉ˜ μ„ΈλΆ€ μ •λ³΄μ—μ„œ μΆ”κ°€ν•΄μ•Όν•©λ‹ˆλ‹€.
μ•„λž˜ 사진에 λ³΄μ΄λŠ” μ˜΅μ…˜ 2개λ₯Ό μ²΄ν¬ν•΄μ£Όμ‹œκ³  μˆ˜μ •μœΌλ‘œ μ„€μΉ˜ν•΄μ£Όμ„Έμš”.

Visual Studio Editor

μ„€μΉ˜κ°€ μ™„λ£Œλ˜λ©΄ VS μ—λ””ν„°λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

그리고 μƒˆ ν”„λ‘œμ νŠΈ λ§Œλ“€κΈ°μ—μ„œ MFC 앱을 μ„ νƒν•΄μ£Όμ„Έμš”.

ν”„λ‘œμ νŠΈλͺ… μ§€μ •ν•΄μ£Όμ‹œκ³ 

뭐 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ’…λ₯˜, μŠ€νƒ€μΌ μ„€μ •ν•˜λŠ”κ²Œ μžˆμŠ΅λ‹ˆλ‹€.

λ§Œμ•½ 처음 ν”„λ‘œμ νŠΈ μ‹€ν–‰ μ‹œ μœˆλ„μš°κ°€ μž‘λ‹€ν•˜κ²Œ λ­”κ°€ λ§Žμ€κ²Œ μ‹«λ‹€λ©΄
κ³ κΈ‰κΈ°λŠ₯ - κ³ κΈ‰ ν”„λ ˆμž„ μ°½μ—μ„œ μ˜΅μ…˜μ„ κΊΌμ£Όμ„Έμš”.

저도 μ‹€μŠ΅μ˜ νŽΈμ˜μ„±μ„ μœ„ν•΄ κΊΌμ£Όκ² μŠ΅λ‹ˆλ‹€.
μΆ”κ°€ν•˜κ³  ν•  λ•Œ κ±°μŠ¬λ¦½λ‹ˆλ‹€.

λ§Œμ•½, μ˜΅μ…˜μ„ λ‹€ ν‚¨μ±„λ‘œ λ“€μ–΄κ°€λ©΄ ν”„λ‘œμ νŠΈμ— λ“€μ–΄μ˜€λ©΄ 이미 λ­”κ°€ κ°€λ“κ°€λ“ν•©λ‹ˆλ‹€.

λΉŒλ“œν•˜κ³  싀행해보면 μž‘λ‹€ν•œκ²Œ λ§Žμ€ 창이 λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ 생성 μ™„λ£Œ

μ €λŠ” μ˜΅μ…˜μ„ 끄고 ν”„λ‘œμ νŠΈλͺ…을 MFCVelog둜 μƒˆλ‘­κ²Œ μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€.
μ†ŒμŠ€λΆ€ν„° κΉ”λ”ν•©λ‹ˆλ‹€.

μ‹€ν–‰ν•˜λ©΄ μ‹€μŠ΅ν•˜κΈ° λ”± 쒋은 μœˆλ„μš°μ°½λ§Œ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

μ € μœˆλ„μš° λ””μžμΈμ€ μ–΄λ””μ„œ ν™•μΈν•˜λŠλƒ?
상단은 보기 νƒ­μ˜ λ‹€λ₯Έμ°½ > λ¦¬μ†ŒμŠ€λ·°λ₯Ό μ„ νƒν•˜μ‹œλ©΄ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.
λ‹¨μΆ•ν‚€λ‘œλŠ” Ctrl + Shift + Eμž…λ‹ˆλ‹€.

그럼 ν•΄λ‹Ή μœˆλ„μš°μ°½μ„ κ΅¬μ„±ν•˜κ³  μžˆλŠ” λ‹€μ–‘ν•œ λ¦¬μ†ŒμŠ€λ·°κ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄ 메뉴창은 Menu 폴더에 IDR_MAINFRAME μ΄λ¦„μœΌλ‘œ λ§Œλ“€μ–΄μ Έ μžˆμŠ΅λ‹ˆλ‹€.

κ°œλ… μ„€λͺ…

λ¦¬μ†ŒμŠ€(Resource)

λ¦¬μ†ŒμŠ€λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©λ˜λŠ” λΉ„μ½”λ“œ μš”μ†Œμž…λ‹ˆλ‹€.

  1. 메뉴(Menu)
  • ν”„λ‘œκ·Έλž¨μ˜ 상단 메뉴, λ“œλ‘­λ‹€μš΄ 메뉴 λ“±.
  1. λ‹€μ΄μ–Όλ‘œκ·Έ(Dialog)
  • λŒ€ν™” μƒμž, μ‚¬μš©μž μž…λ ₯ μ°½ λ“±.
  1. μ•„μ΄μ½˜, λΉ„νŠΈλ§΅(Icon,Bitmap)
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ°½μ΄λ‚˜ λ²„νŠΌ 등에 μ‚¬μš©ν•˜λŠ” 이미지.
  1. λ¬Έμžμ—΄ ν…Œμ΄λΈ”(String Table)
  • ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•˜λŠ” λ‹€μ–‘ν•œ λ¬Έμžμ—΄ μ§‘ν•©.
  1. 가속기(Accelerator)
  • ν‚€λ³΄λ“œ 단좕킀.

λ¦¬μ†ŒμŠ€λŠ” λ¦¬μ†ŒμŠ€ 파일(.rc)에 μ •μ˜λ˜λ©°, ID둜 μ‹λ³„λ©λ‹ˆλ‹€.
이λ₯Ό 톡해 ν”„λ‘œκ·Έλž¨μ€ 메뉴 ν•­λͺ©, λ‹€μ΄μ–Όλ‘œκ·Έ 등을 μ‰½κ²Œ μ°Έμ‘°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

클래슀(Class)

MFCμ—μ„œ ν΄λž˜μŠ€λŠ” μœˆλ„μš° μ°½μ΄λ‚˜ 컨트둀, λ‹€μ΄μ–Όλ‘œκ·Έ λ“±μ˜ 객체λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ 기반 κ΅¬μ‘°μž…λ‹ˆλ‹€.
MFCλŠ” 기본적으둜 CWnd 클래슀λ₯Ό μƒμ†λ°›λŠ” λ‹€μ–‘ν•œ 클래슀λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. (ex. CWnd, CDialog)

이벀트(Event)

MFCμ—μ„œ μ΄λ²€νŠΈλŠ” μœˆλ„μš° λ©”μ‹œμ§€λ₯Ό 톡해 μ „λ‹¬λ©λ‹ˆλ‹€.
λ©”μ‹œμ§€λŠ” μ‚¬μš©μžμ˜ μž…λ ₯(마우슀 클릭, ν‚€λ³΄λ“œ μž…λ ₯ λ“±), μ‹œμŠ€ν…œμ˜ λ™μž‘(타이머 λ“±), λ‚΄λΆ€ μƒνƒœ 변화에 μ˜ν•΄ λ°œμƒν•©λ‹ˆλ‹€.

μš”μ†Œ 별 관계 정리

λ¦¬μ†ŒμŠ€λŠ” UI μš”μ†Œλ‚˜ λ°μ΄ν„°λ‘œμ„œ ν΄λž˜μŠ€μ™€ μ—°κ²°λ˜μ–΄ ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

μ΄λ²€νŠΈλŠ” 클래슀 λ‚΄μ˜ νŠΉμ • ν•Έλ“€λŸ¬ ν•¨μˆ˜λ‘œ λ¦¬μ†ŒμŠ€μ˜ μƒνƒœλ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ μ μ ˆν•œ λ™μž‘μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.


마무리

λ‹€μ‹œ 봐도 ꡬλ‹₯λ‹€λ¦¬λ„€μš”.
λ””μžμΈμ΄ μ˜¬λ“œν•΄μ„œ κ·ΈλŸ°κ°€...

profile
κ²Œμž„ κ°œλ°œμžκ°€ λ˜μ–΄λ³΄μž

0개의 λŒ“κΈ€