Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
Source/MenuHandler.cp
/* |
File: MenuHandler.cp |
Contains: xxx put contents here xxx |
Version: xxx put version here xxx |
Copyright: © 1999 by Apple Computer, Inc., all rights reserved. |
File Ownership: |
DRI: xxx put dri here xxx |
Other Contact: xxx put other contact here xxx |
Technology: xxx put technology here xxx |
Writers: |
(BWS) Brent Schorsch |
Change History (most recent first): |
<SP1> 7/1/99 BWS first checked in |
*/ |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ Includes |
#include <Devices.h> |
#include <Processes.h> |
#include <ToolUtils.h> |
#include <Windows.h> |
#include <stdio.h> |
#include <string.h> |
#include "AboutBox.h" |
#include "AppShellResources.h" |
#include "EventHandler.h" |
#include "MemoryHandler.h" |
#include "MenuHandler.h" |
#include "ShellWindow.h" |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ Private Definitions |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ Private Constants |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ Private Types |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ Private Structs |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ Private Variables |
static Boolean gMenuHandlerInited = false; |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ Private Functions |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ Public Variables |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ MenuInit |
void |
MenuInit(void) |
{ |
Handle theMenuBar; |
//¥ Load the menu bar |
theMenuBar = GetNewMBar(kMBAR_Main); |
if (theMenuBar == nil) |
ExitToShell(); |
//¥ Install the menu bar |
SetMenuBar(theMenuBar); |
//¥ Add Apple Menu items |
AppendResMenu(GetMenuHandle(kMENU_Apple), 'DRVR'); |
DisposeHandleZ(&theMenuBar); |
DrawMenuBar(); |
gMenuHandlerInited = true; |
} |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ MenuPrepForSelect |
void |
MenuPrepForSelect(void) |
{ |
DrawMenuBar(); |
} |
//¥ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ MenuDoChoice |
Boolean |
MenuDispatch(SInt32 inMenu, const short inModifiers) |
{ |
SInt16 theMenu; |
SInt16 theItem; |
UInt32 menuCommand; |
MenuHandle theMenuHandle; |
Boolean handled = true; |
WindowPtr whichWindow; |
ShellWindow *myWindow = nil; |
if (false == gMenuHandlerInited) |
return (false); |
theMenu = HiWord(inMenu); |
theItem = LoWord(inMenu); |
theMenuHandle = GetMenuHandle(theMenu); |
//¥ Small hackish thing because the menu command stuff doesn't |
//¥ bother mentioning that you got a desk accessory. |
if ((kMENU_Apple == theMenu) && (theItem > 2)) |
{ |
Str255 daName; |
GrafPtr oldPort; |
GetPort(&oldPort); |
GetMenuItemText(theMenuHandle, theItem, daName); |
OpenDeskAcc(daName); |
SetPort(oldPort); |
} |
else |
{ |
GetMenuItemCommandID(theMenuHandle, theItem, &menuCommand); |
whichWindow = FrontWindow(); |
if (userKind == GetWindowKind(whichWindow)) |
myWindow = (ShellWindow *) GetWRefCon(whichWindow); |
if (nil != myWindow) |
handled = (myWindow->Menu(menuCommand, inModifiers)); |
if (!handled) |
switch (menuCommand) |
{ |
case kMenuCMD_AboutBox: |
AboutBox(); |
break; |
case kMenuCMD_Quit: |
gDone = true; |
break; |
default: |
handled = false; |
break; |
} |
} |
HiliteMenu(0); |
DrawMenuBar(); |
return (handled); |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-10-14