2009. 8. 27. 15:34
Programming/MFC
Resource Editor
- Options : Has Buttons, Has Lines, Lines At Root, Edit Label
- DDX : CTreeCtrl m_treeCtrl
OnInitDialog
BOOL CEx14Dlg::OnInitDialog() { CDialog::OnInitDialog(); // 시스템 메뉴에 "정보..." 메뉴 항목을 추가합니다. // IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는 // 프레임워크가 이 작업을 자동으로 수행합니다. SetIcon(m_hIcon, TRUE); // 큰 아이콘을 설정합니다. SetIcon(m_hIcon, FALSE); // 작은 아이콘을 설정합니다. // TODO: 여기에 추가 초기화 작업을 추가합니다. TV_INSERTSTRUCT tvstruct; tvstruct.hParent = 0; tvstruct.hInsertAfter = TVI_LAST; tvstruct.item.pszText = "Root Tree"; tvstruct.item.mask = TVIF_TEXT; m_treeCtrl.InsertItem(&tvstruct); return TRUE; // 컨트롤에 대한 포커스를 설정하지 않을 경우 TRUE를 반환합니다. }
TVN_SELCHANGED
void CEx14Dlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); HTREEITEM hCurItem = pNMTreeView->itemNew.hItem; *pResult = 0; }
Add, Delete
void CEx14Dlg::OnBnClickedAdd() { HTREEITEM hParent; TV_INSERTSTRUCT tv_is; hParent = m_treeCtrl.GetSelectedItem(); tv_is.hParent = hParent; tv_is.hInsertAfter = TVI_LAST; tv_is.item.mask = TVIF_TEXT; tv_is.item.pszText = _T("leaf Tree"); m_treeCtrl.InsertItem(&tv_is); m_treeCtrl.Expand(hParent, TVE_EXPAND); m_treeCtrl.Invalidate(); } void CEx14Dlg::OnBnClickedDelete() { HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); if (AfxMessageBox("정말 삭제할까요?", MB_YESNO) == IDYES) m_treeCtrl.DeleteItem(hItem); } void CEx14Dlg::OnBnClickedUpdate() { HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); m_treeCtrl.SetItemText(hItem, "Updated"); } void CEx14Dlg::OnTvnEndlabeleditTree1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR); // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); CString strItemText = pTVDispInfo->item.pszText; m_treeCtrl.SetItemText(hItem, strItemText); *pResult = 0; }