[MFC] Dialog์ Form(Dialog) ๋ถ์ด๊ธฐ(์์ ํฌํจ)
Dialog์ Dialog๋ฅผ ๋ถ์ธ๋ค?
์ด๋ฒ ํฌ์คํ ์์๋ ๋ค์ด์ผ๋ก๊ทธ์ ์๋ก์ด ๋ค์ด์ผ๋ก๊ทธ(CFormView ๊ธฐ๋ฐ)๋ฅผ ๋ถ์ด๋ ์์ ๋ฅผ ๋ณด์ฌ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค. ์ด๊ฒ ๋ฌด์จ ์๋ฏธ์ธ์ง ๊ฐ์ด ์ ์ค์์ฃ ? ์ฝ๊ฒ ์ดํดํ ์ ์๊ฒ ์๋ ์ด๋ฏธ์ง๋ฅผ ์ค๋นํ์ต๋๋ค.
์ฆ, ๋ฉ์ธ ๋ค์ด์ผ๋ก๊ทธ์ ํน์ ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ํน์ ์์ญ์ ๋ถ์ด๋ ๊ฒ์
๋๋ค. ์ด๋ฐ ์์
์ด ์ ํ์ํ ๊น์?
ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ๋ชจ๋ํ๋ ์ ๋ง ์ค์ํฉ๋๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ์ค์ํ ๊ฐ๋
์ค ํ๋์ฃ . ๋ง์ฝ, ๋ชจ๋ํ๋ฅผ ํ์ง ์๊ณ ํ๋์ ํด๋์ค ์์ ์จ๊ฐ ์ฝ๋๋ฅผ ๊ตฌํํด ๋์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ง์ ๊ฐ๋ฐํ ๊ฐ๋ฐ์๋ ๋ฌผ๋ก ํฅํ ์ ์ง๋ณด์ ๊ฐ๋ฐ์๋ ์์๋ณด๊ธฐ๊ฐ ํ๋ค ๊ฒ์
๋๋ค. ์ด๋๋ถํฐ ์
๋ชฝ์ด ์์๋๊ฒ ์ฃ .
UI๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ํ๋์ ๋ค์ด์ผ๋ก๊ทธ์ ๋ณด์ธ๋ค๊ณ ํด์ ์จ๊ฐ ์ปจํธ๋กค๋ค์ ๋ฐฐ์นํด๋ฒ๋ฆฌ๋ฉด ๋๋ฆ๋๋ก ๊ณจ์น ์ํ์ง๋๋ค. ๋ฌผ๋ก ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ง๋ง, ๋๋๋ก์ด๋ฉด ๊ณตํต์ ์ธ ์์ ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ํ๊ฐ ๊ฐ๋ฅํ์ง๋ฅผ ๋ฐ์ ธ๋ณธ ํ ์ด๊ฒ ๋ํ ๋ค๋ฅธ Form์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์์ ์ฝ๋ Concept
๊ทธ๋ผ ์๊ฐ๋ ์ฌ๊ธฐ๊น์ง ํ๋๋ก ํ๊ณ , ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ , ๋ฉ์ธ ๋ค์ด์ผ๋ก๊ทธ์ Picture Control์ ์์ฑํฉ๋๋ค. ์ด Picture Control์ ์๋ก์ด ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ๋ถ์ผ ์์ญ์ผ๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ก์ด ๋ค์ด์ผ๋ก๊ทธ์ UI ์ปจํธ๋กค๋ค์ ๋ฐฐ์นํ๋ฉด ๋์ ๋๋ค.
์คํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค. ์๋ก์ด ๋ค์ด์ผ๋ก๊ทธ์ ํฌ๊ธฐ๊ฐ Picture Control๋ณด๋ค ํฌ๋ฉด ์คํฌ๋กค๋ฐ๊ฐ ์์ฑ๋๊ณ , ์์ผ๋ฉด ์คํฌ๋กค๋ฐ๋ ์์ฑ๋์ง ์์ต๋๋ค.
๋ฐ๋ผ ํ๊ธฐ
์์ ์ฝ๋๋ ๋ณธ๋ฌธ ํ๋จ์ ์ฒจ๋ถ๋์ด ์์ต๋๋ค. ์ค์ํ ๋ถ๋ถ๋ง ์ค๋ช
ํ๊ณ , ์์ธํ ๋ด์ฉ์ ์ฒจ๋ถ๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
Main Dialog์ Picture Control์ ๋ฐฐ์นํฉ๋๋ค.
๋ฆฌ์์ค ํธ์ง๊ธฐ์์ Dialog๋ฅผ ํ๋ ์์ฑํฉ๋๋ค. Dialog์ ๋ ๊ฐ์ง ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค.
- Border: NONE
- Style: Child
๊ทธ๋ฆฌ๊ณ ์ถ๊ฐํ UI ์ปจํธ๋กค๋ค์ ๋ฐฐ์นํฉ๋๋ค. ์๋๋ ์์๋ก ์ถ๊ฐํ ๋ชจ์ต์ ๋๋ค.
์๋ก ์ถ๊ฐํ Dialog์ ํด๋์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ํด๋์ค ์ถ๊ฐ ์ CDialogEx๊ฐ ์๋ CFormView๋ฅผ ๊ธฐ๋ณธ ํด๋์ค๋ก ์ ํํด์ผ ํฉ๋๋ค. Visual Studio 2017์ ๊ฒฝ์ฐ CFormView๊ฐ ์ฌ๋ผ์ก๋๊ตฐ์. ์ง์ ์ ๋ ฅ์ ํ ์ ์์ผ๋ CDialogEx๋ก ์์ฑํ๊ณ , ์ง์ CDialogEx๋ฅผ CFormView๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์์ ์์๋ CFormView๋ฅผ ์์๋ฐ๋ CMyForm ํด๋์ค๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ํจ์๋ก Create์ OnInitialUpdate๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
#pragma once
// CMyForm ๋ํ ์์
class CMyForm : public CFormView
{
DECLARE_DYNAMIC(CMyForm)
public:
CMyForm();
CMyForm(UINT nIDTemplate);
virtual ~CMyForm();
// ๋ํ ์์ ๋ฐ์ดํฐ์
๋๋ค.
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_FORM_MYFORM };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ์ง์์
๋๋ค.
DECLARE_MESSAGE_MAP()
public:
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
virtual void OnInitialUpdate();
};
๋ค์์ผ๋ก Main Dialog ํค๋์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.
#pragma once
#include "CMyForm.h"
// CExamFormAttachDialogDlg ๋ํ ์์
class CExamFormAttachDialogDlg : public CDialogEx
{
// ์์ฑ์
๋๋ค.
public:
CExamFormAttachDialogDlg(CWnd* pParent = nullptr); // ํ์ค ์์ฑ์์
๋๋ค.
// ๋ํ ์์ ๋ฐ์ดํฐ์
๋๋ค.
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_EXAMFORMATTACHDIALOG_DIALOG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ์ง์์
๋๋ค.
CMyForm *m_pForm; // ์๋ก ์ถ๊ฐํ Dialog ๊ฐ์ฒด
void AllocForm(); // Picture Control์ Dialog๋ฅผ ์ถ๊ฐํ๋ ํจ์
// ๊ตฌํ์
๋๋ค.
protected:
HICON m_hIcon;
// ์์ฑ๋ ๋ฉ์์ง ๋งต ํจ์
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
};
๋ง์ง๋ง์ผ๋ก AllocForm() ํจ์์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํฉ๋๋ค. Picture Control ์์ญ์ ์๋ก์ด ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ์ถ๊ฐํ๊ณ , Picture Control์ ์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค.
void CExamFormAttachDialogDlg::AllocForm()
{
CCreateContext context;
ZeroMemory(&context, sizeof(context));
CRect rectOfPanelArea;
GetDlgItem(IDC_STATIC_RECT)->GetWindowRect(&rectOfPanelArea);
ScreenToClient(&rectOfPanelArea);
m_pForm = new CMyForm();
m_pForm->Create(NULL, NULL, WS_CHILD | WS_VSCROLL | WS_HSCROLL, rectOfPanelArea, this, IDD_FORM_MYFORM, &context);
m_pForm->OnInitialUpdate();
m_pForm->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_RECT)->DestroyWindow();
}
์๊ฐ๋ณด๋ค ๊ฐ๋จํ์ฃ ? ์ด ์์ฉ ๋ฐฉ๋ฒ์ ํ์ฉํ๋ฉด MFC์ ๊ตฌ๋ฅ๋ค๋ฆฌ Tab Control์ ๋์ ํ์ฌ ์์ Form Changing์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ๋ ์ถํ์ ์๊ฐํ๋๋ก ํ๊ฒ ์ต๋๋ค.
'Programming > MFC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[MFC] Dynamic Layout ์ ์ฉํ์ฌ ์ปจํธ๋กค Resizingํ๊ธฐ(์์ ํฌํจ)
[MFC] Dynamic Layout ์ ์ฉํ์ฌ ์ปจํธ๋กค Resizingํ๊ธฐ(์์ ํฌํจ)
2020.05.16 -
[MFC] Tab Control์ ์ฌ์ฉํ์ง ์๊ณ ์ฌ๋ฌ Form ์ค์์นญํ๊ธฐ(์์ ํฌํจ)
[MFC] Tab Control์ ์ฌ์ฉํ์ง ์๊ณ ์ฌ๋ฌ Form ์ค์์นญํ๊ธฐ(์์ ํฌํจ)
2019.09.09 -
[MFC] ์์ ์ ์ค๋ ๋ ์์ฑ๊ณผ ํด์ ์ฌ์ฉ ๋ฐฉ๋ฒ (์์ ์ฒจ๋ถ)
[MFC] ์์ ์ ์ค๋ ๋ ์์ฑ๊ณผ ํด์ ์ฌ์ฉ ๋ฐฉ๋ฒ (์์ ์ฒจ๋ถ)
2019.09.03 -
[MFC] ์์ ์ ์ค๋ ๋์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ค๋ ๋
[MFC] ์์ ์ ์ค๋ ๋์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ค๋ ๋
2019.08.31