mfc_ListBox - 8BitsCoding/RobotMentor GitHub Wiki
ListBox ๊ธฐ์ด
EditBox Text ์ฝ์ด์ค๊ธฐ
void CMFCApplication1Dlg::OnBnClickedAddBtn()
{
CString str;
GetDlgItemText(IDC_EDIT_BOX, str);
}
ListBox ๋ณ์๋ก ์ง์ ํ๊ธฐ
ListBox ์ฐํด๋ฆญ -> ๋ณ์ ์ถ๊ฐ -> ์ด๋ฆ์ง์
์ด๋ ๊ฒ ์ฌ์ฉํ๋ ์ด์ ๋ ListBox์ ๊ฒฝ์ฐ ๊ธฐ๋ฅ์ด ๋ง๊ธฐ์ ๋จ์ GetDlgItemText, SetDlgItemText ๋ฑ์ ์ด์ฉํ๊ธฐ์๋ ๋ถ์กฑํ๊ธฐ ๋๋ฌธ.
void CMFCApplication1Dlg::OnBnClickedAddBtn()
{
CString str;
GetDlgItemText(IDC_EDIT_BOX, str);
m_data_list.AddString(str);
}
๊ทธ๋ฐ๋ฐ? ListBox์ ๋ค์ด๊ฐ๋ ๊ธ์๋ ์ ๋ ฌ์ด๋๊ณ ,
๋ด๊ฐ ์ด๋์ ์ถ๊ฐํ๋์ง ์๊ณ ์ถ๋ค๋ฉด??
void CMFCApplication1Dlg::OnBnClickedAddBtn()
{
CString str;
GetDlgItemText(IDC_EDIT_BOX, str);
int index = m_data_list.AddString(str);
m_data_list.SetCurSel(index);
}
์ถ๊ฐ์ ๋์์ ์ปค์๊ฐ ๋จ๊ฒ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ปค์์ ๋ฐ๋ผ์ EditBox์ ์ถ๋ ฅ์ ํด๋ณด์.
LBN_SELCHANGE ์ฌ ์ ์
void CMFCApplication1Dlg::OnLbnSelchangeDataList()
{
int index = m_data_list.GetCurSel();
if (index != LB_ERR) // LB_ERR : ListBox Error
{
CString str;
m_data_list.GetText(index, str);
SetDlgItemText(IDC_EDIT_BOX, str);
}
}
์ฌ๊ธฐ์ ๋ถํฐ ์ฌํ
๋ ๊ฐ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํด๋ณด์.
์ด๋ ๊ฒ๋ ํ์ง๋ง์
void CMFCApplication1Dlg::OnBnClickedAddBtn()
{
CString str, name_str;
GetDlgItemText(IDC_EDIT_BOX, name_str);
int age = GetDlgItemInt(IDC_AGE_EDIT);
str.Format(L"%s, %d", name_str, age);
int index = m_data_list.AddString(str);
m_data_list.SetCurSel(index);
}
void CMFCApplication1Dlg::OnLbnSelchangeDataList()
{
int index = m_data_list.GetCurSel();
if (index != LB_ERR) // LB_ERR : ListBox Error
{
CString str;
wchar_t temp[32];
int age;
m_data_list.GetText(index, str);
for(int i = 0; i < str.GetLength(); i++) {
if(str[i] == ',') {
temp[i] = 0;
SetDlgItemText(IDC_EDIT_BOX, temp);
age = _wtoi((const wchar_t *)str + i + 1);
SetDlgItemInt(IDC_AGE_EDIT, age);
} else {
temp[i] = str[i];
}
}
SetDlgItemText(IDC_EDIT_BOX, str);
}
}
๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ์๋ค!
// Dlg.h
struct FriendData
{
wchar_t name[24];
int age;
wchar_t phone[24];
};
void CMFCApplication1Dlg::OnBnClickedAddBtn()
{
CString str, name_str, phone_str;
GetDlgItemText(IDC_EDIT_BOX, name_str);
GetDlgItemText(IDC_PHONE_EDIT, phone_str);
int age = GetDlgItemInt(IDC_AGE_EDIT);
FriendData *p = new FriendData;
wcscpy_s(p->name, 24, name_str);
wcscpy_s(p->phone, 24, phone_str);
p->age = age;
str.Format(L"%s(%d)", name_str, age);
int index = m_data_list.AddString(str);
m_data_list.SetItemDataPtr(index, p); // ListBox์๋ pointer๋ฅผ ํ๋ ๊ธฐ๋กํ ์ ์๋ค.
m_data_list.SetCurSel(index);
}
void CMFCApplication1Dlg::OnLbnSelchangeDataList()
{
int index = m_data_list.GetCurSel();
if (index != LB_ERR) // LB_ERR : ListBox Error
{
FriendData *p = (FriendData *)m_data_list.GetItemDataPtr(index);
SetDlgItemText(IDC_EDIT_BOX, p->name);
SetDlgItemText(IDC_PHONE_EDIT, p->phone);
SetDlgItemInt(IDC_AGE_EDIT, p->age);
}
}
๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์??
void CMFCApplication1Dlg::OnBnClickedAddBtn()
{
CString str;
FriendData *p = new FriendData;
GetDlgItemText(IDC_EDIT_BOX, p->name, 24);
GetDlgItemText(IDC_PHONE_EDIT, p->phone, 24);
p->age = GetDlgItemInt(IDC_AGE_EDIT);
str.Format(L"%s(%d)", p->name, p->age);
int index = m_data_list.AddString(str);
m_data_list.SetItemDataPtr(index, p); // ListBox์๋ pointer๋ฅผ ํ๋ ๊ธฐ๋กํ ์ ์๋ค.
m_data_list.SetCurSel(index);
}
๋ง์ง๋ง์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํด์ !!
void CMFCApplication1Dlg::OnDestroy()
{
CDialogEX::OnDestroy();
int count = m_data_list.GetCount();
FriendData * p;
for( int i = 0; i < count; i++ ){
p = (FriendData*)m_data_list.GetItemDataPtr(i);
delete p;
}
m_data_list.ResetContent();
}