티스토리 뷰
오늘은 MFC에서 List box를 사용해서 체크 박스를 여러 개 만드는 예제를 만들어 보겠습니다.
MFC가 도구 상자에서 제공하는
Check box를 사용하지않고 List box를 사용해 만들어 보겠습니다.
List box를 사용하게 되면 데이터 관리도 편하게 할 수 있고
더 편하게 코딩 하실 수 있으실겁니다~!
먼저 리소스 뷰에 Dialog로 가서 다이얼로그를 편집해보겠습니다.
글자가 작으면 보기 불편하니 속성창 Font에 글자 크기나 폰트를 사용자가 원하는 대로 바꾸어줍니다.
도구 상자에서 ListBox를 가져와 다이얼로그에 그려줍니다.
그리고 여기서 중요한 게 subclassing기능을 사용할 것이기 때문에
ListBox의 속성 창에 가서 아래 사진 처럼
Has strings를 true로 바꿔주시고
Owner draw 또한 fixed로 바꾸어줍니다.

그리고 listbox ID는 IDC_LIST1로 바꾸지 않고 초기 상태를 유지시켜 사용했습니다.
그다음 이제 헤더파일의 Dlg.h에 가서
아래와 같이 private로
CCheckListBox 변수인 m_check_list를 추가시켜줍니다.
private:
CCheckListBox m_check_list;
|
cs |
소스 파일에 dlg.cpp로 가줍니다.
그리고 OnInitDialog()에 가서
m_check_list.SubclassDlgItem(IDC_LIST1, this); 코드를 추가시켜줍니다.
방금 만들었던 m_check_list와 다이얼로그의 listbox ID인 IDC_LIST1을
서로 연결시켜주는 코드입니다.
다음으로 리스트 박스에 순서대로 원하는 데이터를 넣어주기 위해
m_check_list.InsertString(i, L"메뉴"); 를 원하는 만큼 추가시켜줍니다.
BOOL CCheckBoxDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
m_check_list.SubclassDlgItem(IDC_LIST1, this); // IDC_LIST1 과 m_check_list를 연결하겠다.
m_check_list.InsertString(0, L"치킨");
m_check_list.InsertString(1, L"피자");
m_check_list.InsertString(2, L"햄버거");
m_check_list.InsertString(3, L"떡볶이");
return TRUE;
}
|
cs |
여기까지 코드는 완성되었고 실행시켜주시면 아래 사진처럼
리스트 박스에 차례 대로 정렬돼서 나오게됩니다.

그냥 도구 상자에 체크 박스를 가져와서 쓰면
하나하나 ID를 부여해야하고 위치도 잡아줘야해서 매우 불편합니다.
이런 점을 해결할 수 있는게 이 방법이라고 생각합니다.

메뉴 옆 체크 상자에 체크 또한 가능합니다.
마지막으로 더 많은 메뉴를 넣는 상황이 생길 수 있으니
코드를 좀 더 편리하게 바꾸어 주겠습니다.
m_check_list.InsertString(0, L"치킨");
m_check_list.InsertString(1, L"피자");
m_check_list.InsertString(2, L"햄버거");
m_check_list.InsertString(3, L"떡볶이");
아까 적었던 이 코드를
wchar_t* menu_list[4]{
L"치킨" , L"피자" , L"햄버거" , L"떡볶이"
};
for (int i = 0; i < 4; i++) {
m_check_list.InsertString(i, menu_list [i]);
}
이렇게 메뉴 배열을 만들고
for문을 사용해 리스트 박스에 넣어 주시면
더 많은 데이터들을 편하게 관리할 수 있고 리스트 박스에 삽입할 수 있습니다. :)
'프로그래밍 > MFC 프로그래밍' 카테고리의 다른 글
MFC checkbox 체크여부 확인 (0) | 2021.06.13 |
---|---|
MFC 이미지 크기 조절, StretchBlt (0) | 2020.11.29 |
[MFC C++] - 열감지 이미지 만들어보기 (0) | 2020.01.21 |
[MFC C++] 이미지 RGB 분리 (2) | 2020.01.19 |
MFC 이미지 회전시키기(각도 조절) (2) | 2020.01.17 |