選択した項目には何の反応(簡体字):wxToolBar:コードを次のようにドロップダウンメニューを使用しています、私はwxToolBarを使用してい
g_toolBar1->AddTool(TOOLBAR_CMD_CONTROL_DROPDOWN,_("Control elements"),MainWin::getBitmap(gearsXPM,"gears"),wxNullBitmap,wxITEM_DROPDOWN);
custParent->Connect(TOOLBAR_CMD_CONTROL_DROPDOWN,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(DrawCanvasSwitcher::OnToolbar),NULL,g_drawCanvas);
wxMenu *controlMenu=new wxMenu;
// following is repeated several times to have more than onw drop-down item
// (*it) is an iterator to an container holding the required data
wxMenuItem *item=new wxMenuItem(controlMenu,wxID_ANY,(*it)->m_entityParams.m_name,(*it)->m_entityParams.m_shorthelp);
controlMenu->Append(item);
item->SetBitmap(*(*it)->m_entityParams.m_bmToolbar);
item->SetId((*it)->m_wxID);
custParent->Connect(item->GetId(),wxEVT_COMMAND_TOOL_DROPDOWN_CLICKED,wxCommandEventHandler(DrawCanvasSwitcher::OnMenu),NULL,g_drawCanvas);
g_toolBar1->SetDropdownMenu(TOOLBAR_CMD_CONTROL_DROPDOWN,controlMenu);
g_toolBar1->Realize();
は、したがって、最初の接続は、()成功します一番上のツールバー項目をクリックすると、私はDrawCanvasSwitcher :: OnToolbar()で終わります。 2番目のConnect() - 同じファイル内の異なる位置からコピーされ、通常のメニュー項目で正常に動作する場所は機能しません。ツールバーのドロップダウンを選択すると、DrawCanvasSwitcher :: OnMenu()でイベントが発生することはありません項目。イベントタイプは、wxWidgets 3.1に付属のツールバーサンプルで使用されているものと同じです。 g_drawCancasとcustParentはすべて有効です(プレーンなメニュー項目でも機能します)。
クリックしたアイテムにイベントが表示されないのはなぜですか?
編集:まだ何の違い、いかなる場合をしない代わりにwxEVT_COMMAND_TOOL_DROPDOWN_CLICKEDのwxEVT_COMMAND_MENU_SELECTEDを使用して...私はいつものように、最善のことを行うには、コード内で明らかに間違った何かを見、そうではないん
SetId()を使ってIDを設定する理由がありました。メニュー項目を作成する際にIDを設定すると、スムーズに動作します - ありがとう! Connect()は、私がまだバージョン2.8になっているいくつかのプラットフォームでこのアプリケーションをコンパイルする必要があるため、使用されています... – Elmi