メニュー項目のチェック/チェック解除と有効/無効にはEVT_UPDATE_UI(yourCommandID, yourEventHandler)
を使用してください。 UpdateUIイベントハンドラで、アイテムが有効になっているケースを指定する必要があります。 あなたは、コマンドID_RADIO_1とID_RADIO_2でグループをラジオボタンしていると、彼らは条件bool m_SomeConditionVariable
に応じて、チェックする必要があり、あなたが
void OnRadio1UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == true);
}
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == false);
}
のような彼らのために2つのイベントハンドラを作成する必要があり、変数がfalseの場合にのみ、この場合には最初のラジオ項目がチェックされます変数がtrueのときに2番目の変数がチェックされます。
変数を保存するために計算された条件を使用することもできます。
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
// Item will be enabled only when text control has non-empty value
event.Enabled(!m_SomeTextCtrl->GetValue().Trim().IsEmpty());
}
1つの問題があります。私はこのラジオグループ(サブメニューにあります)を動的に形成すると考えています(スタートアップのどこかから読み込んだタイムアウトリストのようなものです)。 – jonny
Connect()メソッドを使用して、動的にイベントハンドラをwxFormに追加することができます。 rmenu項目を作成するときには、識別子を作成するためにwxNewId()を使用し、イベントハンドラをこれらの識別子に接続することができます。 ポップアップメニューを閉じた後、これらのイベントハンドラを切断する必要があります。 –