问题描述
我是一个业余程序员,仍在学习C ++和wxWidgets。 我在Windows 10 Pro计算机上使用Code :: Blocks 20.3,wxWidgets 3.1.4和MinGW 17.1。
我正在尝试在Code :: Blocks中使虚拟wxListCtrl工作, 我遵循了ListCtrl示例中的代码以及wxWidgets讨论论坛中的一个简单示例。 示例代码(1个文件)在编译和工作时均有效。 当我在Code :: Blocks中启动新项目时,GUI APP和MAIN被编码在单独的文件中。 也许我需要做更多的事情,但是找不到它。 该项目编译时错误和警告为零,但在启动时显示以下错误。 我尝试将SetItemCount()移到AppendCollumn()上方,但这没有帮助。 将两个AppendColumn()都注释掉时没有错误,但是列表当然为空。
有人可以帮我解决代码中缺少的内容吗?
谢谢,Ruud
错误:
A debugging check in this application has failed
../../src/cpmmon.listctrlcmn.cpp(259):
assert "Assert Failure" failed in OnGetItemText():
wxListCtrl::OnGetItemText not supposed to be called
GUI代码:
GUIFrame::GUIFrame( wxWindow* parent,wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,long style ) : wxFrame( parent,id,title,pos,size,style )
{
this->SetSizeHints( wxDefaultSize,wxDefaultSize );
wxBoxSizer* bSizer1;
bSizer1 = new wxBoxSizer( wxVERTICAL );
m_listCtrl1 = new wxListCtrl( this,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxLC_REPORT|wxLC_VIRTUAL );
bSizer1->Add( m_listCtrl1,1,wxALL|wxEXPAND,10 );
this->SetSizer( bSizer1 );
this->Layout();
// Connect Events
this->Connect( wxEVT_CLOSE_WINDOW,wxCloseEventHandler( GUIFrame::OnClose ) );
}
GUIFrame::~GUIFrame()
{
// Disconnect Events
this->Disconnect( wxEVT_CLOSE_WINDOW,wxCloseEventHandler( GUIFrame::OnClose ) );
}
主要代码:
#include "VlistMain.h"
const wxChar *SMALL_VIRTUAL_VIEW_ITEMS[][2] =
{
{ wxT("Cat"),wxT("meow") },{ wxT("Sheep"),wxT("baaah") }
};
VlistFrame::VlistFrame(wxFrame *frame) : GUIFrame(frame)
{
m_listCtrl1->AppendColumn("Animal");
m_listCtrl1->AppendColumn("Sound");
m_listCtrl1->SetItemCount(WXSIZEOF(SMALL_VIRTUAL_VIEW_ITEMS));
}
wxString VlistFrame::OnGetItemText(long item,long column) const
{
return SMALL_VIRTUAL_VIEW_ITEMS[item][column];
}
事件表:
wxBEGIN_EVENT_TABLE(MyListCtrl,wxListCtrl)
EVT_LIST_ITEM_SELECTED(wxAny,MyListCtrl::OnSelected)
wxEND_EVENT_TABLE()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)