Pergunta

Este código funciona perfeitamente

myNotebook = new wxNotebook( this, IDC_NOTEBOOK, wxDefaultPosition, wxSize(500, 500) );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 1" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 2" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 3" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 4" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 5" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 6" );

No entanto, os nomes das guias são tão longas e numerosas têm que ser rolado horizontalmente.

Usando o estilo wxNB_MULTILINE não funciona corretamente: a segunda linha de guias é obscurecida e ilegível

myNotebook = new wxNotebook( this, IDC_NOTEBOOK, wxDefaultPosition, wxSize(500, 500), wxNB_MULTILINE );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 1" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 2" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 3" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 4" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 5" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 6" );

Como faço para usar o estilo de multilinha corretamente?

Foi útil?

Solução 3

Finalmente, encontrou uma solução elegante. Eu preciso para forçar uma atualização após o redimensionamento.

void MyFrame::OnSize(wxSizeEvent& )
{
    if( myNotebook ) {
        myNotebook->SetSize( GetClientRect() );
        myNotebook->Refresh();
    }
}

Outras dicas

Depois de experimentação, eu encontrei esta maneira:

Adicionar uma linha, depois de toda a AddPage () chama

    myNotebook->Layout();

O problema parece ser que o painel que detém a página do caderno cobre a segunda linha de guias.

Eu posso forçar o painel para mover fora do caminho por manipular o evento EVT_NOTEBOOK_PAGE_CHANGED e adicionando esta linha de código

myNotebook->GetPage( event.GetSelection() )->Move(0,40);

feio, mas ele faz o trabalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top