cbuilder高手请进!
本人的一段程序,不屏蔽if(m_node)一句,则正常运行;若把if(m_node)这句屏蔽,
则出现EAccessViolation之类的异常,现附上这段程序,望高手指点:
void __fastcall TfrmMain::GetNodeStatus()
{
TTreeNode *MyNode;
MNODE *m_node;
TVITEMEX item;
AnsiString temp;
m_node=(MNODE *)NULL;
int numNodes = tveCode->Items->Count;
//ShowMessage(IntToStr(numNodes));
for (int i=0;i<numNodes;i++)
{
MyNode=tveCode->Items->Item[i];
m_node=(MNODE *)MyNode->Data;
item.hItem = (HTREEITEM)tveCode->Items->Item[i];
item.mask = TVIF_HANDLE | TVIF_STATE;
item.hItem = MyNode->ItemId;
item.stateMask = TVIS_STATEIMAGEMASK;
//if(m_node) //加上这个判断,则对;不加,则出错;Why?
{
ShowMessage(m_node->mStatus);
if(m_node->mStatus=="1")
{
item.state = INDEXTOSTATEIMAGEMASK(1? 2 : 1); //选中状态
}
else
{
item.state = INDEXTOSTATEIMAGEMASK(0? 2 : 1); //不选中状态
}
}
else
{
item.state = INDEXTOSTATEIMAGEMASK(0? 2 : 1); //不选中状态
}
TreeView_SetItem(tveCode->Handle, &item); //设置
m_node=(MNODE *)NULL;
}
}