Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
La funzione RemoveMenu (Tutorial completo)

RemoveMenu come si intuisce già da una prima lettura, elimina un oggetto-menu dal menu al quale appartiene. Ricordiamo che gli oggetti-menu sono in sostanza le voci di un menu, considerate come veri e propri oggetti. Troveremo infatti voci di menu formate da testo, immagini, linee separatrici e così via. Ritornando sulla funzione RemoveMenu possiamo aggiungere che nel caso sia applicata per eliminare un sottomenu, questo verrà eliminato dal menu di appartenenza ma non dal resto dell'applicazione, potendo rimanere a disposizione per essere utilizzato in qualche altro punto del progetto. In caso contrario, ossia se l'oggetto sul quale agisce la funzione RemoveMenu non è un sottomenu, allora tale oggetto verrà eliminato in modo permanente.
Come spesso accade per questo genere di API, in caso di successo la funzione ritorna un valore diverso da 0. In caso di errore o di mancato funzionamento dell'API, il valore ritornato sarà proprio 0.
Per quello che riguarda invece i sistemi operativi che supportano RemoveMenu, il problema non sussiste: Windows 95, 98, NT (dalla versione 3.1 in poi), 2000 e CE (dalla versione 1.0 in poi) prevedono questa funzione.
Ecco la dichiarazione della RemoveMenu:

Declare Function RemoveMenu Lib "user32.dll" (ByVal hMenu As Long, ByVal _
uPosition As Long, ByVal uFlags As Long) As Long

Diamo un'occhiata ai parametri da utilizzare con RemoveMenu:

hMenu E' l'indicatore del menu dal quale eliminare un oggetto-menu (cioè una voce)
uPosition Indica il particolare oggetto-menu da eliminare. Questo può essere indicato attraverso un numero univoco per ogni voce del menu oppure tramite un sistema di numerazione che assegna la posizione 0 alla prima voce, la posizione 1 alla seconda e così via. La scelta dipende da come si è impostato il parametro uFlags.
uFlags Ognuno di questi flags specifica il tipo di dato da passare al parametro uPosition, per poter identificare in modo corretto un oggetto-menu:
MF_BYCOMMAND: è l'identificatore univoco dell'oggetto-menu da rimuovere
MF_BYPOSITION: è la posizione dell'oggetto-menu da rimuovere


Per concludere la trattazione, diamo un'occhiata alle costanti relative ai flags appena visti:

Const MF_BYCOMMAND = &H0
Const MF_BYPOSITION = &H400


A questo punto vediamo un esempio. Sul piano abbiamo solo un semplice pulsante. Quando l'utente preme il pulsante Command1 (che avremo provveduto a porre sul piano in fase di progettazione), si disabilitano i due pulsanti della finestra che massimizzano o minimizzano le dimensioni della form stessa. Notare che si dichiara soltanto MF_BYCOMMAND in quanto si è deciso a priori che il parametro uPosition deve indicare la posizione dell'oggetto-menu.
Inoltre in questo esempio utilizzeremo la funzione GETSYSTEMMENU già vista in una lezione precedente.

Private Declare Function RemoveMenu Lib "user32.dll" (ByVal hMenu As Long, ByVal _
uPosition As Long, ByVal uFlags As Long) As Long
Private Declare Function GetSystemMenu Lib "user32.dll" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Const MF_BYCOMMAND = &H0
Const SC_MINIMIZE = &HF020
Const SC_MAXIMIZE = &HF030

Private Sub Command1_Click()
'variabile contenente l'intero identificatore del menu di sistema
Dim hSysMenu As Long
'si associa alla variabile l'intero identificatore del menu di sistema
hSysMenu = GetSystemMenu(Me.hWnd, 0)
'rimuove le voci massimizza e riduci a icona
RemoveMenu hSysMenu, SC_MINIMIZE, MF_BYCOMMAND
RemoveMenu hSysMenu, SC_MAXIMIZE, MF_BYCOMMAND
End Sub


Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it