home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-07-07 | 1.9 KB | 100 lines | [TEXT/PJMM] |
- unit MyBasicMenus;
-
- interface
-
- type
- menuReturn = (MR_None, MR_Handled, MR_About, MR_Quit);
-
- procedure InitBasicMenus (about, filem, quitm: str255);
- procedure FinishBasicMenus;
- function HandleBasicMenuEvents (var er: eventRecord): menuReturn;
- { returns true if we handle it }
-
- implementation
-
- procedure InitBasicMenus (about, filem, quitm: str255);
- var
- mh: MenuHandle;
- begin
- mh := NewMenu(128, chr(20));
- AppendMenu(mh, about);
- AppendMenu(mh, '(-');
- AddResMenu(mh, 'DRVR');
- InsertMenu(mh, 0);
- mh := NewMenu(129, filem);
- AppendMenu(mh, quitm);
- InsertMenu(mh, 0);
- DrawMenuBar;
- end;
-
- procedure FinishBasicMenus;
- begin
- end;
-
- function HandleBasicMenuEvents (var er: eventRecord): menuReturn;
- var
- didit: menuReturn;
- procedure DoMenu (mResult: longInt);
- var
- mMenu, mItem: integer;
- DAName: str255;
- oe: OSErr;
- begin
- mMenu := HiWord(mResult);
- mItem := LoWord(mResult);
- case mMenu of
- 128: begin
- if mItem = 1 then begin
- didit := MR_About;
- end
- else begin
- didit := MR_Handled;
- GetItem(GetMHandle(128), mItem, DAName);
- oe := OpenDeskAcc(DAName);
- HiliteMenu(0);
- end;
- end;
- 129:
- didit := MR_Quit;
- otherwise
- ;
- end;
- end;
- var
- twp: windowPtr;
- mResult: longInt;
- code: integer;
- ch: char;
- begin
- didit := MR_None;
- mResult := 0;
- case er.what of
- MouseDown: begin
- code := FindWindow(er.where, twp);
- case code of
- inMenuBar: begin
- mResult := MenuSelect(er.where);
- didit := MR_Handled;
- end;
- otherwise
- ;
- end;
- end;
-
- keyDown: begin
- ch := chr(BAND(er.message, CharCodeMask));
- if BAND(er.modifiers, CmdKey) <> 0 then begin
- mResult := MenuKey(ch);
- didit := MR_Handled;
- end;
- end;
-
- otherwise
- end;
- if mResult <> 0 then begin
- DoMenu(mResult);
- end;
- HandleBasicMenuEvents := didit;
- end;
-
- end.