|
추측으로 답변해 주는 것은 위험합니다.
정확한 것이 아니라면, 오히려 답변안해 주는 것이 더 좋을 수도 있습니다.
그리고, 처음 질문하신 분은 먼저 help 를 보시고 질문하시는 것이 좋을 듯합니다.
예제 소스 몇줄만 보면, 헷가리고, 알기가 힘들지요.
그럼!
장성호 님이 쓰신 글 :
: 질문이 뭔지는 잘모르겠는데요
:
: 먼저
: TListView 에서
: ListView->Items->Add();
: 함수는 TListItem * 형을 반환합니다.
:
: 두번째로
: VirtualStringTree 는 잘모르겠지만
:
: TTreeNode 클래스를 보면 Node->Data가 void * 로 선언되어있습니다.
:
: 즉 아무거나 point를 넣어줘도 된다는거죠
:
: 예를 들어
: TTreeNode *node;
: node=treeview->Items->Add(NULL,"adsfad");
:
: //이런식이거나
: char myname[10];
: node->Data=&myname[0];
:
: //이런식으로
: TListItem *Item;
: Item=ListView->Items->Add();
: node->Data=Item;
:
: 위와같이 TTreeNode의 Data에는 void * 형이나까 아무것의 point를 넣어도 무방하다는거죠
:
: 그럼 가져올때는
:
: TListItem *Item;
: Item=(TListItem *)node->Data;
:
: 이런식으로 void * 형을 내가 넣어준 포인터형으로 형변환 해서 사용하면 됩니다.
:
: 이것을 잘이용하면 매우 유용하게 쓰입니다.
:
: 질문에는 Node->Data에 구조체를 넣었는데요
: 내마음대로 구조체나 클래스를 만들어서 넣어도 전혀 무방합니다.
:
:
: 그럼
:
:
:
:
:
:
: 하안인 님이 쓰신 글 :
: : TListColumn *newColumn;
: : TListItem *ListItem;
: : TListView *ListView = new TListView(this);
: :
: : ....
: : newColumn = ListView->Items->Add();
: :
: : ListView->Items->Add()를 newColumn으로 받은것은
: : items의 메소드가 add의 원형이 TListColumn * 이라서
: : newColumn으로 받은것으로 알고있는데요..
: :
: : VirtualStringTree에서 보면
: :
: : TVirtualNode* Node = Tree->AddChild(BasisNode, NULL);
: : TPropertyData* Data = (TPropertyData*)Tree->GetNodeData(Node);
: :
: : 이렇게 하는 경우도 있고
: : typedef struct {
: : TVirtualNode *Node; // Node Address.
: : AnsiString NodeTitle; // Label for the node.
: : } TestRec, *ptrTestRec;
: :
: : PtrTestName = (TestRec *) vst->GetNodeData(LastNode);
: :
: : 위와 같이 받는 경우도 있더라구요..
: :
: : 그래서 원형을 찾아보니 GetNodeData는
: : void *TBaseVirtualTree::GetNodeData 인데요...
: :
: : 위와 같이 사용해도 상관없는 이유는 무엇인지요...
: :
: : 무조건 cast연산자로 바꾸면 되는것인지...
|