0

Windows (wxWidgets-2.8.9) で wxTaskBarIcon のポップアップ メニューを使用しています。ポップアップ メニューにラジオ アイテムを入力すると、クリックしても状態が変化しません。ポップアップ メニュー リストの最初の項目が選択済みとしてマークされます。ただし、他の項目を選択しても、これは変わりません。

現在、アイテム クリック イベント ハンドラはありません (アプリケーションは UI プロトタイプに似ています)。このハンドラーのアイテム チェック ステータスを手動で更新する必要がありますか?それともフレームワークの義務ですか?

4

1 に答える 1

1

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 の場合にのみ最初のラジオ項目がチェックされ、変数が 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());
}
于 2009-03-10T18:19:46.393 に答える