私は wxDialog の独自のサブクラスを作成していますが、次のようにモードレス ダイアログとして使用するとうまく機能します。
AddDialog newAddDialog = new AddDialog(this, wxID_ANY, _T("Dialog Title"), wxDefaultPosition, wxDefaultSize, 0);
if (newAddDialog.ShowModal() == wxID_OK)
{
//do something
}
ShowModal() を使用すると、OK またはキャンセルが押されるまでプログラムのフローが停止します。ダイアログを表示する必要がありますが、GUI の流れを止めないでください。
AddDialog newAddDialog = new AddDialog(this, wxID_ANY, _T("Dialog Title"), wxDefaultPosition, wxDefaultSize, 0);
if (newAddDialog.Showl() == wxID_OK)
{
//do something
}
Show() を使用すると、ダイアログが一時的に表示されてから消えます。スコープの問題かもしれないと思ったので、newAddDialog のポインターを使用しました。その後、ダイアログが表示され、[OK] または [キャンセル] をクリックするとダイアログが閉じますが、[OK] をクリックしても if ステートメントのコードが実行されません。
誰も続行方法を知っていますか?ありがとう。
さらなる解明:
別のクラスでオーバーライドする Dialog サブクラスに仮想 void 関数があります。オーバーライドするとイベントが機能しないように見えますが、実際の Dialog サブクラスに void があると、イベント呼び出しが発生します。これはオーバーライドの問題のようですが、何が問題になるのかわかりません。これは、OnInit() 呼び出しで呼び出しているメインの GUI ではありません。問題になる可能性はありますか?