龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

支持数据项查找功能的CTreeCtrl类(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
{ item= GetNextSiblingItem(GetParentItem(item)); } } else { item = GetNextSiblingItem(item); if(item==NULL) return NULL; } } return item; } 四、示例程序 我们创建一个对
{
item= GetNextSiblingItem(GetParentItem(item));
}
}
else
{
item = GetNextSiblingItem(item);
if(item==NULL)
return NULL;
}
}

return item;

 
  四、示例程序

  我们创建一个对话框程序。

  (1) 通过“FILE->NEW->PROJECTS->MFC AppWizard(EXE)”建立名为MyTreeCtr的
工程,在建立过程中选择基于对话框(Dialog based)的应用;

  (2) 将对话框中的默认按钮控件“确定”删除,并将所有对话框&&属性中的Language域设置为Chinese(P.R.C.),以使应用程序支持中文;在对话框窗口中添加树控制对象(TREE CONTROL),并设置一个按钮“新建数据项”,其对应标识分别如下:

控制名称       标题名称       标识符号        对应成员变量或&&函数
树控制                    IDC_MYTREE       CTreeCtrl m_ctrlTree
按钮         新建数据项      IDC_ NEWITEM      OnNewitem()
树控制项目                              HTREEITEM m_hInsertItem


  (3) 处理树控制的TVN _BEGINLABELEDIT和TVN _ENDLABELEDIT消息,CMyTreeCtrlDlg增加OnBeginlabeleditMytree和OnEndlabeleditMytree两个处理&&函数。

void CMyTreeCtrlDlg::OnBeginlabeleditMytree(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TOD Add your control notification handler code here
m_ctrlTree.GetEditControl()->LimitText(16);
*pResult = 0;
}

void CMyTreeCtrlDlg::OnEndlabeleditMytree(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TOD Add your control notification handler code here
CString strName;
m_ctrlTree.GetEditControl()->GetWindowText(strName);
if(strName.IsEmpty())
{
AfxMessageBox(_T("数据项名称不能为空,请重新输入!"));
CEdit* pEdit = m_ctrlTree.EditLabel(m_hInsertItem);
ASSERT(pEdit != NULL);
return;
}

HTREEITEM hRoot = m_ctrlTree.GetRootItem();
HTREEITEM hFind = m_ctrlTree.FindItem(hRoot,strName);
if(hFind==NULL)
{
char msg[64]={0};
sprintf(msg,"新添加数据项名称 %s ,确定吗?",strName);
if(MessageBox(msg,_T("提示"),MB_OKCANCEL) == IDOK)
*pResult = TRUE;
else
m_ctrlTree.DeleteItem(m_hInsertItem);
}
else
{
AfxMessageBox(_T("该数据项已存在,请重新输入!"));
CEdit* pEdit = m_ctrlTree.EditLabel(m_hInsertItem);
ASSERT(pEdit != NULL);
*pResult = 0;
}
}

  五、结束语

  CTreeCtrlEx类的FindItem&&函数实现数据项查找的功能。测试程序在Win98+VC6.0环境下测试通过。

精彩图集

赞助商链接