我是一个爱好程序员,仍在学习 C++ 和 wxWidgets。我在 Windows 10 Pro 计算机上使用 Code::Blocks 20.3、wxWidgets 3.1.4 和 MinGW 17.1。
我正在尝试使虚拟 wxListCtrl 在 Code::Blocks 中工作,我遵循了 ListCtrl 示例中的代码和 wxWidgets 论坛中的一个简单示例。编译和工作的示例(1 个文件)代码。当我在 Code::Blocks 中开始一个新项目时,GUI APP 和 MAIN 被编码在单独的文件中。也许我需要做更多,但找不到它是什么。该项目以零错误和警告编译,但在启动时显示以下错误。我尝试将 SetItemCount() 移到 AppendCollumn() 上方,但这没有帮助。当我将 AppendColumn() 都注释掉时没有错误,但是列表当然是空的。
有人可以帮我解决我的代码中缺少的内容吗?
谢谢你,路德
错误:
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
图形用户界面代码:
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()