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 样式无法正常工作:第二行选项卡被遮挡且不可读

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

经过实验,我发现是这样的:

在所有 AddPage() 调用之后添加一行

    myNotebook->Layout();
于 2008-11-20T16:57:33.870 回答
1

问题似乎是保存笔记本页面的面板覆盖了第二行选项卡。

我可以通过处理EVT_NOTEBOOK_PAGE_CHANGED事件并添加这行代码来强制面板移开

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

丑陋,但它的工作。

于 2009-10-21T19:53:47.433 回答
0

最后,找到了一个优雅的解决方案。调整大小后我需要强制刷新。

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