Code::Blocks Forums

User forums => General (but related to Code::Blocks) => Topic started by: sethjackson on February 17, 2006, 07:52:28 pm

Title: wxNotebook troubles
Post by: sethjackson on February 17, 2006, 07:52:28 pm
Code: cpp
m_pNotebook = new wxNotebook(this,
                                 wxID_ANY,
                                 wxDefaultPosition,
                                 wxDefaultSize);

    // Create a new text control using our member pointer.

m_pTextCtrl = new TextCtrl(m_pNotebook,
                               wxID_ANY,
                           wxEmptyString,
                               wxDefaultPosition,
                               wxDefaultSize,
                               wxTE_MULTILINE | wxHSCROLL);

    m_pNotebook->InsertPage(m_pNotebook->GetPageCount(), m_pTextCtrl);

I get this error.

main.cpp:40: error: no matching function for call to `wxNotebook::InsertPage(size_t, TextCtrl*&)'
C:/wxWidgets-2.6.2/include/wx/msw/notebook.h:136: note: candidates are: virtual bool wxNotebook::InsertPage(size_t, wxNotebookPage*, const wxString&, bool, int)

TextCtrl is my own text control object derived from wxTextCtrl. I wan't to have a tabbed text editor..... How to? Sorry for the dumb question....  :P
Title: Re: wxNotebook troubles
Post by: thomas on February 17, 2006, 08:06:48 pm
You must provide a wxString for the title, this is not an optional argument.

http://www.wxwidgets.org/manuals/2.6.2/wx_wxnotebook.html#wxnotebookinsertpage
Title: Re: wxNotebook troubles
Post by: sethjackson on February 17, 2006, 08:13:32 pm
Ok. Does TextCtrl parent need to be the notebook or this (this = my main frame)?

EDIT:

when TextCtrl parent is the notebook I get SIGSEV.....  :P What am I doing wrong? I want the inserted page to have a wxTextCtrl. How to do this?
Title: Re: wxNotebook troubles
Post by: thomas on February 17, 2006, 08:17:37 pm
I would use this ( = main frame), never sure which is right and which is not, but using the main frame usually works fine with everything :)
Title: Re: wxNotebook troubles
Post by: sethjackson on February 17, 2006, 08:18:23 pm
So how do I have my notebook have a tab with a text ctrl?
Title: Re: wxNotebook troubles
Post by: eranif on February 17, 2006, 08:23:27 pm
Usually it is better to use the notebook itself as the parent of the page.

In the wxFlatNotebook, for example, the control reparent the page when inserted to it:
Code
AddPage(wxWindow* win, ... )
{
 if(!win)
   return;

 win->Reparent(this);
}

to add text control:

to add a text control just do:
Code
wxTextCtrl *text = new wxTextCtrl(m_pNotebook, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER | wxTE_MULTILINE);
m_pNotebook->AddPage(text, wxT("Page #1"));

Eran
Title: Re: wxNotebook troubles
Post by: sethjackson on February 17, 2006, 08:28:26 pm
I have it working now. Thanks guys.  :D