I would like to add the MyRichTextCtrl class - as given in the richtext example in the wxWidgets samples to a project, whose GUI code is built using wxCrafter.
It seems I would have to use a custom control, but since I am not at all familiar with how such a control is intended to be used, I am am struggling what would be the simplest way to add it.
I have played just a bit with this feature - wxCrafter 2.6 - and it looks like I have to be pretty sure what code I need to add to this custom class when I start, as there seems to be no easy way to edit/modify this code once it is started other than to perhaps create the code in an editor and then delete and recreate the custom control code over and over till it comes out right.
Am I missing some tutorial or other document. It seems I ran into this once before and it looks like I gave up on it and added the code manually to my derived main frame directly.
An additional wrinkle is that in this project I am also trying to get to know & use the AUI manager etc
TIA for any thoughts or pointers
Custom Control
-
- CodeLite Expert
- Posts: 167
- Joined: Wed Oct 22, 2008 6:50 am
- Contact:
Custom Control
Win 10/11 64-bit, MSVC 2019/2022, wxWidgets 3.2.1, CodeLite 17.0 Mint 21.2
- eranif
- CodeLite Plugin
- Posts: 6375
- Joined: Wed Feb 06, 2008 9:29 pm
- Genuine User: Yes
- IDE Question: C++
- Contact:
Re: Custom Control
The easiest way to use custom control in wxCrafter is by making a ctor with the exact same signature as the parent class.
If you use the default wxRichTextCtrl in wxCrafter, the generated code would be something like this:
Which corresponds to this signature of wxRichTextCtrl:
(notice that wxCrafter does not even pass the validator & name arguments)
To conclude:
1. Create new class MyRichTextCtrl class with this signature:
2. Add to your wxCrafter form a 'wxRichTextCtrl' control
3. To tell wxCrafter to use MyRichTextCtrl instead of wxRichTextCtrl, in the Subclass category of your newly added wxRichTextCtrl control, set the "Class name" field to "MyRichTextCtrl" and the "include file" to the header file containing this class
Generate your code...
Eran
and set its name in the "subclass"
If you use the default wxRichTextCtrl in wxCrafter, the generated code would be something like this:
Code: Select all
m_richTextCtrl91 = new wxRichTextCtrl(this, wxID_ANY, wxT("wxRichTextCtrl!"), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1,-1)), wxTE_MULTILINE|wxTE_PROCESS_TAB|wxTE_PROCESS_ENTER|wxWANTS_CHARS);
Code: Select all
wxRichTextCtrl::wxRichTextCtrl ( wxWindow * parent,
wxWindowID id = -1,
const wxString & value = wxEmptyString,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = wxRE_MULTILINE,
const wxValidator & validator = wxDefaultValidator,
const wxString & name = wxTextCtrlNameStr
)
To conclude:
1. Create new class MyRichTextCtrl class with this signature:
Code: Select all
MyRichTextCtrl::MyRichTextCtrl ( wxWindow * parent,
wxWindowID id = -1,
const wxString & value = wxEmptyString,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = wxRE_MULTILINE
)
3. To tell wxCrafter to use MyRichTextCtrl instead of wxRichTextCtrl, in the Subclass category of your newly added wxRichTextCtrl control, set the "Class name" field to "MyRichTextCtrl" and the "include file" to the header file containing this class
Generate your code...
Eran
and set its name in the "subclass"
Make sure you have read the HOW TO POST thread
-
- CodeLite Expert
- Posts: 167
- Joined: Wed Oct 22, 2008 6:50 am
- Contact:
Re: Custom Control
Thank you very much, Eran.
Following your detailed instructions, really did the trick.
I'll be sure to record this for myself for future reference.
Following your detailed instructions, really did the trick.
I'll be sure to record this for myself for future reference.
Win 10/11 64-bit, MSVC 2019/2022, wxWidgets 3.2.1, CodeLite 17.0 Mint 21.2