У меня есть несколько wxFlexGridSizer, которые раньше работали в wxWigets версии 2.8.11. После обновления библиотеки wxWidgets до 2.9.4 теперь я получаю недопустимый индекс столбца в wxFlexGridSizer :: AddGrowableCol().wxFlexGridSizer AddGrowableCol throwing error
Вот образец классификатора, что я творю:
wxFlexGridSizer* fgSizer1;
fgSizer1 = new wxFlexGridSizer(3, 2, 0, 0);
fgSizer1->AddGrowableCol(2);
fgSizer1->SetFlexibleDirection(wxBOTH);
fgSizer1->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
Я попытался изменить значение AddGrowableCol() arguement 1, потому что, возможно, я думал, что это, возможно, было неправильно, прежде чем или что-то, но это по-прежнему бросает ту же ошибку. Я могу включить stacktrace, если это тоже будет полезно.
..\..\src\common\sizer.cpp(1956): assert "!m_cols || idx < (size_t)m_cols" failed in wxFlexGridSizer::AddGrowableCol(): invalid column index
Call stack:
[00] wxGUIAppTraitsBase::ShowAssertDialog j:\wxwidgets-2.9.4\src\common\appcmn.cpp:475
[01] ShowAssertDialog j:\wxwidgets-2.9.4\src\common\appbase.cpp:1265
[02] wxAppConsoleBase::OnAssertFailure j:\wxwidgets-2.9.4\src\common\appbase.cpp:761
[03] wxDefaultAssertHandler j:\wxwidgets-2.9.4\src\common\appbase.cpp:1065
[04] wxOnAssert j:\wxwidgets-2.9.4\src\common\appbase.cpp:1141
[05] wxFlexGridSizer::AddGrowableCol j:\wxwidgets-2.9.4\src\common\sizer.cpp:1956
[06] MyFrame::MyFrame c:\users\james\documents\code\wx29starter - copy (2)\minimal.cpp:181
[07] MyApp::OnInit c:\users\james\documents\code\wx29starter - copy (2)\minimal.cpp:130
[08] wxAppConsoleBase::CallOnInit j:\wxwidgets-2.9.4\include\wx\app.h:94
[09] wxEntryReal j:\wxwidgets-2.9.4\src\common\init.cpp:456
[10] wxEntry j:\wxwidgets-2.9.4\src\msw\main.cpp:189
[11] wxEntry j:\wxwidgets-2.9.4\src\msw\main.cpp:416
[12] WinMain c:\users\james\documents\code\wx29starter - copy (2)\minimal.cpp:111
[13] __tmainCRTStartup f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c:578
[14] WinMainCRTStartup f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c:403
[15] BaseThreadInitThunk
[16] RtlInitializeExceptionChain
[17] RtlInitializeExceptionChain
Вот код Assert
void wxFlexGridSizer::AddGrowableCol(size_t idx, int proportion)
{
wxASSERT_MSG(!IsColGrowable(idx),
"AddGrowableCol() called for growable column");
// see comment in AddGrowableRow(): although it's less common to omit the
// specification of the number of columns, it still can also happen
wxCHECK_RET(!m_cols || idx < (size_t)m_cols, "invalid column index");
m_growableCols.Add(idx);
m_growableColsProportions.Add(proportion);
}
Он отлично работает для меня, если я изменю параметр на 1 для вызова AddGrowableCol(). Повторите попытку - возможно, вы что-то путаете. – ravenspoint
'AddGrowableCol()' имеет нулевую индексацию, а четыре аргумента переопределения 'wxFlexGridSizer' определяются как' (int rows, int cols, int vgap, int hgap) '- поэтому вы пытаетесь установить третий столбец как растущий в две колонки. –