home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2demo / wpcar / testcar.mod < prev   
Text File  |  1995-04-14  |  4KB  |  170 lines

  1. MODULE TESTCAR;
  2.  
  3. (*************************************************************************
  4.    TESTCAR     Workplace Shell class registration for 'Car'
  5.  
  6.    Copyright (c) 1995 by Juergen Neuhoff
  7.  
  8.    Description: This module performs the registration of the sample
  9.    workplace class 'Car'. The class must be implemented in a module
  10.    'CAR.DLL'.
  11.  
  12.    How to compile and link:
  13.      MOD TESTCAR -o -m
  14.      LINk386 @TESTCAR.RSP
  15.  
  16. **************************************************************************)
  17.  
  18. (*$XL+  language extensions: extended symbols, OOP features *)
  19. (*$XF+  extended function desigantor usage *)
  20.  
  21. IMPORT SYSTEM;
  22. IMPORT WINWORKPLACE;
  23. IMPORT DOSPROCESS;
  24. IMPORT OS2DEF;
  25. IMPORT SOM;
  26. IMPORT DOSFILEMGR;
  27. IMPORT Conversions;
  28. IMPORT Strings;
  29. IMPORT DOSMODULEMGR;
  30.  
  31.  
  32. (*****
  33.  
  34. PROCEDURE SOMError
  35. (
  36.   Code       : SOM.INT;
  37.   FileName   : ARRAY OF CHAR;
  38.   LineNumber : SOM.INT
  39. );
  40. VAR
  41.   rc           : OS2DEF.APIRET;
  42.   hLog         : DOSFILEMGR.HFILE;
  43.   ActionTaken  : LONGCARD;
  44.   BytesWritten : LONGCARD;
  45.   LineStr      : ARRAY [0..12] OF CHAR;
  46.   LogLocation  : LONGCARD;
  47. BEGIN
  48.   rc := DOSFILEMGR.DosOpen
  49.   ( "TESTCAR.LOG",
  50.     hLog,
  51.     ActionTaken,
  52.     0,
  53.     DOSFILEMGR.FILE_NORMAL,
  54.     DOSFILEMGR.OPEN_ACTION_CREATE_IF_NEW +
  55.     DOSFILEMGR.OPEN_ACTION_OPEN_IF_EXISTS,
  56.     DOSFILEMGR.OPEN_SHARE_DENYNONE +
  57.     DOSFILEMGR.OPEN_ACCESS_READWRITE,
  58.     NIL
  59.   );
  60.   IF rc = 0 THEN
  61.     rc := DOSFILEMGR.DosSetFilePtr
  62.     ( hLog,
  63.       0,
  64.       DOSFILEMGR.FILE_END,
  65.       LogLocation
  66.     );
  67.     IF rc = 0 THEN
  68.       rc := DOSFILEMGR.DosWrite
  69.       ( hLog,
  70.         "File : ",
  71.         7,
  72.         BytesWritten
  73.       );
  74.       IF rc = 0 THEN
  75.         rc := DOSFILEMGR.DosWrite
  76.         ( hLog,
  77.           FileName,
  78.           Strings.Size( FileName ),
  79.           BytesWritten
  80.         );
  81.         IF rc = 0 THEN
  82.           rc := DOSFILEMGR.DosWrite
  83.           ( hLog,
  84.             "  Line : ",
  85.             9,
  86.             BytesWritten
  87.           );
  88.           IF rc = 0 THEN
  89.             Conversions.LongIntToStr( LineNumber, LineStr );
  90.             rc := DOSFILEMGR.DosWrite
  91.             ( hLog,
  92.               LineStr,
  93.               Strings.Length( LineStr ),
  94.               BytesWritten
  95.             );
  96.           END;
  97.         END;
  98.       END;
  99.     END;
  100.   END;
  101.   DOSFILEMGR.DosClose( hLog );
  102.   IF rc <> 0 THEN
  103.     DOSPROCESS.DosBeep( 1500, 500 );
  104.   END;
  105. END SOMError;
  106.  
  107. ****)
  108.  
  109. VAR
  110.   hobj             : WINWORKPLACE.HOBJECT;
  111.   done             : BOOLEAN;
  112.   rc               : OS2DEF.APIRET;
  113.   somFindClsInFile : SOM.somMethodPtr;
  114.   CarPath          : ARRAY [0..OS2DEF.CCHMAXPATHCOMP-1] OF CHAR;
  115.  
  116. BEGIN
  117. (****
  118.   (* for debugging only ... *)
  119.   SOM.SOMClassMgrObject := SOM.somEnvironmentNew();
  120.   somFindClsInFile := SOM.somClassResolve
  121.   ( SOM.SOMClassMgrClassData.classObject,
  122.     SOM.SOMClassMgrClassData.somFindClsInFile
  123.   );
  124.   SOM.SOMError := SOMError;
  125.   SOM.SOM_TraceLevel   := 2;
  126.   SOM.SOM_WarnLevel    := 1;
  127.   SOM.SOM_AssertLevel  := 2;
  128. ****)
  129.  
  130.   (* class registration *)
  131.   rc := DOSFILEMGR.DosQueryPathInfo
  132.   ( "CAR.DLL", DOSFILEMGR.FIL_QUERYFULLNAME, CarPath, SIZE( CarPath ) );
  133.   IF rc = 0 THEN
  134.     done := WINWORKPLACE.WinRegisterObjectClass( "Car", CarPath );
  135.   ELSE
  136.     done := FALSE;
  137.   END;
  138.   IF NOT done THEN
  139.     rc := DOSPROCESS.DosBeep( 500, 500 );
  140.   END;
  141.  
  142. (****
  143.   (* object creation *)
  144.   IF done THEN
  145.     hobj := WINWORKPLACE.WinCreateObject
  146.     (
  147.       "Car",
  148.       "MyCar",
  149.       "",
  150.       "C:\",
  151.       WINWORKPLACE.CO_REPLACEIFEXISTS
  152.     );
  153.     IF hobj <> 0 THEN
  154.       RETURN;
  155.     END;
  156.   END;
  157.   rc := DOSPROCESS.DosBeep( 2000, 1500 );
  158. ****)
  159.  
  160. (****
  161.   (* class deregistration *)
  162.   done := WINWORKPLACE.WinDeregisterObjectClass( "Car" );
  163.   IF NOT done THEN
  164.     rc := DOSPROCESS.DosBeep( 500, 1500 );
  165.   END;
  166.   RETURN;
  167. ****)
  168.  
  169. END TESTCAR.
  170.