我有几个 wxFlexGridSizer 曾经在 wxWigets 版本 2.8.11 中工作。将 wxWidgets 库升级到 2.9.4 后,我现在在 wxFlexGridSizer::AddGrowableCol() 中得到一个无效的列索引。
这是我正在创建的 sizer 的示例:
wxFlexGridSizer* fgSizer1;
fgSizer1 = new wxFlexGridSizer( 3, 2, 0, 0 );
fgSizer1->AddGrowableCol( 2 );
fgSizer1->SetFlexibleDirection( wxBOTH );
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
我尝试将 AddGrowableCol() 参数的值更改为 1,因为也许我认为它之前可能是错误的,但它仍然会引发相同的错误。如果这也有帮助,我可以包含堆栈跟踪。
..\..\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
这是断言代码
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 );
}