ボタンのグリッドを使用して WXWidgets にウィンドウを設定しようとしています。これらの各ボタンは、別のウィンドウを開きます。押されたボタンに応じて、各ウィンドウへの呼び出しを個別の関数で行うことで、これを実行できることがわかりました。しかし、それは少し効率が悪いようです。
私がやりたいことは、これらのボタンのそれぞれがクリックされたときに同じ関数を呼び出すようにすることですが、開いているウィンドウを決定するために使用される ID を渡します。
私が使用している基本的なコードは次のとおりです(ビットが取り除かれ、ボタンをテストするためだけにアプリケーションを閉じるボタンがあります)
Simple::Simple(const wxString& title, int x, int y)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(x,y))
{
wxPanel *testPanel = new wxPanel(this,wxID_ANY, wxDefaultPosition,wxSize(270, 150));
wxButton *testButton = new wxButton(testPanel, wxID_EXIT, wxT("Actors"), wxPoint(20,20));
Connect(wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(Simple::eventWindowCall));
testButton->SetFocus();
Centre();
}
void Simple::eventWindowCall(wxCommandEvent & WXUNUSED(event))
{
Close(true); //just a line to make sure this function is being called
}
接続を使用するときに、イベント ID の代わりに数値を使用しようとしましたが、ボタンの関数が呼び出されません。理想的には、wxCommandEventHandler(Simple::eventWindowCall(26)) のようなことをして、イベントウィンドウコール関数に case ステートメントを入れて、渡された数に基づいて正しいウィンドウを表示することができます。しかし、これまでのところ、そのアプローチも効果的ではありませんでした。
あなたが提供できるアドバイスは素晴らしいでしょう。これを読んでくれてありがとう。私はこれを理解するために何時間も取り組んできました。