2010-12-01 9 views
0

私は複数の項目を追加するCMenuインスタンスを持っています。私が追加した項目の1つについては、MF_HILITEフラグを設定しました。Windowsメニュー:MF_HILITEフラグがクリアされない

私がメニューを表示すると、適切な項目が要求どおりに正しく点灯します。問題は、マウスをその上に移動してから離れるまでハイライト状態を維持することです。私はその時に一つのアイテムをハイライトにしたいだけです。別のアイテムがハイリッジされていると、Windowsはそのライトを消灯しないようです。

他のアイテムがハイライトを取得したらすぐにどのように消灯することができますか?私はマウスオーバーコールバックやメニューのメッセージを見つけることができませんでした、そして、私はどちらか無効を見つけることができませんでした。

+0

私は奇妙な方法でメニューを使用していることを知っています:)特定のシナリオでは、CMenuをComboboxポップアップとして使用しています。コンボボックスのポップアップが開くと、現在の項目がハイライトされ、ユーザーが移動を移動するとすぐにハイライト項目が変更されます。 – decasteljau

答えて

0

これは可能ではありません。

メニューで現在選択されている項目の内部状態を設定できません。 MF_HILITEまたはHiliteMenuItemを使用すると、現在選択されている項目が設定されず、ビジュアルスタイルのみが設定されます。

回避策として、代わりに私が必要とするすべての機能を備えたListBoxというポップアップを使用しました。

0

あなたはMF_HILITEを奇妙な方法で使用しています。アイテムは実際には強調表示されていません。まるでそのように描かれています。ユーザーがenterを押すと、「強調表示された」項目は選択されません。

あなたはおそらくMF_DEFAULTを探しています。

+0

私は奇妙な方法でメニューを使用していることを知っています:)特定のシナリオでは、メニューをComboboxポップアップとして使用しています。コンボボックスのポップアップが開くと、現在の項目がハイライトされ、ユーザーが移動を移動するとすぐにハイライト項目が変更されます。 – decasteljau

関連する問題