вот есть у меня такая задумка сделать сделать маленькое лог окошко в каком новая строка текста будет вытесянть старую на одну строку выше а та по истечению возможных строк (например \8) будет удалятся.
Простой пример окно чата.
так как я не знаю функций и половины функций WxWidgets то мне нужно узнать какой элемент для этого использовать
лог окно
-
- Super wx Problem Solver
- Posts: 362
- Joined: Wed Mar 07, 2007 8:10 am
- Location: Russia, Shakhty
Re: лог окно
в samples\grid посмотри там точно есть с логом пример и вообще окно лока во многие примеры вставлены. Если вкратце то что-то типа
Это если тебе именно log нужен
Code: Select all
logger = new wxLogTextCtrl( logWin );
m_logOld = wxLog::SetActiveTarget( logger );
wxLog::SetTimestamp( NULL );
И потом по событию в нужном месте отправляешь wxLogMessage()
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
Re: лог окно
сделал я такую штуку, сделал размер поля 100х200
ну и вбиваю текст (двумя способами для надежности)
WriteText(text)
AppendText(text)
в итоге текст всегда добавлятся вдоль
* добавление символа переноса (\n или даже \r\n) добавляет в поле какой то квадратик и не переносит на новую строку
ну и вбиваю текст (двумя способами для надежности)
WriteText(text)
AppendText(text)
в итоге текст всегда добавлятся вдоль
* добавление символа переноса (\n или даже \r\n) добавляет в поле какой то квадратик и не переносит на новую строку
Re: лог окно
а все разобрался
нужно было добавить параметр стиля wx.TE_MULTILINE
нужно было добавить параметр стиля wx.TE_MULTILINE
Re: лог окно
wxTextCtrl* mLogTxt;
....
wxLogTextCtrl* mLogCtrl;
... конструктор
mLogCtrl = new wxLogTextCtrl( mLogTxt );
delete wxLog::SetActiveTarget( mLogCtrl );
... и деструктор
delete wxLog::SetActiveTarget( NULL );
Весь вывод через wxLogMessage, wxLogError и т.п. Так же туда же можно перенаправить std::cout, туда же добавить wxLogChain и тогда кроме окна весь лог ещё и в файл можно писать и в ещё другие окна. Мощная штука. Никаких AppendText не надо.
....
wxLogTextCtrl* mLogCtrl;
... конструктор
mLogCtrl = new wxLogTextCtrl( mLogTxt );
delete wxLog::SetActiveTarget( mLogCtrl );
... и деструктор
delete wxLog::SetActiveTarget( NULL );
Весь вывод через wxLogMessage, wxLogError и т.п. Так же туда же можно перенаправить std::cout, туда же добавить wxLogChain и тогда кроме окна весь лог ещё и в файл можно писать и в ещё другие окна. Мощная штука. Никаких AppendText не надо.
Win7/LinuxMint 17, VS2013/C::B, wxWidgets 3.0 x64
Re: лог окно
SteelRat wrote:wxTextCtrl* mLogTxt;
....
wxLogTextCtrl* mLogCtrl;
... конструктор
mLogCtrl = new wxLogTextCtrl( mLogTxt );
delete wxLog::SetActiveTarget( mLogCtrl );
... и деструктор
delete wxLog::SetActiveTarget( NULL );
Весь вывод через wxLogMessage, wxLogError и т.п. Так же туда же можно перенаправить std::cout, туда же добавить wxLogChain и тогда кроме окна весь лог ещё и в файл можно писать и в ещё другие окна. Мощная штука. Никаких AppendText не надо.
да дейстивительно удобно, и время само ставит
только вот меня теперь один вопрос волнует:
неужели нельзя задать какой то параметр в TxtCtrl чтобы новая строка попадала именно на новую строку, уж очень мне кажется что wx.LogMessage('\n') не является истинно верным решением
Re: лог окно
вдоль пишет епт
-
- Super wx Problem Solver
- Posts: 362
- Joined: Wed Mar 07, 2007 8:10 am
- Location: Russia, Shakhty
Re: лог окно
не знаю в примерах в wxLogMessage загоняют просто строчку без окончания строки. Но я так понял ты из питона. может нюанс какой.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse