150 likes | 385 Views
List Box. Control 와 변수의 연결 Value : control 의 값만을 바꿀 수 있음 Control : class 를 이용하여 control 의 여러가지 기능을 제어 예 : Control (ListBox) 변수 (CListBox class) 와 연결. List Box 와 Control 형 멤버변수 연결. CListBox. CListBox 의 자주 사용되는 멤버변수 GetCount() : 컨트롤에 들어있는 문자열의 개수
E N D
List Box • Control 와 변수의 연결 • Value : control의 값만을 바꿀 수 있음 • Control : class를 이용하여 control의 여러가지 기능을 제어 • 예: Control (ListBox) 변수 (CListBox class)와 연결 List Box와 Control 형 멤버변수 연결
CListBox • CListBox의 자주 사용되는 멤버변수 • GetCount() : 컨트롤에 들어있는 문자열의 개수 • GetCurSel : 현재 선택되어 있는 문자열의 인덱스 (0부터 시작) • SetCurSel(N) : N번째 인덱스의 문자열을 선택 (N은 0부터 시작) a = m_ctrleft.GetCount(); b = m_ctrleft.GetCurSel(); m_ctrleft.SetCurSel(3);
CListBox • CListBox의 자주 사용되는 멤버변수 • AddString : 문자열을 제일 뒤에 추가함 • InsertString(Index,문자열) : 지정된 인덱스 에 문자열 추가 • DeleteString(Index) : 지정된 인덱스의 문자열 삭제 • ResetContent : 모든 문자열을 삭제 m_ctrleft.AddString(“kkk”); m_ctrleft.InsertString(3,“bbb”); m_ctfleft.DeleteString(1); ?
다음 프로그램을 실행시키면 어떻게 되나? m_ctrleft.AddString("1"); m_ctrleft.AddString("2"); m_ctrleft.AddString("3"); m_ctrleft.AddString("4"); m_ctrleft.AddString("5"); m_ctrleft.DeleteString(1); m_ctrleft.DeleteString(1); m_ctrleft.AddString("aaa"); m_ctrleft.SetCurSel(2); a = m_ctrleft.GetCount();
ListBox • Sort Option • Resource View에서 Dialog Box를 선택한 후 오른쪽 click 또는 ALT-Enter Key 입력 • List Box Properties를 지정 가능 • sort option을 해제해야 sorting 되지 않고 표시됨 aaa ccc bbb aaa bbb ccc m_strleft.AddString(“aaa”); m_strleft.AddString(“ccc”); m_strleft.AddString(“bbb”); sort 안 사용 sort 사용
List Box 사용 예제 1 2 3 … 99 100
List Box의 제어 • Up Button을 누르면 select된 것이 한칸 위로 올라감. Down Button을 누르면 select 된 것이 한칸 아래로 감. BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); m_ctrlist.AddString("aaa"); m_ctrlist.AddString("bbb"); m_ctrlist.AddString("ccc"); m_ctrlist.AddString("rrr"); m_ctrlist.AddString("eee"); m_ctrlist.SetCurSel(2); return TRUE; }
Up & Down Button • Up Button을 누르면 selected 된 것을 한 칸 올림 • Down Button routine을 완성하시오. void CTestDlg::OnUp() { int CurSel; CurSel = m_ctrlist.GetCurSel(); if ( CurSel >= 1 ) m_ctrlist.SetCurSel(CurSel - 1); }
lecture131 program • 두 개의 List Box 사용 • List Box의 Item을 double click하면 왼쪽에서 오른쪽으로, 오른쪽에서 왼쪽으로 이동 • OnInitDialog IDC_LEFTLIST IDC_RIGHTLIST m_ctrleft (control, CListBox) m_strleft(value, Cstring) m_ctrright m_strright BOOL CListDlg::OnInitDialog() { int i; CString strlist[] = {"aaa","bbb","ccc","rrr","eee"}; for ( i = 0 ; i < 5 ; ++i) { m_ctrleft.AddString(strlist[i]); } }
lecture131 program • Double Click Message : BN_DBLCLK void CListDlg::OnDblclkLeftlist() { int nSel = m_ctrleft.GetCurSel(); if (nSel >= 0 ) { UpdateData(TRUE); m_ctrleft.DeleteString(nSel); m_ctrright.AddString(m_strleft); } } void CListDlg::OnDblclkRightlist() { // TODO: Add your control notification handler code here int nSel = m_ctrright.GetCurSel(); if (nSel >= 0 ) { UpdateData(TRUE); m_ctrright.DeleteString(nSel); m_ctrleft.AddString(m_strright); } }
lecture132 program • Up button을 누르면 Select 된 것이 올라가고, Down button을 누르면 Select 된 것이 내려감 • 오른쪽 화살표 : 왼쪽 Item이 오른쪽으로 이동함 • 왼쪽 화살표 : 오른쪽 Edit box의 내용이 왼쪽 List Box로 이동함 m_ctrleft m_strleft m_str
lecture132 program • Up & Down Event (BN_CLICKED) void CListDlg::OnUp() { int CurSel; CurSel = m_ctrleft.GetCurSel(); if ( CurSel >= 1 ) m_ctrleft.SetCurSel(CurSel - 1); } void CListDlg::OnDown() { }
lecture132 program • Right Button Event • Left Button Event ? void CListDlg::OnRight() { int CurSel; UpdateData(TRUE); m_str = m_strleft; CurSel = m_ctrleft.GetCurSel(); m_ctrleft.DeleteString(CurSel); if ( CurSel < m_ctrleft.GetCount() ) m_ctrleft.SetCurSel(CurSel); else m_ctrleft.SetCurSel(CurSel-1); UpdateData(FALSE); }