간단한 To-Do List 만들기

위 와 같이 제목+내용을 버튼클릭 할 시 저장되며, LIST에 한 줄씩 쌓이도록 설계함. 또한, LIST의 아이템을 더블클릭할 시 세부적으로 내용이 출력되도록 설계

설계와 비슷하게 GUI를 배치했다. 변수 설정은 아래와 같다.

public:
CEdit m_Edit_Title; // 제목
CEdit m_Edit_Content; // 내용
CListBox m_listBox; // 리스트 박스
afx_msg void OnBnClickedSubmitBtn(); // 버튼클릭
void CMFCToDoListDlg::OnBnClickedSubmitBtn()
{
// 제목, 내용 텍스트 저장
CString title, content;
m_Edit_Title.GetWindowTextW(title);
m_Edit_Content.GetWindowTextW(content);
// 예외 처리
if (title.IsEmpty() || content.IsEmpty()) {
MessageBox(L"제목 혹은 내용을 입력하세요!", L"오류 발생", MB_OK);
return;
}
// 제목, 컨텐츠 하나로 합치기 format
CString listItem;
listItem.Format(_T("%s | %s"), title, content);
// 리스트 박스에 추가
m_listBox.AddString(listItem);
// 제목, 내용 초기화
m_Edit_Title.SetWindowTextW(_T(""));
m_Edit_Content.SetWindowTextW(_T(""));
}
앞 서 했던 것과 비슷하므로 자세한 내용은 생략.

리스트 박스에 아이템이 추가된다.

세부 사항 GUI를 만들기 위해서 아래의 세팅 과정을 거친다.
또한, 모달창을 띄우기 위한 과정을 정리하면 아래와 같다.
public:
// A 다이얼로그에서 전달 받을 값
CString m_Detail_Title;
CString m_Detail_Content;
// Edit Control과 연결할 변수
CEdit m_Edit_Title;
CEdit m_Edit_Content;
// 초기화
virtual BOOL OnInitDialog();
void CDetailDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_TITLE, m_Edit_Title); // 제목 Edit Control과 연결
DDX_Control(pDX, IDC_EDIT_CONTENT, m_Edit_Content); // 내용 Edit Control과 연결
}
// CDetailDlg 초기화
BOOL CDetailDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// A 다이얼로그에서 받은 데이터를 Edit Control에 출력
m_Edit_Title.SetWindowText(m_Detail_Title);
m_Edit_Content.SetWindowText(m_Detail_Content);
return TRUE;
}
void CMFCToDoListDlg::OnLClickList()
{
int sel = m_listBox.GetCurSel(); // 현재 클릭된 아이템 인덱스
if (sel == LB_ERR) return; // 반환 값 없을 시 리턴
CString clickItem;
m_listBox.GetText(sel, clickItem); // 클릭 인덱스의 아이템 가져오기
int sperator = clickItem.Find(_T(" | ")); // 제목, 내용 분리
if (sperator == 1) return;
CString title = clickItem.Left(sperator); // 문자열의 왼쪽이 제목
CString content = clickItem.Mid(sperator+3);
CDetailDlg dlg;
dlg.m_Detail_Title = title;
dlg.m_Detail_Content = content;
dlg.DoModal(); // 모달창 GUI를 실행
}

다음에는 이것을 수정했을 경우, List에 반영되도록 만들 계획이다.