質問

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());
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top