设为首页 加入收藏

TOP

用Visual C++操作SQL Server主从表(二)
2012-11-04 15:09:13 来源: 作者: 【 】 浏览:701
Tags:Visual 操作 SQL Server 主从
  三、列表视图的操作及事件处理

  说句实话,列表的属性参数很多,标准的、扩展的风格参数一大堆,看看那些英文文档,在其中苦苦搜寻,找一条自己需要的特性,其中的滋味别提了。还好我很有耐心:)熟练了就好了,都记住了一大半,还怕什么。列表控件显示数据,要用LVS_REPORT风格,比较好看,就像DataGrid一样。设置窗口风格需要用SetWindowLong这个API函数。这个函数是通用的。参数也一大堆。处理列表的单击事件即是处理消息NM_CLICK,处理选择改变时的事件即是处理LVN_ITEMCHANGED,不同的消息可能参数不同,需区别对待。

void CDagView::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
 // TODO: Add your control notification handler code here
 CListCtrl& refListCtrl=GetListCtrl();
 if(pNMListView->uNewState&LVIS_SELECTED)
 …//选取列表项时,事件触发
 pResult=0;
}

  同样的方法处理单击,双击等事件,不再嗷述。

  四、树形控件的操作及事件处理,利用递归根据数据库动态生成目录

  树形控件,和列表控件一样,在VC数据开发中有着非常重要的地位。常用来显示分级,分类信息。其实,提到树,脑海里就出现一大堆树,什么二叉树,查找树,哈夫曼树等一大堆,也就想起了遍历树的常用算法—递归。虽然采用堆栈更有效率,但使用递归常使程序设计简化。

  看以下程式片段:

pRS->MoveFirst();
_variant_t var;
CString strTableName,strTableCode;
HTREEITEM hChildItem;
while(!pRS->adoEOF)
{
 var=pRS->GetCollect("menucode");
 if(var.vt != VT_NULL)
  strTableCode = (LPCSTR)_bstr_t(var);

 //此即函数递归出口
 if(!strTableCode.Find(strParent,0) && strTableCode.GetLength()==strParent.GetLength()+2)
 {
  hChildItem=refTree.InsertItem(strTableName,hTreeNode,TVI_LAST);
  InitTree(refTree,hChildItem,strTableCode);
 }
 pRS->MoveNext();
}

  递归时充分利用树形结构的特点。然后结合递归思想,融合在一起,就行了。这里就是理论和实际的结合点。不同的开发语言提供的操作接口是不同的,如Delphi、.dotnet。我呈在在.net也实现了一个类似的树,算法思想一样,只是具体操作不同,因为dotnet提供的接口不同。

  树形控件的事件处理:

void CClassTreeView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
 NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
 // TODO: Add your control notification handler code here
 CTreeCtrl& refTreeCtrl=GetTreeCtrl();
 HTREEITEM hSelected=pNMTreeView->itemNew.hItem;
 if(hSelected!=NULL)
 {
  m_strMenuName=refTreeCtrl.GetItemText(hSelected);
  if(AfxGetMainWnd()->IsWindowEnabled())
   UpdateDagView();
 }

 //-----------
 *pResult = 0;
}

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇OpenGL实现3DS文件中的模型自由旋.. 下一篇VC++下命名管道编程的原理及实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: