0

我有几个 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 );
}
4

1 回答 1

1

在 Winterblood 的确认下,将调用 AddGrowableCol() 的参数更改为 1 将解决问题,尽管您进行了测试!

于 2013-05-02T22:22:17.650 回答