网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
用树型控制展现Win95注册库
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
子关键字,是在用户用鼠标单击了+或-按钮或者双击了树项关键字名的操作响应过程中动态完成的。由于树型控制的功能极强,所以几乎没有必要做管理树型控制的工作(例如,视图滚动等),只需编写出响应上述操作的代码就可以了。

  VOID CWRegTreeCtrlDlg::OnDblclkTreereg(NMHDR*

   pNMHDR, LRESULT* pResult)

  { HTREEITEM hIT =

  m_TREECtrlREG.GetSelectedItem( );

  if( hCurItem != hIT) { hCurItem = hIT; }

  SelectItemTr = m_TREECtrlREG.GetItemText(hIT);

  //1.单击了“<我的电脑>顶层”后的处理--交树型控制处理

  CString MainName ,strTemp0,strTemp1;

  strTemp0.LoadString(IDS_STRINGPROMPT0);

  strTemp1.LoadString(IDS_STRINGPROMPT1);

  if( hIT == hTreeItem[0])

  {//将初值放到其它各个控制中

  

  //路径,顶层句柄初始化

  lpRegPath=_T("");

  hKeyRoot = 0;

  * pResult=0;

  return;

  }

  //2.单击了六个主层关键字名之一后的处理

  if( OnIsMianItem(hIT) )

  {//主层位置是否改变

  if(m_TOPPOSOUT != SelectItemTr)

  {m_TOPPOSOUT = _T("");

  m_TOPPOSOUT = SelectItemTr;

  }

  //将初值放到其它各个控制中

  

  //路径,顶层句柄初始化

  lpRegPath=_T(""); hKeyRoot = 0;

  //新选择的关键字名

  m_CURKEYNAME=SelectItemTr;

  //调整访问注册库句柄值hKeyRoot

  OnMainKeyHandle(hIT,hKeyRoot);

  HTREEITEM hChild =

  m_TREECtrlREG.GetChildItem(hIT);

  //已经展开过,则交树型控制自己反转

  if( hChild != NULL )

  { EnumValueName(hKeyRoot);//显示关联值名

  * pResult=0;

  return ;

  }

  UpdateData(FALSE);

  //没有展开过,则通过访问注册库动态展开子关键字

  QueryKeyInfo ( hKeyRoot );

  * pResult=0;

  return ;

  }

  //3.子层情况

  //3.1 选择的名字是重复选择

  if(

   SelectItemTr==lpRegPath.Right(SelectItemTr.GetLength( )))

  { * pResult=0; return; }

  //3.2 按照选择的关键字名在树上找到它的父关键字的全路径名字(不包含被选择的关键字的名字)。如果不等于lpRegPath,则要修改lpRegPath

  CString strParent,strPath;

  strParent = SelectItemTr;

  //在树上形成该项目的全路径名字,反复往上爬

  while( ! OnIsMianItem(hIT) )//是否到达主层位置

  {hIT = m_TREECtrlREG.GetParentItem(hIT);

  strParent=

  (LPCTSTR)m_TREECtrlREG.GetItemText(hIT);

  if(OnIsMianItem(hIT) )

  {

  int pos;

  if((pos=strPath.ReverseFind(''\\'')) != -1)

  {CString strTemp00;

  strTemp00=strPath.Left(strPath.GetLength()-1);

  strPath=strTemp00;

  break;

  }

  }

  else//左加上路径

  {CString strTemp99;

  strTemp99.Format(_T("%s\\%s"),strParent,strPath);

  strPath=strTemp99;

  }

  }

  //主关键字的位置是否改变

  MainName=m_TREECtrlREG.GetItemText(hIT);

  if( MainName != m_TOPPOSOUT)

  { m_TOPPOSOUT = _T("");

  m_TOPPOSOUT = MainName;

  //调整访问注册库句柄值hKeyRoot

  OnMainKeyHandle(hIT,hKeyRoot);

  }

  if( strPath != lpRegPath ) lpRegPath = strPath;

  // 将初值放到其它各个控制中

  

  //是否要刷新

  HTREEITEM hChild3 = m_TREECtrlREG.GetChildItem( hCurItem );

  HTREEITEM hTemp3;

  while (hChild3 != NULL)

  { hTemp3 = m_TREECtr
  • 下一篇资讯: VC制作超联接控件
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号