[C++/MFC] ๐Ÿ–ฅ๏ธ MFC ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2)

Singery00ยท2024๋…„ 10์›” 19์ผ

MFC

๋ชฉ๋ก ๋ณด๊ธฐ
2/6
post-thumbnail

๊ฐœ์š”

๐Ÿ–ฅ๏ธ C++ MFC ํ”„๋กœ๊ทธ๋ž˜๋ฐ <๋ฉ”๋‰ด ์ˆ˜์ • ํŽธ>

์ด๋ฒˆ์—๋Š” ์œˆ๋„์šฐ ์ƒ๋‹จ์˜ ๋ฉ”๋‰ด๋ฐ”๋ฅผ ์ˆ˜์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ƒˆ๋กœ์šด ๋ฉ”๋‰ดํƒญ์„ ์ถ”๊ฐ€ํ•ด์„œ, ๋‹ค์ด์–ผ๋กœ๊ทธ ์ฐฝ์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ๋„์šฐ๊ฒ ์Šต๋‹ˆ๋‹ค.

โ— VS 2022 ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ—


๋ณธ๋ก 


๐Ÿ–ฅ๏ธ ๋ฉ”๋‰ด๋ฐ” ์ˆ˜์ • ๋ฐ ์ด๋ฒคํŠธ ์ถ”๊ฐ€

์šฐ์„  ๊ณผ์ • ๋จผ์ € ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๋ฉ”๋‰ด๋ฐ”์— ๋ฒ„ํŠผ ์ถ”๊ฐ€
  2. ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ ํ• ๋‹น
  3. ํด๋ฆญ ์‹œ ๋„์šธ ๋‹ค์ด์–ผ๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ
  4. ๋‹ค์ด์–ผ๋กœ๊ทธ ๋„์šฐ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„

๋ฉ”๋‰ด ๋ฒ„ํŠผ ์ถ”๊ฐ€

์šฐ์„  ๋ฆฌ์†Œ์Šค๋ทฐ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  Menu ํƒญ์—์„œ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๋‚˜์˜ค๋Š” ์ฐฝ์˜ ๋ฉ”๋‰ด๋ฅผ ์ฐพ์•„์„œ ์—ด์–ด์ฃผ์„ธ์š”.

๊ทธ๋Ÿฌ๋ฉด ๋ฉ”๋‰ด๋ฐ”๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค,
ํŒŒ์ผ ํƒญ์„ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์—ฌ๊ธฐ์— ์ž…๋ ฅ ๋ž€์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.
๊ฑฐ๊ธฐ์— ์›ํ•˜๋Š” ๋ฒ„ํŠผ์˜ ์ด๋ฆ„์„ ๋„ฃ์–ด ์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ

โ— ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„์—๋Š” ID๋ฅผ ์ง€์ •ํ•ด์ฃผ์„ธ์š” โ—
๋ฉ”๋‰ด์˜ ํ…Œ์ŠคํŠธ ๋ฒ„ํŠผ์ด๋ผ ID_MENU_TEST_BTN์ด๋ผ๊ณ  ์ง€์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ฉด ์•„์ง ์ด๋ฒคํŠธ๊ฐ€ ์—†์–ด ๋ฒ„ํŠผ์ด ์žˆ์œผ๋‚˜ ๋น„ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ฆญ ์ด๋ฒคํŠธ ํ• ๋‹น

์—ฌ๊ธฐ์„œ ๊ฐœ๋…ํ•˜๋‚˜๋ฅผ ์•Œ๊ณ  ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ ์œˆ๋„์šฐ ์ฐฝ๋“ค์€ ๊ฐ์ž์˜ ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๊ทธ ์™ธ์˜ ์ถ”๊ฐ€๋œ ์š”์†Œ๋“ค์€ ํ• ๋‹น๋œ ํด๋ž˜์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•˜๋А๋ƒ?

ID์™€ ํ•จ์ˆ˜๋ฅผ ๋งคํ•‘์„ ํ†ตํ•ด์„œ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์— ๋Œ€ํ•ด์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ID๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
์ž๋™ ์ƒ์„ฑ๋˜๋Š” ID๋ฅผ ๋‚จ๋ฐœํ•˜๋‹ค๊ฐ€๋Š” ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ด์งˆ๊ฒ๋‹ˆ๋‹ค.

์šฐ์„  ์ƒ์„ฑ๋œ ๋ฒ„ํŠผ์„ ์šฐํด๋ฆญํ•ด์ฃผ์„ธ์š”.
๊ทธ๋Ÿฌ๋ฉด ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ๋ฉ”์ธ์œˆ๋„์šฐ์˜ ๋ฉ”๋‰ด์ฐฝ์ด๋‹ˆ CMainFrame ํด๋ž˜์Šค์— ์ด๋ฒคํŠธ ํ•จ์ˆ˜๋ฅผ ๋งคํ•‘ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ์„ ํƒํ•ด์ฃผ์‹œ๊ณ  ๋ฉ”์‹œ์ง€ ์œ ํ˜•์„ COMMAND๋กœ ํ•ด์ฃผ์„ธ์š”.
ํ•จ์ˆ˜ ์ด๋ฆ„๋„ ์ž˜ ์ง€์–ด์ฃผ์‹œ๊ณ  ํ™•์ธ.

๊ทธ๋Ÿฌ๋ฉด 3๊ฐ€์ง€๊ฐ€ ์ƒ์„ฑ์ด ๋ฉ๋‹ˆ๋‹ค.

  1. ์„ ํƒํ•œ ํด๋ž˜์Šค์˜ ํ—ค๋”ํŒŒ์ผ์— ์ด๋ฒคํŠธ ํ•จ์ˆ˜ ์„ ์–ธ ์ƒ์„ฑ afx_msg void ํ•จ์ˆ˜()
  1. ์„ ํƒํ•œ ํด๋ž˜์Šค์˜ .cpp ํŒŒ์ผ์˜ ๋ฉ”์‹œ์ง€ ๋งคํ•‘
    BEGIN_MESSAGE_MAP๊ณผ END_MESSAGE_MAP ์‚ฌ์ด์— (ID, ํ•จ์ˆ˜) ํ˜•์‹์œผ๋กœ ๋งคํ•‘์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  1. ์„ ํƒํ•œ ํด๋ž˜์Šค์˜ .cpp ํŒŒ์ผ์— ์ด๋ฒคํŠธ ํ•จ์ˆ˜์˜ ์ •์˜๋ถ€ ์ƒ์„ฑ
    ํ•ด๋‹น ํ•จ์ˆ˜์— ๋™์ž‘ํ•  ์ด๋ฒคํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์œ„ 3๊ฐ€์ง€๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.
์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ ์ถ”๊ฐ€๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์œผ๋‚˜
์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์ˆ˜๋™์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์ด์–ผ๋กœ๊ทธ ์ƒ์„ฑ

๋ฆฌ์†Œ์Šค๋ทฐ์—์„œ ๋„์šธ ๋‹ค์ด์–ผ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ด๋ด…์‹œ๋‹ค.

์ด๋ฒˆ์—” Dialogํด๋”์— ์šฐํด๋ฆญ ํ›„ ๋ฆฌ์†Œ์Šค ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  Dialog๋ฅผ ์„ ํƒํ•˜๊ณ  ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด

๊ธฐ๋ณธ ๋‹ค์ด์–ผ๋กœ๊ทธ ์ฐฝ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
์ž ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋‹ˆ ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผํ•  ์ผ์€?

โ— ID๋ฅผ ์ง€์ •ํ•ด์ฃผ์„ธ์š” โ—

๊ทธ๋ฆฌ๊ณ  ๋‹ค์ด์–ผ๋กœ๊ทธ๋ฅผ ์šฐํด๋ฆญํ•˜๋ฉด ์˜ต์…˜์ด ๋‚˜ํƒ€๋‚˜๋Š”๋ฐ,
๊ฑฐ๊ธฐ์„œ ํด๋ž˜์Šค ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

TestDialog๋ผ๊ณ  ์ด๋ฆ„์ง€์€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ํด๋ž˜์Šค๋Š” ์ผ๋‹จ CDialogEx๋ฅผ ์ƒ์†๋ฐ›๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํฌ์ŠคํŒ…์„ ์ง„ํ–‰ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์š”์†Œ๋ฅผ ์ƒ์†๋ฐ›๋Š” ๋‹ค์ด์–ผ๋กœ๊ทธ๋„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ๋‹ค์ด์–ผ๋กœ๊ทธ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑ์™„๋ฃŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋‹ค์ด์–ผ๋กœ๊ทธ ๋„์šฐ๊ธฐ

์ž ์ด์ œ ๋‹ค์ด์–ผ๋กœ๊ทธ๋ฅผ ๋„์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ์„  ์ƒ์„ฑํ•œ ๋‹ค์ด์–ผ๋กœ๊ทธ๋ฅผ ๋ฉ”์ธํ”„๋ ˆ์ž„์— ํฌํ•จ์‹œ์ผœ์ฃผ์„ธ์š”.
#include "ํด๋ž˜์Šค.h"๋ฅผ ํ•˜๋ฉด ๋˜๊ฒ ์ฃ ?

์ฐฝ์„ ๋„์šฐ๋Š”๋ฐ๋Š” 2๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ชจ๋‹ฌ ๋‹ค์ด์–ผ๋กœ๊ทธ ๋ฐฉ์‹
  2. ๋ชจ๋ธ๋ฆฌ์Šค ๋ฐฉ์‹

๋ชจ๋‘ ๋‹ค ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

โ— ๋‹น์žฅ ์ฝ”๋“œ ์ž‘์„ฑ์‹œ์—๋Š” ์ƒ์„ฑ, ์†Œ๋ฉธ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์ผ๋‹จ ๋„์šฐ๊ฒ ์Šต๋‹ˆ๋‹ค โ—

DoModal (๋ชจ๋‹ฌ ๋‹ค์ด์–ผ๋กœ๊ทธ ๋ฐฉ์‹)

๋ชจ๋‹ฌ ๋ฐฉ์‹์€ ์ฐฝ์„ ๋„์—ˆ์„ ๋•Œ ํ•ด๋‹น ๋‹ค์ด์–ผ๋กœ๊ทธ๋งŒ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ฐฝ์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  DoModal() ํ•จ์ˆ˜๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ํ•ด๋ณด๋ฉด ์ฐฝ์ด ์ž˜ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค!
ํ•˜์ง€๋งŒ ๋’ค์˜ ๋ฉ”๋‰ด๊ฐ€ ํด๋ฆญ์ด ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ๋ฆฌ์Šค ๋ฐฉ์‹

๋ชจ๋‹ฌ ๋ฐฉ์‹์„ ์ฃผ์„์ฒ˜๋ฆฌํ•˜๊ณ  ๋ชจ๋ธ๋ฆฌ์Šค๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

new๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ๋™์ ํ• ๋‹น์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ์ƒˆ์š”.
๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑํ•  ๋‹ค์ด์–ผ๋กœ๊ทธ์˜ ID๋ฅผ ๋„ฃ์–ด์„œ Create()๋กœ ๋‹ค์ด์–ผ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ShowWindow(SW_SHOW)๋กœ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ํ•ด๋ณด๋ฉด ์—ญ์‹œ ์ฐฝ์ด ์ž˜ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ด๋ฒˆ์—๋Š” ๋’ค์˜ ๋ฉ”์ธ์ฐฝ๊ณผ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

์ง€๊ธˆ ์ฐฝ์€ ๋„์—ˆ์œผ๋‚˜ ๋‹ค์ด์–ผ๋กœ๊ทธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ˆ˜๋ช… ๊ด€๋ฆฌ๊ฐ€ ์ „ํ˜€ ๋˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น ๋‚ด์šฉ์„ ๋‹ค์Œ ํฌ์ŠคํŒ…์— ์ง„ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž

0๊ฐœ์˜ ๋Œ“๊ธ€