Liten Datorhandbok För Målmedvetna

Academic Computer Club, Umeå Universitet, 2000


Macintosh Programmering

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