[Button Control] λμ μμ±
μ§λ ν¬μ€ν μμλ Button Control μ μ μ μμ±νλ λ°©λ²μ μ€λͺ νμμ΅λλ€.
μ΄λ²μλ λμ μΌλ‘ μμ±νκ³ Button Event λ₯Ό μ΄λ»κ² μ°κ²°μν€λμ§ μ€λͺ νκ² μ΅λλ€.
λ§ν¬ : Button Control μ μ μμ±
μμΌλ‘ μ€λͺ λ릴 λ΄μ©μ, λ€μ― κ°μ λ²νΌμ μμ±νλ μμ λ₯Ό 보μ¬λ릴 κ²μ λλ€.
1. Main Dialog Header μ λ²νΌ κ°μμ κ° λ²νΌμ ID λ₯Ό μ μν©λλ€.
#define MAX_BTN 5
#define BTN_ID_1 10001
#define BTN_ID_2 10002
#define BTN_ID_3 10003
#define BTN_ID_4 10004
#define BTN_ID_5 10005
2. CButton κ°μ²΄λ₯Ό μ μΈν©λλ€. 볡μμ λ²νΌμ κ°λ³μ μΌλ‘ λμ ν λΉμ νκΈ°μν΄ 2μ€ ν¬μΈν°λ‘ μ μΈνμ΅λλ€.
public :
CButton** m_pBtn;
3. Class Wizard λ₯Ό μ€ννμ¬ 'OnDestroy()' ν¨μλ₯Ό μΆκ°ν©λλ€.
μλμ° μ’ λ£ μ λμ ν λΉλ λ²νΌλ€μ ν΄μ μν€κΈ° μν΄ μΆκ°νλ μμ μ λλ€.
λν, λ²νΌμ΄ ν΄λ¦λμ λ λ°μν μ΄λ²€νΈ ν¨μ 'OnButtonEvent(UINT ID)'λ₯Ό μ μν©λλ€.
public :
afx_msg void OnDestroy();
afx_msg void OnButtonEvent(UINT ID);
4. Main Dialog μ μμ±μμ CButton κ°μ²΄λ₯Ό NULL Pointer λ‘ μ΄κΈ°ν ν©λλ€.
CMyButtonDlg::CMyButtonDlg(CWnd* pParent /*NULL*/)
: CDialogEx(IDD_MYBUTTON_DIALOG, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pBtn = NULL;
}
5. 'OnInitDialog()'μ λμ μμ± μ½λλ₯Ό μΆκ°ν©λλ€.
BOOL CMyButtonDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_pBtn = new CButton*[MAX_BTN];
CString caption = _T("");
for (int i = 0; i < MAX_BTN; i++)
{
m_pBtn[i] = new CButton();
caption.Format(_T("%d Button"), i);
m_pBtn[i]->Create(caption, WS_CHILD | WS_VISIBLE |
BS_PUSHBUTTON, CRect(10,10+(50*i),100,50+(50*i)), this, BTN_ID_1+i);
}
return TRUE; // return TRUE unless you set the focus to a control
}
6. 'OnDestroy()'μλ λμ μμ±λ 컨νΈλ‘€μ ν΄μ νλ μ½λλ₯Ό μΆκ°ν©λλ€.
2μ€ ν¬μΈν°λ‘ μμ±νμμΌλ―λ‘, 2μ€μΌλ‘ ν΄μ ν΄μΌ λ©λͺ¨λ¦¬ λμκ° λ°μνμ§ μμ΅λλ€.
void CMyButtonDlg::OnDestroy()
{
CDialogEx::OnDestroy();
if (m_pBtn != NULL)
{
for (int i = 0; i < MAX_BTN; i++)
{
delete m_pBtn[i];
m_pBtn[i] = NULL;
}
delete[] m_pBtn;
}
}
1~6 λ² κΉμ§κ° λμ μΌλ‘ λ²νΌμ μμ±νκ³ ν΄μ νλ λΆλΆμ΄μμ΅λλ€. μ΄μ λ²νΌμ λ§λ€μμΌλ ν΄λ¦ μ΄λ²€νΈλ λμνλλ‘ λ§λ€μ΄μΌκ² μ§μ?
7. Message Map μ λμ μμ±λ λ²νΌλ€κ³Ό μ΄λ²€νΈ ν¨μλ₯Ό λ±λ‘ν©λλ€.
BEGIN_MESSAGE_MAP(CMyButtonDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_DESTROY()
ON_COMMAND_RANGE(BTN_ID_1, BTN_ID_5, OnButtonEvent)
END_MESSAGE_MAP()
8. 'OnButtonEvent(UINT ID)' μλ λ€μκ³Ό κ°μ΄ μ½λλ₯Ό μΆκ°ν©λλ€.
λ²νΌ ν΄λ¦ μ λͺ λ²μ§Έ λ²νΌμ΄ λλ Έλμ§ λ©μμ§ μ°½μ΄ λ°μνλλ‘ μ½λλ₯Ό μμ±νμ΅λλ€.
void CMyButtonDlg::OnButtonEvent(UINT ID)
{
CString msg = _T("");
msg.Format(_T("%d Button Click!"), ID - BTN_ID_1);
AfxMessageBox(msg);
}
9. μ€ννλ©΄ λ€μκ³Ό κ°μ΄ λμν©λλ€.
μμΈν μ½λλ 첨λΆλ μμ λ₯Ό νμΈν΄ μ£ΌμΈμ.
'Programming > MFC' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[GDI] Part 2. μλν¨μ #2 (0) | 2019.01.27 |
---|---|
[GDI] Part 2. μλν¨μ #1 (0) | 2019.01.27 |
[GDI] Part 1. GDI κ°λ (0) | 2019.01.27 |
[MFC] Custom Button λ§λ€κΈ° (5) | 2019.01.16 |
[MFC] Custom Button μκ° (0) | 2019.01.15 |
[Button Control] μ μ μμ± (0) | 2017.06.04 |
Dialog κΈ°λ° νλ‘μ νΈ μμ±νκΈ°. (0) | 2017.05.21 |
λκΈ
μ΄ κΈ κ³΅μ νκΈ°
-
ꡬλ
νκΈ°
ꡬλ νκΈ°
-
μΉ΄μΉ΄μ€ν‘
μΉ΄μΉ΄μ€ν‘
-
λΌμΈ
λΌμΈ
-
νΈμν°
νΈμν°
-
Facebook
Facebook
-
μΉ΄μΉ΄μ€μ€ν 리
μΉ΄μΉ΄μ€μ€ν 리
-
λ°΄λ
λ°΄λ
-
λ€μ΄λ² λΈλ‘κ·Έ
λ€μ΄λ² λΈλ‘κ·Έ
-
Pocket
Pocket
-
Evernote
Evernote
λ€λ₯Έ κΈ
-
[MFC] Custom Button λ§λ€κΈ°
[MFC] Custom Button λ§λ€κΈ°
2019.01.16 -
[MFC] Custom Button μκ°
[MFC] Custom Button μκ°
2019.01.15 -
[Button Control] μ μ μμ±
[Button Control] μ μ μμ±
2017.06.04 -
Dialog κΈ°λ° νλ‘μ νΈ μμ±νκΈ°.
Dialog κΈ°λ° νλ‘μ νΈ μμ±νκΈ°.
2017.05.21