1

このコードは完全に機能します

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" );

ただし、タブ名は非常に長く、多数あるため、水平にスクロールする必要があります。

wxNB_MULTILINE スタイルを使用すると正しく動作しません: タブの 2 行目が不明瞭で判読できません

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" );

複数行スタイルを正しく使用するにはどうすればよいですか?

4

3 に答える 3

1

問題は、ノートブックページを保持するパネルがタブの2行目を覆っているということのようです。

EVT_NOTEBOOK_PAGE_CHANGEDイベントを処理し、このコード行を追加することで、パネルを邪魔にならないように強制的に移動させることができます

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

醜いですが、それは仕事をします。

于 2009-10-21T19:53:47.433 に答える
1

実験の後、私はこの方法を見つけました:

すべての AddPage() 呼び出しの後に、1 行追加します。

    myNotebook->Layout();
于 2008-11-20T16:57:33.870 に答える
0

最後に、エレガントなソリューションを見つけました。サイズ変更後に強制的に更新する必要があります。

void MyFrame::OnSize(wxSizeEvent& )
{
    if( myNotebook ) {
        myNotebook->SetSize( GetClientRect() );
        myNotebook->Refresh();
    }
}
于 2009-11-04T13:54:32.703 に答える