Liten Datorhandbok För Målmedvetna
Academic Computer Club, Umeå Universitet, 2000
Menyer
Som beskrivits tidigare så sätts menyerna enklast upp genom att använda sig av en MENU- och en MBAR-resurs kombinerat. När användaren väljer ett menykommando eller trycker ner en tangentkombination, så omvandlas detta av datorn till ett kommandonummer. De högsta två byten av detta nummer anger menyns ID-nummer och de lägsta två anger vilket föremål som valdes i menyn. Vår händelseloop skickar detta kommandonummer till funktionen doMenuChoice, som skulle kunna se ut som:
void doMenuChoice(long menuChoice) //Sköter om menyvalen.
{
switch(HiWord(menuChoice))
{
case 128: // Apple-menyn, förutsatt att du gett den detta ID.
if (LoWord(menuChoice)==1)
doAbout(); // Första föremålet är Om... rutan.
else
{ // Säg åt systemet att öppna programmet som valts.
GetItem(GetMHandle(128),item,deskAcc);
OpenDeskAcc(deskAcc);
}
break;
case 129: // Arkiv-menyn förutsatt att du gett den detta ID.
switch (LoWord(menuChoice))
{
case quitCmd: // Avsluta, vi antar att du definierat quitCmd till att
ExitToShell(); // svara mot avsluta-kommandots nummer.
break;
// Leta efter andra kommandon här
}
break;
case 130: // Redigera-menyn förutsatt att du gett den detta ID.
if (!SystemEdit(item-1)) // Ge systemet en chans att hantera.
// Hantera meny-valen här.
break;
}
}
Menyerna i ditt program skall hela tiden uppdateras, så att de menyalternativ som inte går att välja för tillfället är nedtonade. Du tonar ner ett menyalternativ genom att ge kommadnona:
menuHandle=GetMHandle(menuID);
DisableItem(menuHandle,menuItem);
På motsvarande sätt slår du på menyalternativet igen med kommandot EnableItem.
Du kan sätta och ta bort bockar på menyerna genom kommadot
CheckItem(menuHandle, menuItem, checked);
Om checked är true så bockas menyalternativet för, och om checked är false så tas bocken bort.
Författat av Niklas Frykholm
Bakåt , Framåt , Upp, Huvudsida
Denna sida ändrades sist av
handbok den
08/05 1996 18:09:40.
Last modified Wednesday, 08-May-1996 18:09:40 CEST