2013-05-02 4 views
0

wxWigets 버전 2.8.11에서 사용되는 여러 wxFlexGridSizers가 있습니다. wxWidgets 라이브러리를 2.9.4로 업그레이드 한 후 wxFlexGridSizer :: AddGrowableCol()에서 잘못된 열 인덱스를 얻고 있습니다. 어쩌면 내가 그 전에 잘못되었을 수 있습니다 생각했기 때문에 내가 1로 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); 

이나 뭐하지만이 : 여기

은 내가 작성하고있는 선별기의 샘플입니다 여전히 같은 오류가 발생합니다. 도움이된다면 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   

가 어설 션 코드 winterblood에서

확인 있음
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); 
} 
+0

AddGrowableCol() 호출에 대해 매개 변수를 1로 변경하면 정상적으로 작동합니다. 그 시험을 다시 시도하십시오. 아마도 당신은 매서운 일을 망쳤습니다. – ravenspoint

+2

'AddGrowableCol()'은 인덱스가 0이고'wxFlexGridSizer'의 네 인자의 오버라이드는'(int rows, int cols, int vgap, int hgap)'로 정의됩니다 - 그래서 세번째 컬럼을 a에서 growable으로 설정하려고합니다. 두 개의 열 레이아웃. –

답변

1

AddGrowableCol 호출 1에 매개 변수를 변경에게있다() 테스트에도 불구하고, 문제를 해결합니다!

+0

당신 말이 맞아요. 그것은 다른 하나에서 그것을 던지고 있었다. 당신의 도움을 주셔서 감사합니다. 이것이 이전 버전에서 작동 한 이유는 무엇입니까? – Oros

+0

어설 션이 누락되었거나 잘못 입력 된 후 새 릴리스에서 수정 된 것 같습니다. – ravenspoint

관련 문제