Maximize size of wxTextCtrl

92 views Asked by At

When I put a wxTextCtrl to wxPanel or scrolled window, system show only 2 lines of text. Sometimes wxTextCtrl will be bigger then window. Wraping a text to x size (horisontaly), increase text verticaly to show all text without scroller.

I need similar chat or sms layout. No matter emoji, rouded corner, color etc.

enter image description here

#include <wx/wx.h>

class OknoG : public wxFrame
{
public:
OknoG() : wxFrame(NULL, wxID_ANY, "Testowanie")
{
 SetClientSize(wxSize(300, 400));
 wxString treść(wxT("Bardzo długi tekst. "
   "Bardzo długi tekst z polskimi literami. "
   "Bardzo długi tekst z polskimi literami np. mątwa, łąka."
   "Żółta żaba żarła żur. To kolejny długi tekst z polskimi literami i nawet cyframi. "
   "Bardzo długi tekst z polskimi literami ćż. "
   "Bardzo długi tekst z polskimi literami i koniec. ") );

 wxScrolledWindow *panel = new wxScrolledWindow(this, -1);
 wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
  wxTextCtrl* m1 = new wxTextCtrl(panel, wxID_ANY, treść,
                 wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY);
  wxTextCtrl* m2 = new wxTextCtrl(panel, wxID_ANY, treść,
    wxDefaultPosition, wxSize(-1, 300), wxTE_MULTILINE|wxTE_READONLY);
  wxTextCtrl* m3 = new wxTextCtrl(panel, wxID_ANY, treść,
    wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY);
  sizer->Add(m1, 0, wxALL|wxEXPAND, 8);
  sizer->Add(m2, 0, wxALL|wxEXPAND, 8);
  sizer->Add(m3, 0, wxALL|wxEXPAND, 10);
 panel->SetSizer(sizer);
 panel->FitInside();
 panel->SetScrollRate(20, 15);
 wxSize size = m3->GetBestVirtualSize();
 m3->SetVirtualSize( size );
 Centre();
}
};

class MyApp : public wxApp
{
public:
 virtual bool OnInit();
};
bool MyApp::OnInit()
{
 OknoG *okna = new OknoG();
  okna->Show(true);
return true;
};
wxIMPLEMENT_APP(MyApp);

How show whole text similar a sms text in new cell phones. rectangles with text from top to bottom.

0

There are 0 answers