在几台计算机上(意味着大多数都很好),当向树控件添加项目时,由于某种原因TreeView_InsertItem
返回NULL
(表示出现问题)。不幸的是,MSDN 站点没有指定设置了错误代码(实际上,调用GetLastError只是告诉我:0 = The operation completed successfully
。它也没有指定可能导致失败的原因或如何处理失败。
所以我想知道是否有人以前遇到过这个问题,或者对如何调试问题有任何建议。
这些机器都运行 Windows 7。
免责声明:我实际上正在经历wxWidgets
,但我们已经深入研究了代码,问题似乎出在窗口api
级别,而不是wx
本身。
更新:
基本上,这个想法是,你从这个类继承,然后实现填充,它只是调用AddItem()
. 还有一个AddItem()
用于指定根项目的版本,但是由于我在第一次调用时失败了Append()
,所以它的存在没有帮助。wxFormBuilder
使用以下标志创建树:wxTR_DEFAULT_STYLE, wxTR_HAS_BUTTONS, wxTR_HIDE_ROOT, wxTR_LINES_AT_ROOT, wxTR_SINGLE
这在我自己的电脑上也可以正常工作
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 ) );
}