Page 2 of 2

Re: Tree selection changing event

Posted: Sun Aug 25, 2013 6:55 pm
by Mojo
Toshkarik wrote:Дело не в компиляции. Дело в работоспособности приложения. У Вас данная программа работает нормально?
Абсолютно.

Re: Tree selection changing event

Posted: Sun Aug 25, 2013 6:58 pm
by Toshkarik
Видать просто поменяли имя эвентов, и сделали синонимы для поддержки старого кода. Я брал последнюю версию из trunk. Может это проблема этой версии...

Re: Tree selection changing event

Posted: Sun Aug 25, 2013 7:00 pm
by Mojo
Toshkarik wrote:Видать просто поменяли имя эвентов, и сделали синонимы для поддержки старого кода. Я брал последнюю версию из trunk. Может это проблема этой версии...
Завтра на свежую голову скачаю 2.9.5 и протестирую на ней. Может быть это еще различие между Linux и Windows.

Re: Tree selection changing event

Posted: Sun Aug 25, 2013 7:06 pm
by Toshkarik
Буду очень Вам благодарен.

Re: Tree selection changing event

Posted: Sun Aug 25, 2013 7:30 pm
by Mojo
Не дотерпел до завтра, скачал и скомпилировал 2.9.5 под линуксом.

Code: Select all

Bind( wxEVT_COMMAND_TREE_SEL_CHANGING, &MyFrame::OnTreeSelectionChanging, this );
Компилируется нормально без ошибок и сама программа работает без ошибок, нормально.

Код чуть подправил для юникодной сборки.

Code: Select all

#include <wx/app.h>
#include <wx/frame.h>
#include <wx/treectrl.h>
#include <wx/msgdlg.h>


class MyFrame : public wxFrame {
 public:
   MyFrame()
      : wxFrame( 0, -1, wxT("Test app"), wxDefaultPosition, wxDefaultSize )
   {
      Bind( wxEVT_COMMAND_TREE_SEL_CHANGING, &MyFrame::OnTreeSelectionChanging, this );
      wxTreeCtrl *tree = new wxTreeCtrl( this );
      wxTreeItemId root = tree->AddRoot( wxT("Test") );
      tree->AppendItem( root, wxT("test2") );
      tree->AppendItem( root, wxT("test3") );
   }

   void OnTreeSelectionChanging( wxTreeEvent & ) {
      wxMessageBox( wxT("test app"), wxT("test app"), wxOK, this );
   }
};

class MyApp : public wxApp {
 public:
   virtual bool OnInit() {
      MyFrame *frame = new MyFrame();

      frame->Show( true );

      SetTopWindow( frame );

      return true;
   }
};

IMPLEMENT_APP( MyApp )

Re: Tree selection changing event

Posted: Sun Aug 25, 2013 7:35 pm
by Toshkarik
Спасибо. Я брал из svn репозитория, не помню точно номер ревизии. Попробую сейчас последнюю скачать.

Re: Tree selection changing event

Posted: Mon Aug 26, 2013 12:42 am
by Toshkarik
Собрал я стабильную 2.9.5 под vc9, проблема та же самая. При запуске этого приложения несколько раз появляется диалоговое окно из обработчика, и программа виснет намертво.

Re: Tree selection changing event

Posted: Mon Nov 11, 2013 6:32 pm
by SteelRat

Code: Select all

void OnTreeSelectionChanging( wxTreeEvent& event )
{
      wxMessageBox( wxT("test app"), wxT("test app"), wxOK, this );
      event.Skip();
}
Отсутствие event.Skip(); может быть оправдано, только если вы ТОЧНО знаете, как это работает. Попробуйте добавить эту команду в обработчик события.