2012-12-24 9 views
0

추가 데이터를 저장하는 자체 버전의 wxTreeItemId를 만들려고합니다. 아래 바느질 : 내가 선택한 TreeItem를 얻기 위해 이벤트를 사용할wxTreeItemId 데이터를 가져 오는 방법

#ifndef TREE_CTRL 
#define TREE_CTRL 

#include "wx/treectrl.h" 
#include "Particle System.h" 

class TreeItemId : public wxTreeItemId 
{ 
public: 
    TreeItemId(ParticleSystem* system); 
private: 
    ParticleSystem* particleSystem; 
}; 

TreeItemId.cpp

TreeItemId::TreeItemId(ParticleSystem* system) 
: wxTreeItemId() 
{ 
    particleSystem = system; 

} 

에게

TreeItemId.h하지만 사용하는 방법을 작동하지 않을 수 있습니다 내 표준이 아닌 treeItem 클래스.

나는의 라인에 뭔가를하고 싶은이 비록 작동하지 않습니다

void TopRightPanel::OnSelChanged(wxTreeEvent& event) 
{ 
    TreeItemId *item = (TreeItemId)event.GetItem(); 
} 

... 어떤 조언을 주시면 감사하겠습니다. 내 자신의 wxTreeItemData 버전을 사용해야합니까?

답변

1

wxTreeItemId 대신 wxTreeItemData에서 데이터 개체를 서브 클래 싱해야합니다. 의 당신이 InsertItem() 방법을 사용하고이 데이터 개체를 지정하는 데 필요한 항목 데이터를 설정하려면 다음

wxTreeItemId itemId = event.GetItem(); 
MyItemData * data = (MyItemData *)m_MyTreeCtrl->GetItemData(itemId); 
if(data) { /* Doo what you need here */ } 

MyItemData : public wxTreeItemData {}; 있다고 가정 해 봅시다. 또는 기존 항목에 SetItemData()을 사용하고 항목 ID와 데이터 객체를이 메소드에 전달하십시오.

관련 문제