Tree selection changing event

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Tree selection changing event

Post by Mojo » Sun Aug 25, 2013 6:55 pm

Toshkarik wrote:Дело не в компиляции. Дело в работоспособности приложения. У Вас данная программа работает нормально?
Абсолютно.
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

Toshkarik
Earned a small fee
Earned a small fee
Posts: 18
Joined: Thu Oct 18, 2012 3:18 am
Location: Russia

Re: Tree selection changing event

Post by Toshkarik » Sun Aug 25, 2013 6:58 pm

Видать просто поменяли имя эвентов, и сделали синонимы для поддержки старого кода. Я брал последнюю версию из trunk. Может это проблема этой версии...

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Tree selection changing event

Post by Mojo » Sun Aug 25, 2013 7:00 pm

Toshkarik wrote:Видать просто поменяли имя эвентов, и сделали синонимы для поддержки старого кода. Я брал последнюю версию из trunk. Может это проблема этой версии...
Завтра на свежую голову скачаю 2.9.5 и протестирую на ней. Может быть это еще различие между Linux и Windows.
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

Toshkarik
Earned a small fee
Earned a small fee
Posts: 18
Joined: Thu Oct 18, 2012 3:18 am
Location: Russia

Re: Tree selection changing event

Post by Toshkarik » Sun Aug 25, 2013 7:06 pm

Буду очень Вам благодарен.

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Tree selection changing event

Post by Mojo » Sun Aug 25, 2013 7:30 pm

Не дотерпел до завтра, скачал и скомпилировал 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 )
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

Toshkarik
Earned a small fee
Earned a small fee
Posts: 18
Joined: Thu Oct 18, 2012 3:18 am
Location: Russia

Re: Tree selection changing event

Post by Toshkarik » Sun Aug 25, 2013 7:35 pm

Спасибо. Я брал из svn репозитория, не помню точно номер ревизии. Попробую сейчас последнюю скачать.

Toshkarik
Earned a small fee
Earned a small fee
Posts: 18
Joined: Thu Oct 18, 2012 3:18 am
Location: Russia

Re: Tree selection changing event

Post by Toshkarik » Mon Aug 26, 2013 12:42 am

Собрал я стабильную 2.9.5 под vc9, проблема та же самая. При запуске этого приложения несколько раз появляется диалоговое окно из обработчика, и программа виснет намертво.

SteelRat
Experienced Solver
Experienced Solver
Posts: 50
Joined: Tue Sep 08, 2009 4:42 pm
Location: Russia, Obninsk

Re: Tree selection changing event

Post by SteelRat » Mon Nov 11, 2013 6:32 pm

Code: Select all

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

Post Reply