2011-07-14 2 views
1

私はC++を使用してSDLの上にGUIライブラリを作成しています。 (Gui図書館の作り方を理解するために、なぜ私は実際に知識を得るためにそれをやっているのですか?)そして、私はgtk +やwxWidgetsのような信号接続システムを作りたいと思っています...C++でシグナルとイベントをどのように実装しますか?

g_signal_connect(mybutton,"clicked",gtk_main_quit); //Gtk+ 

EVT_MENU(wxID_EXIT,OnQuit); //WxWidgets 

私は関数ポインタを使ってこれを行うことができます。しかし、どのように私はメインループに関数を追加するのですか?

またはこれを行うより良い方法はありますか?

答えて

7

最も簡単な方法は、ライブラリから借用することです(boost::signalまたはboost::signal2など)。次善策は自分自身を実装することですが、boost::bind(接続を有効にする)やクライアントの一般的な接続を簡素化するC++ 0x機能(std::function/boost::function)のようなライブラリからほとんどの機能を借用しています。

とそのsignals2ライブラリを使用することをお勧めします。間違っていて、既にそこで解決されていることがたくさんあります。

+0

ありがとうございました。 (使用上の良いチュートリアル/記事/ドキュメントを含む場所は知っていますか?) – ApprenticeHacker

+2

[documentation](http://www.boost.org/doc/libs/1_40_0/doc/html/signals2.html)のboostライブラリは通常かなり使いやすく、多くの場合、コードの例が含まれています。あなたはおそらくそこから始めるべきです。 –

関連する問題