Corso di Visual C++

Utilizzare i menu

 

In questa puntata vedremo come creare delle voci di menu e linkarle al nostro codice sorgente; mettiamoci subito al lavoro perché avremo molta strada da percorrere.

Innanzitutto creiamo un nuovo progetto e chiamiamolo Prg36; utilizziamo le solite opzioni: SingleDocumentInterface e la classe vista di default CView.
Ora abbiamo dinanzi il classico schermo di lavoro di Visual C++, apriamo l'editor delle risorse (la scheda tra ClassView e FileView) e da qui selezioniamo la voce menu.

Se tutto è ok, ora compare l'identificatore del menu IDR_MAINFRAME; questo ID è l'ID di default che il Wizard assegna al progetto per le sue risorse standard. Se clicchiamo su questa voce vediamo le voci di livello superiore del menu della nostra applicazione: File, Modifica, Visualizza...

Se clicchiamo su queste voci si aprono le voci di menu di livello inferiore, facendo doppio clic su una di queste è possibile editarne le proprietà; tra queste le più importanti sono ID, Caption e Prompt.

ID è l'identificatore che contraddistingue la voce di menu ed il suo nome deve essere diverso da ogni altro nel progetto al fine di evitare strani conflitti. L'ID è rappresentato da una stringa in maiuscolo che però è implicitamente rappresentato internamente da una costante numerica. Per vedere il valore numerico di queste costanti, dal menu View del VC++, basta selezionare 'Resource Symbols'. Noi non avremo quasi mai bisogno di conoscere questo valore, la costante che lo rappresenta è molto più facile da ricordare e gestire (anche se i due valori sono del tutto intercambiabili).

L'altro valore importante delle proprietà delle voci di menu è Caption, questo è il vero e proprio testo della voce di menu. E' possibile anche specificare il tasto scorciatoia, cioè il tasto che richiama la voce una volta che si è aperto il menu; questo è da non confondere con l’acceleratore di tastiera. Tale tasto da premere è contraddistinto dal simbolo di sottolineatura sotto al carattere in questione per la scorciatoia. Per specificare tale carattere basta farlo precedere dal simbolo &. In un menu popup i simboli scorciatoia devono essere unici per evitare conflitti impredicibili. Cioè se ci sono ad esempio due voci Apri e Attendi, non si deve specificare per entrambi come carattere scorciatoia A, ma devono essere due caratteri diversi.

Talvolta in questo campo c'è anche il simbolo per ricordare l'acceleratore di tastiera; lo si può riconoscere dal fatto che dopo la voce c'è il simbolo \t seguito dall'acceleratore. L'acceleratore di tastiera è la combinazione di tasti che invoca l'esecuzione di una voce di menu; ad esempio Ctrl+C sostituisce solitamente il clic sulla voce copia del menu Modifica.
Ad esempio se vediamo la voce Nuovo del menu File, troviamo per Caption il seguente valore: "&Nuovo\tCtrl+N"
Questo sta a significare che N è il tasto scorciatoia e Ctrl+N l'acceleratore di tastiera.
Il simbolo \t serve per allineare a destra il testo che viene dopo, in tal modo tutti gli acceleratori saranno correttamente allineati.

Voglio ricordare, a scanso di equivoci, che per specificare l'acceleratore di tastiera non basta mettere il simbolo nel campo Caption, questo è infatti solo un appunto visivo per l'utente.
Per specificarlo occorre infatti cliccare sulla voce Accelerator dell'editor delle risorse e qui poi specificare per l'ID che ci interessa la combinazione di tasti che vogliamo usare.

L'ultimo campo interessante delle proprietà è Prompt, qui va specificato il testo che appare sulla barra di stato quando si passa il mouse sulla voce di menu. Spesso qui vengono specificate due stringhe separate dal simbolo \n. La prima stringa in tal caso è quella che appare sulla barra di stato, mentre le seconda è quella del tooltip. Il tooltip è la piccola finestrella dei suggerimenti che compare quando ci fermiamo per qualche secondo su una voce della barra degli strumenti. In genere si posiziona vicino al puntatore del mouse ed ha uno sfondo tendente al giallo.
Direte voi, ma non stiamo parlando dei menu? Si è vero, ma il comportamento è esattamente lo stesso tra comandi di menu e comandi delle barre degli strumenti, viene perfino inviato lo stesso messaggio (WM_COMMAND) alla nostra applicazione quando si seleziona la voce o si fa clic sul pulsante della barra. Addirittura si possono usare gli stessi identificatori (per contraddistinguere le stesse operazioni) sia nei menu che sulle toolbar (barre degli strumenti).

Nella prossima puntata esamineremo le altre proprietà dei menu.

 

Torna all'indice Generale del corso di Corso di Visual C++ di Software Planet