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

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

MFC

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

๊ฐœ์š”

๐Ÿ–ฅ๏ธ C++ MFC ํ”„๋กœ๊ทธ๋ž˜๋ฐ <๋‹ค์ด์–ผ๋กœ๊ทธ ์ค‘์ฒฉ ํŽธ>

์ƒˆ๋กญ๊ฒŒ ๋„์šด ๋‹ค์ด์–ผ๋กœ๊ทธ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Form View๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋‰ด์—์„œ ๋„์šด ๋‹ค์ด์–ผ๋กœ๊ทธ์— ์ž์‹์œผ๋กœ ๋„ฃ์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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


๋ณธ๋ก 


Form View ์ƒ์„ฑ

๋ฆฌ์†Œ์Šค ์ƒ์„ฑ

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

ID ์„ค์ •

Dialog ํ•˜์œ„์— IDD_FORMVIEW ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑํ›„์—๋Š” ๊ฐ€์žฅ ๋จผ์ € ID ์ˆ˜์ •์ด ๋จผ์ €์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ID๋Š” ์˜๋„์น˜ ์•Š๋Š” ๋™์ž‘์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ผญ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ์ถ”๊ฐ€

๊ทธ๋ฆฌ๊ณ  FormView์˜ ๋ฆฌ์†Œ์Šค์— ์šฐํด๋ฆญํ•˜์—ฌ ํด๋ž˜์Šค ์ถ”๊ฐ€ ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ์ด๋ฆ„ ์ง€์–ด์ฃผ์‹œ๊ณ , ๊ธฐ๋ณธ ํด๋ž˜์Šค๋ฅผ CFormView ๋กœ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

๊ฐ€์ƒํ•จ์ˆ˜ ์ถ”๊ฐ€

ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ํ”„๋กœ์ ํŠธ ํƒญ์—์„œ ํด๋ž˜์Šค ๋งˆ๋ฒ•์‚ฌ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ํ•„์š”ํ•œ ๋ฉ”์‹œ์ง€, ๊ฐ€์ƒํ•จ์ˆ˜, ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋“ฑ์„ ํŽธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ ๋‚ด์šฉ๋“ค์ด ๋œจ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ชจ๋‘ ์ €์žฅํ•œ ๋’ค์— ๋‹ค์‹œ ์ผœ๋ณด์„ธ์š”.

๊ฐ€์žฅ ๋จผ์ € ๊ด€๋ฆฌํ•  ํด๋ž˜์Šค๋ฅผ ์„ ํƒํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ƒ๋‹จ์—์„œ FormView์˜ ํด๋ž˜์Šค๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

OnInitialUpdate

๊ทธ๋ฆฌ๊ณ  ๊ฐ€์ƒ ํ•จ์ˆ˜์— ๋“ค์–ด๊ฐ€์„œ ์šฐ์„  OnInitialUpdate๋ฅผ ๋”๋ธ”ํด๋ฆญํ•ด์ฃผ์„ธ์š”.

๊ทธ๋Ÿผ ์ž๋™์œผ๋กœ ํ—ค๋”์™€ ์†Œ์Šค์ฝ”๋“œ ํŒŒ์ผ์— ์„ ์–ธ๊ณผ ์ •์˜๋ถ€๊ฐ€ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

Create

๋˜ํ•œ ์ƒ์„ฑ์— ํ•„์š”ํ•œ Create๋„ ๋ฏธ๋ฆฌ ๋„ฃ์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ด์ฆˆ ์ง€์ •

์—ฌ๊ธฐ์„œ ๋ญ˜ํ• ๊ฑฐ๋ƒ๋ฉด ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š”๋งŒํผ ์‚ฌ์ด์ฆˆ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” ์ ๋‹นํžˆ 2000,2000์œผ๋กœ ์žก์•„ ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.


Form View ์ด์‹

๋‹ค์ด์–ผ๋กœ๊ทธ์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๊ฒ๋‹ˆ๋‹ค.

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

์ด์ œ ๋งŒ๋“ค์–ด์ง„ ๋ทฐ๋ฅผ ๋‹ค์ด์–ผ๋กœ๊ทธ ์•ˆ์— ์ž์‹์œผ๋กœ ๋„ฃ์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
FormView์˜ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋‹ค์ด์–ผ๋กœ๊ทธ ํด๋ž˜์Šค์— ์„ ์–ธํ•ด์ฃผ์„ธ์š”.

๋‹ค์ด์–ผ๋กœ๊ทธ ์ดˆ๊ธฐํ™” ์‹œ ์ƒ์„ฑ

๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ์ดˆ๊ธฐํ™”๋  ๋•Œ ๋ทฐ๋ฅผ ๋„ฃ์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‹ค์ด์–ผ๋กœ๊ทธ์˜ OnInitDialog์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค์ด์–ผ๋กœ๊ทธ ํฌ๊ธฐ ๊ฐ€์ ธ์˜ค๊ธฐ

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋‹ค์ด์–ผ๋กœ๊ทธ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
GetWindowRect๋กœ ํ™”๋ฉด ์ขŒํ‘œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ScreenToClient๋ฅผ ํ†ตํ•ด์„œ ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ ํด๋ผ์ด์–ธํŠธ ์ขŒํ‘œ๊ณ„๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๊ทธ ๊ฐ’์„ rect์— ์ €์žฅํ•˜๋Š”๊ฒ๋‹ˆ๋‹ค.

	CRect rect;
	GetWindowRect(&rect);
	ScreenToClient(&rect);

FormView ์ƒ์„ฑ

FormView๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  Create ํ•ด์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์†์„ฑ์„ ์ง€์ •ํ•ด์ฃผ๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค.

	m_pForm = new CMyForm();
	m_pForm->Create(NULL, NULL, WS_CHILD | WS_VSCROLL | WS_HSCROLL, rect, this, IDD_FORMVIEW_CHILD, NULL);
	

์ดˆ๊ธฐํ™”?

์—ฌ๊ธฐ์„œ OnIntialUpdate๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜์˜€๋Š”๋ฐ ๋‚˜์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ OnIntialUpdate๊ฐ€ ํ˜ธ์ถœ๋˜๋Š”๋ฐ
๋ช…์‹œ์ ์œผ๋กœ ๋˜ ํ˜ธ์ถœํ•ด์„œ 2๋ฒˆ ํ˜ธ์ถœ๋˜๊ณ  ์žˆ์ฃ .

์ด๋Š” ๋‚˜์ค‘์— ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผœ์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ์œ„ํ•ด์„œ ์ผ๋ถ€๋Ÿฌ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค,

m_pForm->OnInitialUpdate();

Visible

๊ทธ๋ฆฌ๊ณ  ShowWindowํ•จ์ˆ˜์— SW_SHOW๋ฅผ ํ†ตํ•ด์„œ Visible ์„ค์ •์„ ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ SW_HIDE์„ ๋„ฃ๋Š”๋‹ค๋ฉด ๋‹ค์‹œ ์•ˆ๋ณด์ด๊ฒ ์ฃ 

	m_pForm->ShowWindow(SW_SHOW);

์šฐ์„  ์—ฌ๊ธฐ๊นŒ์ง€ ์‹คํ–‰์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ๋‹ค์ด์–ผ๋กœ๊ทธ์•ˆ ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

๋ธ”๋ฃจํ”„๋ฆฐํŠธ์ฒ˜๋Ÿผ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ .

์œ„์น˜ ์ง€์ •

์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ํ•œ์ค„ ๋„ฃ์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ขŒํ‘œ์™€ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•ด๋ณด๋ฉด ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ง„ ๊ฒƒ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

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

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

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