能不能麻烦哪们高手帮我调一下程序,程序绝对简单,代码很少 编译没有错误,运行就有错,但是我不知道是什么原因造成的错误,因为我是初学,没能找出错误的原因,调试时错误也不在我写的代码里面。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //添加树风格和图像void CLeftTreeView::AddStyleImage(){ //设置树风格 ::SetWindowLong(m_hWnd,WS_VISIBLE|WS_TABSTOP|WS_CHILD|WS_BORDER|GWL_STYLE,TVS_HASBUTTONS|TVS_LINESATROOT|TVS_HASLINES|TVS_DISABLEDRAGDROP|TVS_SHOWSELALWAYS); //为树视图添加图标 m_ImageList.Create(IDB_TREE,16,16,ILC_COLOR); CTreeCtrl *m_pTree=&GetTreeCtrl(); //获取树指针 m_pTree->SetImageList(&m_ImageList,TVSIL_NORMAL); //设置图像列表}//添加关系到树HTREEITEM CLeftTreeView::AddRapportToTree(CString strRapport){ TV_INSERTSTRUCT tvInsert; //定义插入项的数据结构信息 tvInsert.hParent=TVI_ROOT; //父项句柄为根目录 tvInsert.hInsertAfter=TVI_LAST; //插入位置在树的最后面 tvInsert.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; tvInsert.item.lParam=0; //应用程序自定义的消息参数 tvInsert.item.iImage=0; //该项的图标索引号是在CImageList对象中 tvInsert.item.iSelectedImage=0; //选中时图标 tvInsert.item.pszText=(LPTSTR)(LPCSTR)strRapport; //项的文本 CTreeCtrl *m_pTree=&GetTreeCtrl(); //获取树指针 HTREEITEM hRapportItem=m_pTree->InsertItem(&tvInsert); //插入项 return hRapportItem;}//添加姓名到树void CLeftTreeView::AddNameToTree(HTREEITEM hRapportItem,CString strName){ CTreeCtrl *m_pTree=&GetTreeCtrl(); //获取树指针 //CString strRapport=m_pTree->GetItemText(hRapportItem); //获取项的文本 //if(strRapport!="") //{ // while () //} TV_INSERTSTRUCT tvInsert; //定义插入项的数据结构信息 tvInsert.hParent=hRapportItem; //父项句柄为根目录 tvInsert.hInsertAfter=TVI_LAST; //插入位置在树的最后面 tvInsert.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; tvInsert.item.lParam=0; //应用程序自定义的消息参数 tvInsert.item.iImage=0; //该项的图标索引号是在CImageList对象中 tvInsert.item.iSelectedImage=0; //选中时图标 tvInsert.item.pszText=(LPTSTR)(LPCTSTR)strName; //项的文本 HTREEITEM hNameItem=m_pTree->InsertItem(&tvInsert);}//添加树void CLeftTreeView::AddTree(CString strRapport,CString strName){ //将关系添加到树 HTREEITEM hRapportItem=AddRapportToTree(strRapport); //将姓名添加到树 AddNameToTree(hRapportItem,strName); }void CLeftTreeView::OnInitialUpdate() { CTreeView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class CTreeCtrl* m_pTree=&GetTreeCtrl(); m_pTree->DeleteAllItems(); //删除树中的所有结点 AddStyleImage(); //设置树的风格 //从数据库中读取数据 _RecordsetPtr m_pRecordset; //定义记录集对象 CString strSQL,strRapport,strName; //SQL语句\关系值\姓名值 strSQL.Format("select Rapport,Name from UserCommunications"); CAddressListApp* m_pApp=(CAddressListApp*)AfxGetApp(); try { HRESULT hr=m_pRecordset.CreateInstance("ADODB.Recordset"); if(!hr) { hr=m_pRecordset->Open(strSQL.AllocSysString(),m_pApp->m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); while(!m_pRecordset->adoEOF) { _variant_t var; var=m_pRecordset->GetCollect("Rapport"); //关系 if(var.vt!=VT_NULL) { strRapport=(char*)(_bstr_t)var; } var=m_pRecordset->GetCollect("Name"); //姓名 if(var.vt!=VT_NULL) { strName=(char*)(_bstr_t)var; } //添加树 AddTree(strRapport,strName); m_pRecordset->MoveNext(); } } m_pRecordset->Close(); } catch(_com_error e) { AfxMessageBox(e.ErrorMessage()); }} 阿门!数据库ADO接口,树控件,哪个是省油的灯?还说简单呢. 看看有没有指针成功为了NULL的或没有初始化 就是树视图不对,报错信息说FILE:winsplitt.cpp,我跟踪调试了,但找不出原因,我可以把程序发给你们,请高手们帮帮忙呀 初学,请问如下问题如何解决error C2664,谢谢 关于SetWindowsHookEx记录键盘的一个问题 关于系统定义的数据类型的疑问 ShellExecuteEx的使用问题 一个小问题 请问如何读取BMP文件的每个象素值? 关于调试的问题........ 承交重庆 vc 朋友 (qq) 请问动态弹出菜单后,怎么执行相应的代码? 为什么dll调试跟踪不进去 数组问题分配后如何删除? 有谁做过三维CAD开发的,请问如何使用翼边数据结构
void CLeftTreeView::AddStyleImage()
{
//设置树风格
::SetWindowLong(m_hWnd,WS_VISIBLE|WS_TABSTOP|WS_CHILD|WS_BORDER|GWL_STYLE,TVS_HASBUTTONS|TVS_LINESATROOT|TVS_HASLINES|TVS_DISABLEDRAGDROP|TVS_SHOWSELALWAYS);
//为树视图添加图标
m_ImageList.Create(IDB_TREE,16,16,ILC_COLOR);
CTreeCtrl *m_pTree=&GetTreeCtrl(); //获取树指针
m_pTree->SetImageList(&m_ImageList,TVSIL_NORMAL); //设置图像列表}
//添加关系到树
HTREEITEM CLeftTreeView::AddRapportToTree(CString strRapport)
{
TV_INSERTSTRUCT tvInsert; //定义插入项的数据结构信息
tvInsert.hParent=TVI_ROOT; //父项句柄为根目录
tvInsert.hInsertAfter=TVI_LAST; //插入位置在树的最后面
tvInsert.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
tvInsert.item.lParam=0; //应用程序自定义的消息参数
tvInsert.item.iImage=0; //该项的图标索引号是在CImageList对象中
tvInsert.item.iSelectedImage=0; //选中时图标
tvInsert.item.pszText=(LPTSTR)(LPCSTR)strRapport; //项的文本
CTreeCtrl *m_pTree=&GetTreeCtrl(); //获取树指针
HTREEITEM hRapportItem=m_pTree->InsertItem(&tvInsert); //插入项
return hRapportItem;
}
//添加姓名到树
void CLeftTreeView::AddNameToTree(HTREEITEM hRapportItem,CString strName)
{
CTreeCtrl *m_pTree=&GetTreeCtrl(); //获取树指针
//CString strRapport=m_pTree->GetItemText(hRapportItem); //获取项的文本
//if(strRapport!="")
//{
// while ()
//}
TV_INSERTSTRUCT tvInsert; //定义插入项的数据结构信息
tvInsert.hParent=hRapportItem; //父项句柄为根目录
tvInsert.hInsertAfter=TVI_LAST; //插入位置在树的最后面
tvInsert.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
tvInsert.item.lParam=0; //应用程序自定义的消息参数
tvInsert.item.iImage=0; //该项的图标索引号是在CImageList对象中
tvInsert.item.iSelectedImage=0; //选中时图标
tvInsert.item.pszText=(LPTSTR)(LPCTSTR)strName; //项的文本
HTREEITEM hNameItem=m_pTree->InsertItem(&tvInsert);
}
//添加树
void CLeftTreeView::AddTree(CString strRapport,CString strName)
{
//将关系添加到树
HTREEITEM hRapportItem=AddRapportToTree(strRapport);
//将姓名添加到树
AddNameToTree(hRapportItem,strName);
}void CLeftTreeView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CTreeCtrl* m_pTree=&GetTreeCtrl();
m_pTree->DeleteAllItems(); //删除树中的所有结点 AddStyleImage(); //设置树的风格
//从数据库中读取数据
_RecordsetPtr m_pRecordset; //定义记录集对象
CString strSQL,strRapport,strName; //SQL语句\关系值\姓名值
strSQL.Format("select Rapport,Name from UserCommunications");
CAddressListApp* m_pApp=(CAddressListApp*)AfxGetApp();
try
{
HRESULT hr=m_pRecordset.CreateInstance("ADODB.Recordset");
if(!hr)
{
hr=m_pRecordset->Open(strSQL.AllocSysString(),m_pApp->m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
_variant_t var;
var=m_pRecordset->GetCollect("Rapport"); //关系
if(var.vt!=VT_NULL)
{
strRapport=(char*)(_bstr_t)var;
} var=m_pRecordset->GetCollect("Name"); //姓名
if(var.vt!=VT_NULL)
{
strName=(char*)(_bstr_t)var;
} //添加树
AddTree(strRapport,strName); m_pRecordset->MoveNext();
}
}
m_pRecordset->Close();
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
}
数据库ADO接口,树控件,哪个是省油的灯?还说简单呢.