home *** CD-ROM | disk | FTP | other *** search
- UNIT ByeCmds; {$C Demandload Discardable }
-
- (* BYECMDS.PAS - The Commands for BYE
- * Written by Richard R. Sands in Turbo Pascal for Windows
- * Copyright ⌐ Richard R. Sands
- * All rights reserved
- *
- * This module provides the commands that BYE.PAS uses. It is
- * implemented as a "throw-away" code segment, so when memory gets low,
- * this segment will unload itself.
- *)
-
- INTERFACE
-
- USES
- WinTypes, WinProcs;
-
- CONST
- Confirm : Boolean = FALSE; { Confirm Windows Shutdown? }
-
- idm_Quit = 100; { System Menu Items }
- idm_Confirm = 101;
- idm_OS = 102;
- idm_About = 103;
-
- procedure DoAbout(Window : hWnd);
- procedure Quit(Window : hWnd);
- procedure ToggleConfirm(Window:hWnd);
- procedure ModifySystemMenu(Window:hWnd);
-
- IMPLEMENTATION
-
- { -------------------------------------------------------------------------- }
- function About(Dialog: hWnd; Message, WParam: Word; LParam: Longint): Bool; EXPORT;
- begin
- About := True;
- case Message of
- wm_InitDialog: EXIT;
- wm_Command:
- if (WParam = id_Ok) or (WParam = id_Cancel) then
- begin
- EndDialog(Dialog, 1);
- EXIT
- end;
- end;
- About := False
- end;
-
- { -------------------------------------------------------------------------- }
- procedure DoAbout(Window:hWnd);
- var AboutProc: TFarProc;
- begin
- AboutProc := MakeProcInstance(@About, hInstance);
- DialogBox(HInstance, 'AboutBox', Window, AboutProc);
- FreeProcInstance(AboutProc)
- end;
-
- { -------------------------------------------------------------------------- }
- procedure Quit(Window: hWnd);
- var Buffer: Array[0..60] of Char;
- Buffer2: Array[0..13] of Char;
- begin
- if Confirm then
- begin
- LoadString(hInstance, 0, Buffer, 60);
- LoadString(hInstance, 1, Buffer2, 60);
- MessageBeep(0);
- if MessageBox(Window, Buffer,
- Buffer2,
- mb_IconQuestion + mb_OkCancel) = id_Cancel then EXIT;
- end;
- ExitWindows(0, 0) { See 'ya }
- end;
-
- { -------------------------------------------------------------------------- }
- Procedure ToggleConfirm(Window:hWnd);
- var SysMenu : hMenu;
- begin
- SysMenu := GetSystemMenu(Window, FALSE);
- Confirm := NOT Confirm;
- if Confirm then
- CheckMenuItem(SysMenu, idm_Confirm, mf_byCommand+mf_Checked)
- else
- CheckMenuItem(SysMenu, idm_Confirm, mf_byCommand+mf_UnChecked)
- end;
-
- { -------------------------------------------------------------------------- }
- Procedure ModifySystemMenu(Window:hWnd);
- var SysMenu : hMenu;
- begin
- SysMenu := GetSystemMenu(Window, FALSE);
-
- { Add Items to the System Menu }
- AppendMenu(SysMenu, mf_SysMenu+mf_Separator, 0, NIL);
- AppendMenu(SysMenu, mf_SysMenu, idm_Quit, '&Exit Windows');
- AppendMenu(SysMenu, mf_SysMenu, idm_Confirm, 'Confirm &Shutdown');
- AppendMenu(SysMenu, mf_SysMenu, idm_OS, '&Operating System');
- AppendMenu(SysMenu, mf_SysMenu, idm_About, '&About Bye...')
- end;
-
- END.
-