我在使用VS。NET开发的MFC项目,同时使用了。NET Framework的类,在使用中用到了MFC中的TreeCtrl,列举控件中每一项时要用到HTREEITEM类型的句柄,但却遇到了问题:
编译时一切正常,但运行程序时去提示无法从程序集中加载_TREEITEM类型,我查了一下又一下的定义,
typedef struct _TREEITEM *HTREEITEM;
可以看出_TREEITEM是一个结构类型,但它又是在哪里定义的呢?希望得到一个满意的答案,谢谢!

解决方案 »

  1.   

    这是我最近程序的代码《供你参考:CString type,productID;
    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);
      

  2.   

    HTREEITEM?
    应是你的程序问题,看看程序在执行什么语句的时候出现的错误,贴出来讨论一下
      

  3.   

    是这样的,只要程序中用到了HTREEITEM类型变量就出错,例如: TVINSERTSTRUCT tvInsert;
    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。
      

  4.   

    http://www.dotnet247.com/247reference/msgs/1/7811.aspx