home *** CD-ROM | disk | FTP | other *** search
/ Desktop Works 1995 - 1996 / desktopworks1995-1996.iso / scrnsave / mw_fish / appldlg.mod < prev    next >
Text File  |  1996-01-01  |  15KB  |  342 lines

  1. (*# check(stack=>off,
  2.           index=>off,
  3.           range=>off,
  4.           overflow=>off,
  5.           nil_ptr=>off) *)
  6.  
  7. IMPLEMENTATION MODULE ApplDlg;
  8.  
  9. IMPORT Windows,WinStr,Str,WMain,ApplFish,Lib;
  10.  
  11. CONST
  12. (* String table constants *)
  13.   IDSNAME  =   100;
  14.   IDSABOUT =   200;
  15.   IDSTITLE =   300;
  16.   IDSMESSAGE = 400;
  17.   IDSCAPTION = 500;
  18.   IDSDEFSPEC = 501;
  19.   IDSDEFEXT  = 502;
  20.  
  21. (* About Dialog box resource id *)
  22.   ABOUTBOX =     1;
  23.   FISHSELECT =   2;
  24.   LIFEDATABOX =  3;
  25.   FISHINFOBOX =  4;
  26.  
  27. (* Fish Select Box Controls *)
  28.   IDC_FILENAME =   400;
  29.   IDC_EDIT     =   401;
  30.   IDC_FILES    =   402;
  31.   IDC_PATH     =   403;
  32.   IDC_LISTBOX  =   404;
  33.  
  34.   IDSAVERAGECHECK =  114;
  35.   IDSBACK        =  119;
  36.   IDSCANCEL      =  118;
  37.   IDSFASTCHECK   =  115;
  38.   IDSFISHNAME    =  108;
  39.   IDSGROUPBOX    =  110;
  40.   IDSHOWMANY     =  116;
  41.   IDSHOWMANYTEXT =  112;
  42.   IDSNEXT        =  120;
  43.   IDSOK          =  117;
  44.   IDSSELECTED    =  109;
  45.   IDSSLOWCHECK   =  113;
  46.   IDSPAINT       =  102;
  47.  
  48.   SPECIAL_CHANGE =     0401H;
  49.   INIT_INSTANCES =     0402H;
  50.   RESTART        =     0403H;
  51.  
  52. VAR
  53.   lpprocAbout,lpOpenDlg,lpLifeDlg,lpInfoDlg: Windows.FARPROC;
  54.  
  55.  
  56. PROCEDURE About ( hDlg    : Windows.HWND;
  57.                  message : CARDINAL;
  58.                  wParam  : WORD;
  59.                  lParam  : LONGINT ) : Windows.BOOL ;
  60.  
  61. BEGIN
  62.   IF message = Windows.WM_COMMAND THEN
  63.     Windows.EndDialog( hDlg, CARDINAL(TRUE) );
  64.     RETURN INTEGER(TRUE);
  65.   ELSIF message = Windows.WM_INITDIALOG THEN
  66.     IF Windows.SetFocus(Windows.GetDlgItem(hDlg,Windows.IDOK)) # 0 THEN END;
  67.     IF Windows.SetTimer(hDlg,1,1000,Windows.FARPROC(0)) = 0 THEN
  68.        IF Windows.SendMessage(Windows.GetParent(hDlg),Windows.WM_COMMAND,RESTART,0) = 0 THEN END;
  69.     END;
  70.     RETURN INTEGER(TRUE);
  71.   ELSIF message = Windows.WM_TIMER THEN
  72.     IF Windows.KillTimer(hDlg,1) = 0 THEN END;
  73.     IF Windows.SendMessage(Windows.GetParent(hDlg),Windows.WM_COMMAND,RESTART,0) = 0 THEN END;
  74.     RETURN INTEGER(TRUE);
  75.   ELSE
  76.     RETURN INTEGER(FALSE);
  77.   END;
  78. END About;
  79.  
  80. PROCEDURE  PaintWindow(  hWnd   : Windows.HWND;
  81.                          hBitmap : Windows.HBITMAP;
  82.                          xext,yext : INTEGER );
  83.  
  84. VAR hdc,hmemorydc : Windows.HDC;
  85.     xoffset,yoffset : INTEGER;
  86.     Rect : Windows.RECT;
  87.  
  88. BEGIN
  89.     hdc := Windows.GetDC(hWnd);
  90.     hmemorydc := Windows.CreateCompatibleDC(hdc);
  91.     Windows.GetClientRect(hWnd,Rect);
  92.     IF Windows.SelectObject(hmemorydc,hBitmap) # 0 THEN END;
  93.     xoffset := (Rect.right - xext) DIV 2;
  94.     yoffset := (Rect.bottom - yext) DIV 2;
  95.     IF Windows.BitBlt(hdc,xoffset,yoffset,Rect.right,Rect.bottom,
  96.                       hmemorydc,0,0,Windows.SRCCOPY) # 0 THEN END;
  97.     IF Windows.DeleteDC(hmemorydc) # 0 THEN END;
  98.     IF Windows.ReleaseDC(hWnd,hdc) # 0 THEN END
  99. END PaintWindow;
  100.  
  101. PROCEDURE  PaintTheBlock(hCtrl   : Windows.HWND;
  102.                          hBitmap : Windows.HBITMAP);
  103. VAR Rect : Windows.RECT;
  104. BEGIN
  105.     Windows.GetClientRect(hCtrl,Rect);
  106.     Windows.InvalidateRect(hCtrl,Rect,0);
  107.     Windows.UpdateWindow(hCtrl);
  108.     PaintWindow(hCtrl,hBitmap,75,75)
  109. END PaintTheBlock;
  110.  
  111.  
  112. PROCEDURE  LifeInfo ( hDlg    : Windows.HWND;
  113.                  message : CARDINAL;
  114.                  wParam  : WORD;
  115.                  lParam  : LONGINT ) : Windows.BOOL ;
  116.  
  117. TYPE
  118.   ITEMTYPE = ARRAY[0..2] OF CHAR;
  119.  
  120. CONST
  121.   FISHMOVE = 99;
  122.   SETUPMOVE = 101;
  123. VAR
  124.   Rect : Windows.RECT;
  125.   s1,s2,s3,s4,s5 : ITEMTYPE;
  126.   NewInstances : CARDINAL;
  127. BEGIN
  128.     CASE message OF
  129.     | Windows.WM_TIMER:
  130.          IF wParam = WORD(SETUPMOVE) THEN
  131.             IF Windows.KillTimer(hDlg,SETUPMOVE) = 0 THEN END;
  132.             IF Windows.SendMessage(Windows.GetParent(hDlg),SPECIAL_CHANGE,0,0) = 0 THEN END;
  133.             IF Windows.SetTimer(hDlg,FISHMOVE,200,Windows.FARPROC(0)) = 0 THEN
  134.                ApplFish.TimersLow(Windows.GetParent(hDlg))
  135.             END;
  136.          ELSE
  137.             PaintWindow(Windows.GetDlgItem(hDlg,IDSPAINT),
  138.                        WMain.FishHead[WMain.FishSelected].bmap[1,
  139.                        WMain.FishHead[WMain.FishSelected].DialogFrame],
  140.                        WMain.FishHead[WMain.FishSelected].xextent,
  141.                        WMain.FishHead[WMain.FishSelected].yextent);
  142.             IF WMain.FishHead[WMain.FishSelected].DialogFrame >= 4 THEN
  143.                WMain.FishHead[WMain.FishSelected].DialogFrame := 1
  144.             ELSE
  145.                WMain.FishHead[WMain.FishSelected].DialogFrame :=
  146.                 WMain.FishHead[WMain.FishSelected].DialogFrame + 1
  147.             END
  148.          END;
  149.  
  150.        RETURN INTEGER(TRUE);
  151.  
  152.     | Windows.WM_COMMAND:
  153.          CASE wParam OF
  154.              | IDSSELECTED:
  155.                  WHILE Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  156.                        Windows.CB_DELETESTRING,1,07FFFH) >= 0 DO END;
  157.                  IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  158.                        Windows.CB_RESETCONTENT,0,0) = 0 THEN END;
  159.                  IF Windows.SendDlgItemMessage(hDlg,IDSSELECTED,
  160.                         Windows.BM_GETCHECK,0,07FFFH) # 0 THEN
  161.                             s1 := "1"; s2 := "2"; s3 := "3"; s4 := "4"; s5 := "5";
  162.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  163.                                                           LONGINT(FarADR(s1))) = 0 THEN END;
  164.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  165.                                                           LONGINT(FarADR(s2))) = 0 THEN END;
  166.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  167.                                                           LONGINT(FarADR(s3))) = 0 THEN END;
  168.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  169.                                                           LONGINT(FarADR(s4))) = 0 THEN END;
  170.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  171.                                                           LONGINT(FarADR(s5))) = 0 THEN END;
  172.                             IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  173.                                Windows.CB_SETCURSEL,WMain.FishHead[WMain.FishSelected].Instances,07FFFH)
  174.                                = 0 THEN END;
  175.                 ELSE
  176.                     s1 := "0";
  177.                     IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,Windows.CB_ADDSTRING,0,
  178.                                                           LONGINT(FarADR(s1))) = 0 THEN END;
  179.                     IF Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  180.                        Windows.CB_SETCURSEL,0,07FFFH) = 0 THEN END;
  181.  
  182.                     RETURN INTEGER(TRUE);
  183.                 END;
  184.                 | IDSCANCEL:
  185.                      Windows.EndDialog(hDlg,Windows.NULL);
  186.                      IF Windows.KillTimer(hDlg,FISHMOVE) = 0 THEN END;
  187.  
  188.                      RETURN INTEGER(TRUE);
  189.                 | IDSOK:
  190.                      IF Windows.SendDlgItemMessage(hDlg,IDSSELECTED,
  191.                             Windows.BM_GETCHECK,0,07FFFH) # 0 THEN
  192.                         WMain.FishHead[WMain.FishSelected].status := TRUE;
  193.                         NewInstances := INTEGER(Windows.SendDlgItemMessage(hDlg,IDSHOWMANY,
  194.                         Windows.CB_GETCURSEL,0,07FFFH));
  195.                         IF NewInstances <> WMain.FishHead[WMain.FishSelected].Instances  THEN
  196.                            IF Windows.SendMessage(Windows.GetParent(hDlg),INIT_INSTANCES,NewInstances+1,LONGINT(WMain.FishSelected)) = 0 THEN END;
  197.                         END;
  198.  
  199.                      ELSE
  200.                         WMain.FishHead[WMain.FishSelected].status := FALSE
  201.                      END;
  202.                      IF Windows.SendDlgItemMessage(hDlg,IDSSLOWCHECK,
  203.                             Windows.BM_GETCHECK,0,07FFFH) # 0 THEN
  204.                             WMain.FishHead[WMain.FishSelected].basespeed := WMain.SLOWSPEED;
  205.                      ELSIF
  206.                          Windows.SendDlgItemMessage(hDlg,IDSAVERAGECHECK,
  207.