質問
WindowsでwxTaskBarIconのポップアップメニューを使用しています(wxWidgets-2.8.9)。 ポップアップメニューをラジオ項目で埋めても、クリックしても状態は変わりません。 ポップアップメニューリストの最初の項目が選択済みとしてマークされます。ただし、他の項目を選択してもこれは変わりません。
現在、アイテムクリックイベントハンドラはありません(アプリケーションはUIプロトタイプに似ています)。このハンドラーでアイテムチェックステータスを手動で更新する必要がありますか、それともフレームワークの義務ですか?
解決
メニュー項目のチェック/チェック解除および有効化/無効化には、 EVT_UPDATE_UI(yourCommandID、yourEventHandler)
を使用する必要があります。
UpdateUIイベントハンドラーで、アイテムが有効な場合を指定する必要があります
例えば。コマンドID_RADIO_1およびID_RADIO_2のラジオボタングループがあり、条件 bool m_SomeConditionVariable
に応じてチェックする必要があります。次に、それらのような2つのイベントハンドラーを作成する必要があります
void OnRadio1UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == true);
}
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == false);
}
この場合、最初のラジオ項目は変数がfalseの場合にのみチェックされ、2番目は変数がtrueの場合にチェックされます。
変数を格納するために計算された条件も使用できます。例:
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
// Item will be enabled only when text control has non-empty value
event.Enabled(!m_SomeTextCtrl->GetValue().Trim().IsEmpty());
}
所属していません StackOverflow