카테고리 없음

체크박스 동적 생성

에어버스 2019. 5. 17. 12:48

체크박스 동적 생성

1. 5행에서 멤버변수로 선언
2. OnCreate() 에서 13행 처럼 Create() 로 생성, 이때 지정한 ID 값으로 메시지 처리한다.
3. 메시지 처리를 위해 OnCommand() 에서 wParam 으로 체크박스ID 인지 구분해서 처리하면 된다.

메시지 처리기에서 23행을 주석처리하면 체크표시 안되므로 SetCheck() 를 해줘야 체크 표시된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class CMFCApplication1View : public CView
{
...
private:
        CButton m_btn;
}
int CMFCApplication1View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;
 
    // TODO:  여기에 특수화된 작성 코드를 추가합니다.    
    m_btn.Create(TEXT("안녕"), WS_CHILD | WS_VISIBLE | BS_CHECKBOX, CRect(101010030), this13);    
}
 
BOOL CMFCApplication1View::OnCommand(WPARAM wParam, LPARAM lParam)
{
    // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
    if (wParam == 13)
    {
        int b = m_btn.GetCheck();
        b == BST_CHECKED ? b = BST_UNCHECKED : b = BST_CHECKED;
        m_btn.SetCheck(b);
        CString str;
        str.Format(TEXT("저는 %d번 버튼입니다.~~ ^^;"), wParam);
        AfxMessageBox(str);
    }
    return CView::OnCommand(wParam, lParam);
}
cs

실행결과>