我在使用VS。NET开发的MFC项目,同时使用了。NET Framework的类,在使用中用到了MFC中的TreeCtrl,列举控件中每一项时要用到HTREEITEM类型的句柄,但却遇到了问题:
编译时一切正常,但运行程序时去提示无法从程序集中加载_TREEITEM类型,我查了一下又一下的定义,
typedef struct _TREEITEM *HTREEITEM;
可以看出_TREEITEM是一个结构类型,但它又是在哪里定义的呢?希望得到一个满意的答案,谢谢!
编译时一切正常,但运行程序时去提示无法从程序集中加载_TREEITEM类型,我查了一下又一下的定义,
typedef struct _TREEITEM *HTREEITEM;
可以看出_TREEITEM是一个结构类型,但它又是在哪里定义的呢?希望得到一个满意的答案,谢谢!
CString recordStr;
COleVariant m_oVar;
HTREEITEM rootHandle,itemHandle,firstHandle;
UINT counter=1;
m_ctrlTree1.DeleteAllItems();
m_ctrlTree1.SetItemHeight(20);
rootHandle=m_ctrlTree1.InsertItem(_T("产品信息"),0,0,TVI_ROOT,TVI_LAST);
while(!m_daoTypeRec.IsEOF())
{
//类别设置
m_daoTypeRec.GetFieldValue(_T("产品名称"),m_oVar);
m_oVar.ChangeType(VT_BSTR, NULL);
type=(LPCTSTR)m_oVar.pbstrVal;
itemHandle=m_ctrlTree1.InsertItem(type,0,0,rootHandle,TVI_LAST);
//产品列表
recordStr=_T("select * from 基本信息 where 产品名称='"+ type +"' order by 产品编号");
m_daoDetailRec.Open(dbOpenDynaset,recordStr,dbReadOnly);
if(m_daoDetailRec.IsEOF() && m_daoDetailRec.IsBOF())
{
m_daoTypeRec.Close();
m_daoDetailRec.Close();
return;//无记录
}
while(!m_daoDetailRec.IsEOF())
{
m_daoDetailRec.GetFieldValue(_T("产品编号"),m_oVar) ;
m_oVar.ChangeType(VT_BSTR,NULL);
productID=(LPCTSTR)m_oVar.pbstrVal;
if(counter==1) firstHandle=
m_ctrlTree1.InsertItem(productID,0,0,itemHandle,TVI_LAST);
else
m_ctrlTree1.InsertItem(productID,0,0,itemHandle,TVI_LAST);
m_daoDetailRec.MoveNext();
counter++;
}
m_daoDetailRec.Close(); m_daoTypeRec.MoveNext();
}
m_ctrlTree1.Expand(rootHandle,TVE_EXPAND);
m_ctrlTree1.Select(firstHandle,TVGN_FIRSTVISIBLE);
应是你的程序问题,看看程序在执行什么语句的时候出现的错误,贴出来讨论一下
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_IMAGE | TVIF_TEXT;
tvInsert.item.pszText = _T("目录结构");
**** HTREEITEM hRoot = m_Control_TreeStruct.InsertItem(&tvInsert);提示的错误信息详细如下:未处理的“System.TypeLoadException”类型的异常出现在 EditUI_MFC.exe 中。其他信息: 未能从程序集 EditUI_MFC, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 中加载类型 _TREEITEM。