Я работаю над проектом, использующим Visual C ++ 6.0, и мне нужно иметь возможность включать или отключать определенные пункты меню в зависимости от разрешений, назначенных текущему вошедшему в систему пользователю. Это код, который я использую:
// 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()
заключается в том, что пункт меню визуально не меняет состояние с серого на Включено или наоборот, пока вы не попытаетесь щелкнуть по нему.