私はVisual C++ 6.0を使ってプロジェクトを進めています。現在ログインしているユーザーに割り当てられている権限によっては、特定のメニュー項目を有効または無効にする必要があります。これは私が使用しているコードです:リアルタイムでCMenu項目を有効/無効にする最も良い方法
// If the currently logged in user doesn't have permission to edit invoices
if (!((CMyApp *)AfxGetApp())->UserHasPermission(PERMISSION_EditInvoice))
{
// Disable the Edit Menu
pMain->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
}
else
{
// Enable the Edit Menu
pMain->EnableMenuItem(1, MF_BYPOSITION | MF_ENABLED);
}
それはしかし、私はそれを置くのに最適な場所を見つけるためにしようとしている、私はそれが何をしたい正確に何を行います。私がそれをOnInitialUpdate()
に入れれば、私が望む結果が得られますが、開かれた最初の請求書だけが得られます。ダイアログを閉じずにもう一度請求書を開くと、コードは再び実行されません。 OnUpdate()
は別の請求書を開くときに呼び出されず、私が見つけた他の唯一の場所はOnDraw()
です。OnDraw()
の問題は、メニュー項目がGrayed outからEnabledに視覚的に変更されたり、それをクリックしてみてください。
並べ替え問題は、請求書が変更されるたびに呼び出されるのではなく、ユーザーが最初にクリックしなくても、GUIの新しい状態を表示するようにGUIを更新することができないということではありませんでした。 – NobodyNothing