0

追加のデータを格納する独自のバージョンのwxTreeItemIdを作成しようとしました。以下に縫う:

TreeItemId.h

#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;

}

イベントを使用して選択したTreeItemを取得したいのですが、標準ではなくtreeItemクラスを使用する方法を理解できません。

私は次の行で何かをしたい:

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

しかし、これは機能しません...アドバイスをいただければ幸いです。自分のバージョンのwxTreeItemDataを使用する必要がありますか?

4

1 に答える 1

1

wxTreeItemDataの代わりにからデータオブジェクトをサブクラス化する必要がありますwxTreeItemIdMyItemData : public wxTreeItemData {};あなたがその時持っているとしましょう

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

アイテムデータを設定するには、InsertItem()メソッドを使用して、そこでデータオブジェクトを指定する必要があります。または、既存のアイテムにSetItemData()を使用して、アイテムIDとデータオブジェクトをこのメソッドに渡します。

于 2012-12-24T14:23:36.593 に答える