home *** CD-ROM | disk | FTP | other *** search
/ Windoware / WINDOWARE_1_6.iso / winutil / bye103p / byecmds.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1991-06-12  |  3.1 KB  |  102 lines

  1. UNIT ByeCmds; {$C Demandload Discardable }
  2.  
  3.    (* BYECMDS.PAS - The Commands for BYE
  4.     * Written by Richard R. Sands in Turbo Pascal for Windows
  5.     * Copyright ⌐ Richard R. Sands
  6.     * All rights reserved
  7.     *
  8.     * This module provides the commands that BYE.PAS uses.  It is
  9.     * implemented as a "throw-away" code segment, so when memory gets low,
  10.     * this segment will unload itself.
  11.     *)
  12.  
  13. INTERFACE
  14.  
  15.    USES
  16.      WinTypes, WinProcs;
  17.  
  18.    CONST
  19.      Confirm     : Boolean = FALSE;  { Confirm Windows Shutdown? }
  20.  
  21.      idm_Quit    = 100;  { System Menu Items }
  22.      idm_Confirm = 101;
  23.      idm_OS      = 102;
  24.      idm_About   = 103;
  25.  
  26.    procedure DoAbout(Window : hWnd);
  27.    procedure Quit(Window : hWnd);
  28.    procedure ToggleConfirm(Window:hWnd);
  29.    procedure ModifySystemMenu(Window:hWnd);
  30.  
  31. IMPLEMENTATION
  32.  
  33. { -------------------------------------------------------------------------- }
  34. function About(Dialog: hWnd; Message, WParam: Word; LParam: Longint): Bool; EXPORT;
  35.   begin
  36.     About := True;
  37.     case Message of
  38.       wm_InitDialog: EXIT;
  39.       wm_Command:
  40.         if (WParam = id_Ok) or (WParam = id_Cancel) then
  41.         begin
  42.           EndDialog(Dialog, 1);
  43.           EXIT
  44.         end;
  45.     end;
  46.     About := False
  47.   end;
  48.  
  49. { -------------------------------------------------------------------------- }
  50. procedure DoAbout(Window:hWnd);
  51.   var AboutProc: TFarProc;
  52.   begin
  53.      AboutProc := MakeProcInstance(@About, hInstance);
  54.      DialogBox(HInstance, 'AboutBox', Window, AboutProc);
  55.      FreeProcInstance(AboutProc)
  56.   end;
  57.  
  58. { -------------------------------------------------------------------------- }
  59. procedure Quit(Window: hWnd);
  60.   var Buffer: Array[0..60] of Char;
  61.       Buffer2: Array[0..13] of Char;
  62.   begin
  63.      if Confirm then
  64.      begin
  65.         LoadString(hInstance, 0, Buffer, 60);
  66.         LoadString(hInstance, 1, Buffer2, 60);
  67.         MessageBeep(0);
  68.         if MessageBox(Window, Buffer,
  69.                               Buffer2,
  70.                               mb_IconQuestion + mb_OkCancel) = id_Cancel then EXIT;
  71.      end;
  72.      ExitWindows(0, 0)  { See 'ya }
  73.   end;
  74.  
  75. { -------------------------------------------------------------------------- }
  76. Procedure ToggleConfirm(Window:hWnd);
  77.   var SysMenu  : hMenu;
  78.   begin
  79.       SysMenu := GetSystemMenu(Window, FALSE);
  80.       Confirm := NOT Confirm;
  81.       if Confirm then
  82.          CheckMenuItem(SysMenu, idm_Confirm, mf_byCommand+mf_Checked)
  83.       else
  84.          CheckMenuItem(SysMenu, idm_Confirm, mf_byCommand+mf_UnChecked)
  85.   end;
  86.  
  87. { -------------------------------------------------------------------------- }
  88. Procedure ModifySystemMenu(Window:hWnd);
  89.   var SysMenu : hMenu;
  90.   begin
  91.      SysMenu := GetSystemMenu(Window, FALSE);
  92.  
  93.      { Add Items to the System Menu }
  94.      AppendMenu(SysMenu, mf_SysMenu+mf_Separator, 0, NIL);
  95.      AppendMenu(SysMenu, mf_SysMenu, idm_Quit,    '&Exit Windows');
  96.      AppendMenu(SysMenu, mf_SysMenu, idm_Confirm, 'Confirm &Shutdown');
  97.      AppendMenu(SysMenu, mf_SysMenu, idm_OS,      '&Operating System');
  98.      AppendMenu(SysMenu, mf_SysMenu, idm_About,   '&About Bye...')
  99.   end;
  100.  
  101. END.
  102.