私はダイアログベースのMFCアプリケーションを持っています。ダイアログボックスにはメニューがあり、ダイアログボックスでメニューアクセラレータを有効にするにはhereというテクニックを使用しています。ダイアログボックスのメニューコマンド更新ハンドラ
これは問題なく動作しますが、メニューコマンドの更新ハンドラを実装する方法が見つからないようです。あるいは、私は更新ハンドラを実装しましたが、MFCに呼び出すための良い方法を見つけることができないようです。
Webを検索すると、UpdateDialogControls()
のような機能があり、ダイアログの子コントロールのコマンド更新ハンドラを実装しています。しかし、私はダイアログボックスのメニューでコマンドを実行したい。
提案がありますか?
なぜなら、ダイアログはメニューやメニューアクセラレータを持っていないはずだからです。オリジナルの問題に対する「本当の」答えは「ダイアログボックスにメニューを入れない」ことでした。それはWindowsの方法ではありません。 – Roel
@Roel:私はもっと同意できませんでした。 MFC自体は、ダイアログベースのアプリケーションのアイデアをサポートしています。多くの場合、メニューをダイアログに基づいて配置するのは意味がありません。しかし時々そうです。 –
MFCダイアログベースのアプリケーションは、メニューのない単純なダイアログでも、「フォーム」(つまりダイアログ)に基づいたビューを持つSDIアプリケーションでもかまいません。その場合、ダイアログはメニューまたはアクセラレータを処理しません。フレームウィンドウ(CMainFrame)は処理します。メニューをダイアログに配置する方法に関する情報を簡単に見つけることができない理由があります。 PreTranslateMessage()を使用する必要がある時間の95%は、何か間違っているためです.MFCではない、またはWindowsでない方法です。 – Roel