いくつかのコンピューター (つまり、ほとんどのコンピューターで問題ありません) では、アイテムをツリー コントロールに追加すると、何らかの理由で(何かが間違っていることを示すTreeView_InsertItem
)が返されます。残念ながら、MSDN サイトでは、エラー コードが設定されていることを指定していません (実際、GetLastErrorを呼び出すと、単純に次のように通知されます: 。エラーの原因や対処方法も指定されていません。NULL
0 = The operation completed successfully
だから、誰かが以前にこれに遭遇したことがあるかどうか、または問題をデバッグする方法について何か提案があるかどうか疑問に思っています。
マシンはすべて Windows 7 を実行しています。
免責事項: 私は実際wxWidgets
に.api
wx
更新:
基本的には、このクラスから継承し、単純に を呼び出す populate を実装するという考え方ですAddItem()
。ルート アイテムを指定するための のバージョンもありますがAddItem()
、 の最初の呼び出しで失敗するためAppend()
、その存在は役に立ちません。ツリーはwxFormBuilder
、次のフラグで作成されます。wxTR_DEFAULT_STYLE, wxTR_HAS_BUTTONS, wxTR_HIDE_ROOT, wxTR_LINES_AT_ROOT, wxTR_SINGLE
これは、自分のPCからも完全に正常に動作します
ItemSelector::ItemSelector( wxWindow* parent )
: m_tree( NULL ),
m_initialised( false )
{
wxXmlResource::Get()->LoadFrame( this, parent, wxT( "ItemSelector" ) );
m_tree = XRCCTRL( *this, "itemTree", wxTreeCtrl );
m_rootItem = m_tree->AddRoot( wxT( "ROOT" ) );
Bind( wxEVT_SHOW, &ItemSelector::OnShow, this );
MakeModal( true );
}
void ItemSelector::OnShow( wxShowEvent& event )
{
if( event.IsShown() )
{
if( !m_initialised )
{
Populate();
m_initialised = true;
}
m_tree->SetFocus();
Layout();
}
}
void ItemSelector::AddItem( const wxString& name, void* someData )
{
//Also tried m_tree->AppendItem( m_rootItem, wxT( "Test" ) ) - same problem
wxTreeItemId newItem = m_tree->AppendItem( m_rootItem, name, -1, -1, new TreeDataClass( someData ) );
}