PDA

Visualizza la versione completa : [C++] Attivare e disattivare una voce del menu


emi81
29-05-2007, 15:46
ho un form con un menu.
vorrei poter attivare e disattivare una voce del menu.

come devo fare ?


Grazie!

zero85
29-05-2007, 15:52
c' l'api EnableMenuItem (http://msdn2.microsoft.com/en-us/library/ms647636.aspx)

emi81
29-05-2007, 18:03
ottimo!
grazie per il link!

solo che mi da un errore che non capisco proprio!

il mio codice questo :




void CMainFrame::DisableMenu()
{
HMENU hMenu ;

hMenu = GetMenu(m_hWnd);

EnableMenuItem(hMenu, 1, MF_BYPOSITION | MF_GRAYED);
}


L'errore che mi da :

error C2660: 'GetMenu' : function does not take 1 parameters

non capisco proprio perch!
devo includere qualche libreria o file header particolare?

andbin
29-05-2007, 18:16
Originariamente inviato da emi81
L'errore che mi da :

error C2660: 'GetMenu' : function does not take 1 parameters

non capisco proprio perch!Sicuramente stai lavorando con MFC. Innanzitutto verifica se in MFC (che non conosco) ci sono classi apposite e pi comode per gestire i men.

Come ripeto, non conosco MFC, ma "a spanne" posso solo immaginare che GetMenu sia un metodo disponibile nella tua classe (magari ereditato ...) e se vuoi chiamare veramente la API Win32 GetMenu devi fare ::GetMenu (:: l'operatore di scope resolution).

MItaly
29-05-2007, 18:17
void CMainFrame::DisableMenu()
{
HMENU hMenu;
hMenu = ::GetMenu(m_hWnd);
EnableMenuItem(hMenu, 1, MF_BYPOSITION | MF_GRAYED);
}

oppure


void CMainFrame::DisableMenu()
{
HMENU hMenu;
hMenu = GetMenu();
EnableMenuItem(hMenu, 1, MF_BYPOSITION | MF_GRAYED);
}

---EDIT---
Troppo tardi...

emi81
29-05-2007, 18:47
ok, grazie!
domani provo a vedere e poi vi faccio sapere!


Grazie ancora!

emi81
30-05-2007, 09:10
fatto!
funziona correttamente la soluzione :



void CMainFrame::DisableMenu()
{
HMENU hMenu;
hMenu = ::GetMenu(m_hWnd);
EnableMenuItem(hMenu, 1, MF_BYPOSITION | MF_GRAYED);
}



Grazie a tutti!

Loading