【GUI】wxWidgets(旧wxWindows) その2【サイザー】at TECH【GUI】wxWidgets(旧wxWindows) その2【サイザー】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト981:デフォルトの名無しさん 06/09/01 23:54:48 MFCから逃れたくてGUIツールキットを探してる人には あまりうれしくないけどね。 982:デフォルトの名無しさん 06/09/02 00:00:58 >>979 wxNGって何? 983:デフォルトの名無しさん 06/09/02 00:30:52 >>982 wx Next Generation == 次世代wx NGは新しいものには何でも使われる定番の名前。 984:デフォルトの名無しさん 06/09/02 01:07:41 >>983 ありがとう。 wxNGをメーリングリストのログやフォーラムを検索してもほとんど言及がないし 唐突に出てくるからNGは一般的な言葉な略語なんだろうなとは思ったが、それだけに うまくNGの意味を検索する術を思いつかなかったw 985:978 06/09/02 07:46:30 ちょっとわかりずらいので書き直し HTTPサーバを想像してください コードはサンプルのものですので、見ればわかります 1.サーバ作成 EVT_SOCKET(SERVER_ID, MyFrame::OnServerEvent) m_server = new wxSocketServer(addr); m_server->SetEventHandler(*this, SERVER_ID); m_server->SetNotify(wxSOCKET_CONNECTION_FLAG); m_server->Notify(true); サーバを作成し、Acceptイベントを登録しています 2.Accept void MyFrame::OnServerEvent(wxSocketEvent& event) sock = m_server->Accept(false); sock->SetEventHandler(*this, SOCKET_ID); sock->SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_LOST_FLAG); sock->Notify(true); 接続要求を受け入れ、受信イベントを登録しています 3.データ受信 void MyFrame::OnSocketEvent(wxSocketEvent& event) wxSocketBase *sock = event.GetSocket(); sock->Read(&c, 1); 受信要求があればそれぞれのソケットにReadを掛けます この時、クライアントから同時に複数の接続を行うと、それぞれが別スレッドとしてイベント化されます Readがほぼ同時に別のソケットに対して呼ばれるのですが、イベントハンドラはMyFrameのもので同一です この時、Readは内部でwxYield(GUI更新)を呼び出します wxYieldは1度の関数呼び出し中に2度以上呼んではいけない仕様になっています そこで「wxYield called recursively」というAssertを出してエラー終了します 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch