//--------------------------------------------------------------
//
//  Win32API.wfm
//
//  This form displays information about your system.
//  It uses Windows API functions to gather and 
//  display information from operating system and 
//  registry.
//
//  Dependencies: <include>\win32api.h
//               "structapi.h"
//                structure.prg
//                registry.prg 
//
//  dBASE Samples Group
//
//  $Revision:   1.21  $
//
//  Copyright (c) 1997-1998, Borland International, Inc. 
//  Copyright (c) 2013, dBase, LLC.
//  All rights reserved.
//
//---------------------------------------------------------------

#define WIN32API_USER_H   // for metrics
#define WIN32API_REG_H    // for registry
#include <win32api.h>
#include "structapi.h"

SET TALK OFF
SET PROCEDURE TO "structure.prg" ADDITIVE
SET PROCEDURE TO "registry.prg"  ADDITIVE
** END HEADER -- do not remove this line
//
// Generated on 03/07/2013
//
parameter bModal
local f
f = new WIN32APIFORM()
if (bModal)
   f.mdi = false // ensure not MDI
   f.readModal()
else
   f.open()
endif

class WIN32APIFORM of FORM
   with (this)
      open = class::FORM_OPEN
      scaleFontName = "MS Sans Serif"
      scaleFontSize = 8.0
      scaleFontBold = false
      height = 15.0455
      left = 1.5714
      top = 0.0909
      width = 75.1429
      text = "Win32API "
      mousePointer = 1	// Arrow
      maximize = false
      minimize = false
   endwith

   this.BUTTONOK = new PUSHBUTTON(this)
   with (this.BUTTONOK)
      onClick = {; this.form.close()}
      height = 1.1818
      left = 57.7143
      top = 13.5
      width = 14.0
      text = "OK"
      default = true
      fontName = "MS Sans Serif"
      fontSize = 8.0
      group = true
   endwith

   this.BOOK1 = new NOTEBOOK(this)
   with (this.BOOK1)
      onSelChange = class::BOOK1_ONSELCHANGE
      height = 12.0
      left = 1.0
      top = 1.0
      width = 73.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      dataSource = 'ARRAY {"Metrics","Processor","BDE","PaintBox"}'
   endwith

   this.BOOK1.LABELMOUSE = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELMOUSE)
      height = 1.0
      left = 2.0
      top = 2.0
      width = 21.0
      colorNormal = "BtnText"
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Mouse Buttons:"
   endwith

   this.BOOK1.LABELWIDTH = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELWIDTH)
      height = 1.0
      left = 2.0
      top = 3.0
      width = 21.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Max Client Width:"
   endwith

   this.BOOK1.LABELHEIGHT = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELHEIGHT)
      height = 1.0
      left = 2.0
      top = 4.0
      width = 21.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Max Client Height:"
   endwith

   this.BOOK1.LABELPEN = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELPEN)
      height = 1.0
      left = 2.0
      top = 5.0
      width = 21.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Pen Windows:"
   endwith

   this.BOOK1.VALUEMOUSE = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUEMOUSE)
      height = 1.0
      left = 25.0
      top = 2.0
      width = 16.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUEMOUSE"
   endwith

   this.BOOK1.LABELSOUNDS = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELSOUNDS)
      height = 1.0
      left = 2.0
      top = 6.0
      width = 21.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Show Sounds:"
   endwith

   this.BOOK1.VALUEWIDTH = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUEWIDTH)
      height = 1.0
      left = 25.0
      top = 3.0
      width = 16.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUEWIDTH"
   endwith

   this.BOOK1.VALUEHEIGHT = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUEHEIGHT)
      height = 1.0
      left = 25.0
      top = 4.0
      width = 16.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUEHEIGHT"
   endwith

   this.BOOK1.VALUEPEN = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUEPEN)
      height = 1.0
      left = 25.0
      top = 5.0
      width = 16.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUEPEN"
   endwith

   this.BOOK1.VALUESOUND = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUESOUND)
      height = 1.0
      left = 25.0
      top = 6.0
      width = 16.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUESOUND"
   endwith

   this.BOOK1.LABELPROCESSOR = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELPROCESSOR)
      height = 1.0
      left = 2.0
      top = 2.0
      width = 22.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Processor Type:"
      pageno = 2
   endwith

   this.BOOK1.LABELNUMBERP = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELNUMBERP)
      height = 1.0
      left = 2.0
      top = 3.0
      width = 22.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Number of Processors:"
      pageno = 2
   endwith

   this.BOOK1.VALUEPROCESSOR = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUEPROCESSOR)
      height = 1.0
      left = 25.0
      top = 2.0
      width = 25.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUEPROCESSOR"
      pageno = 2
   endwith

   this.BOOK1.VALUENUMBERP = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUENUMBERP)
      height = 1.0
      left = 25.0
      top = 3.0
      width = 25.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUENUMBERP"
      pageno = 2
   endwith

   this.BOOK1.HELPPROCESSOR = new TEXT(this.BOOK1)
   with (this.BOOK1.HELPPROCESSOR)
      height = 3.5
      left = 2.0
      top = 8.0
      width = 69.0
      border = true
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Processor information is available through the GetSystemInfo API function. This function requires a structure. The Win32api form uses the Structure class in structure.prg to define and retrieve information from a structure."
      borderStyle = 2	// Lowered
      pageno = 2
   endwith

   this.BOOK1.LABELBDEPATH = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELBDEPATH)
      height = 1.0
      left = 2.0
      top = 5.0
      width = 21.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "DLL Path:"
      pageno = 3
   endwith

   this.BOOK1.LABELTABLELEVEL = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELTABLELEVEL)
      height = 1.0
      left = 2.0
      top = 3.4
      width = 21.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "dBASE Table Level:"
      pageno = 3
   endwith

   this.BOOK1.LABELLOCALSHARE = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELLOCALSHARE)
      height = 1.0
      left = 2.0
      top = 2.0
      width = 21.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Local Share:"
      pageno = 3
   endwith

   this.BOOK1.VALUEBDEPATH = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUEBDEPATH)
      height = 2.25
      left = 23.1429
      top = 5.0
      width = 45.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUEBDEPATH"
      pageno = 3
   endwith

   this.BOOK1.VALUEDBASELEVEL = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUEDBASELEVEL)
      height = 1.55
      left = 23.1429
      top = 3.4
      width = 45.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUEDBASELEVEL"
      pageno = 3
   endwith

   this.BOOK1.VALUELOCALSHARE = new TEXT(this.BOOK1)
   with (this.BOOK1.VALUELOCALSHARE)
      height = 1.0
      left = 23.1429
      top = 2.0
      width = 45.0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "VALUELOCALSHARE"
      pageno = 3
   endwith

   this.BOOK1.HELPMETRICS = new TEXT(this.BOOK1)
   with (this.BOOK1.HELPMETRICS)
      height = 3.5
      left = 2.0
      top = 8.0
      width = 69.0
      border = true
      colorNormal = "BtnText"
      fontName = "MS Sans Serif"
      fontSize = 8.0
      l0 = "The system metric values are available through the GetSystemMetrics API function. GetSystemMetrics takes and returns integer values. If you alter the orientation or Auto Hide property of the Windows Taskbar, you can click on refresh to update the client ar"
      l0 += "ea values."
      text = l0
      borderStyle = 2	// Lowered
   endwith

   this.BOOK1.HELPBDE = new TEXT(this.BOOK1)
   with (this.BOOK1.HELPBDE)
      height = 3.5
      left = 2.0
      top = 8.0
      width = 69.0
      border = true
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "The Borland Database Engine stores configuration settings in the Windows registry. The Win32api form uses the Registry class in registry.prg to retrieve information from the registry. You can also use the Registry class to create and update registry keys."
      borderStyle = 2	// Lowered
      pageno = 3
   endwith

   this.BOOK1.LABELX = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELX)
      height = 1.0
      left = 51.0
      top = 2.0
      width = 9.0
      alignVertical = 2	// Bottom
      alignHorizontal = 1	// Center
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "X"
      pageno = 4
   endwith

   this.BOOK1.LABELY = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELY)
      height = 1.0
      left = 62.0
      top = 2.0
      width = 9.0
      alignVertical = 2	// Bottom
      alignHorizontal = 1	// Center
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Y"
      pageno = 4
   endwith

   this.BOOK1.LABELTOP = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELTOP)
      height = 1.0
      left = 42.0
      top = 3.0
      width = 8.0
      alignVertical = 2	// Bottom
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Top:"
      pageno = 4
   endwith

   this.BOOK1.SPINLEFTRECT = new SPINBOX(this.BOOK1)
   with (this.BOOK1.SPINLEFTRECT)
      onChange = class::SPIN_ONCHANGE
      height = 1.0
      left = 51.0
      top = 3.0
      width = 9.0
      picture = "99999"
      step = 10.0
      rangeMax = 32768
      rangeMin = 0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      value = 20
      validRequired = true
      rangeRequired = true
      pageno = 4
      borderStyle = 7	// Client
   endwith

   this.BOOK1.SPINTOPRECT = new SPINBOX(this.BOOK1)
   with (this.BOOK1.SPINTOPRECT)
      onChange = class::SPIN_ONCHANGE
      height = 1.0
      left = 62.0
      top = 3.0
      width = 9.0
      picture = "99999"
      step = 10.0
      rangeMax = 32768
      rangeMin = 0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      value = 20
      validRequired = true
      rangeRequired = true
      pageno = 4
      borderStyle = 7	// Client
   endwith

   this.BOOK1.LABELBOTTOM = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELBOTTOM)
      height = 1.0
      left = 42.0
      top = 4.0
      width = 8.0
      alignVertical = 2	// Bottom
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Bottom:"
      pageno = 4
   endwith

   this.BOOK1.SPINRIGHTRECT = new SPINBOX(this.BOOK1)
   with (this.BOOK1.SPINRIGHTRECT)
      onChange = class::SPIN_ONCHANGE
      height = 1.0
      left = 51.0
      top = 4.0
      width = 9.0
      picture = "99999"
      step = 10.0
      rangeMax = 32768
      rangeMin = 0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      value = 160
      validRequired = true
      rangeRequired = true
      pageno = 4
      borderStyle = 7	// Client
   endwith

   this.BOOK1.SPINBOTTOMRECT = new SPINBOX(this.BOOK1)
   with (this.BOOK1.SPINBOTTOMRECT)
      onChange = class::SPIN_ONCHANGE
      height = 1.0
      left = 62.0
      top = 4.0
      width = 9.0
      picture = "99999"
      step = 10.0
      rangeMax = 32768
      rangeMin = 0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      value = 210
      validRequired = true
      rangeRequired = true
      pageno = 4
      borderStyle = 7	// Client
   endwith

   this.BOOK1.LABELSTART = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELSTART)
      height = 1.0
      left = 42.0
      top = 5.0
      width = 8.0
      alignVertical = 2	// Bottom
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "Start:"
      pageno = 4
   endwith

   this.BOOK1.SPINXSTARTARC = new SPINBOX(this.BOOK1)
   with (this.BOOK1.SPINXSTARTARC)
      onChange = class::SPIN_ONCHANGE
      height = 1.0
      left = 51.0
      top = 5.0
      width = 9.0
      picture = "99999"
      step = 10.0
      rangeMax = 32768
      rangeMin = 0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      value = 150
      validRequired = true
      rangeRequired = true
      pageno = 4
      borderStyle = 7	// Client
   endwith

   this.BOOK1.SPINYSTARTARC = new SPINBOX(this.BOOK1)
   with (this.BOOK1.SPINYSTARTARC)
      onChange = class::SPIN_ONCHANGE
      height = 1.0
      left = 62.0
      top = 5.0
      width = 9.0
      picture = "99999"
      step = 10.0
      rangeMax = 32768
      rangeMin = 0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      value = 80
      validRequired = true
      rangeRequired = true
      pageno = 4
      borderStyle = 7	// Client
   endwith

   this.BOOK1.LABELEND = new TEXT(this.BOOK1)
   with (this.BOOK1.LABELEND)
      height = 1.0
      left = 42.0
      top = 6.0
      width = 8.0
      alignVertical = 2	// Bottom
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "End:"
      pageno = 4
   endwith

   this.BOOK1.SPINXENDARC = new SPINBOX(this.BOOK1)
   with (this.BOOK1.SPINXENDARC)
      onChange = class::SPIN_ONCHANGE
      height = 1.0
      left = 51.0
      top = 6.0
      width = 9.0
      picture = "99999"
      step = 10.0
      rangeMax = 32768
      rangeMin = 0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      value = 80
      validRequired = true
      rangeRequired = true
      pageno = 4
      borderStyle = 7	// Client
   endwith

   this.BOOK1.SPINYENDARC = new SPINBOX(this.BOOK1)
   with (this.BOOK1.SPINYENDARC)
      onChange = class::SPIN_ONCHANGE
      height = 1.0
      left = 62.0
      top = 6.0
      width = 9.0
      picture = "99999"
      step = 10.0
      rangeMax = 32768
      rangeMin = 0
      fontName = "MS Sans Serif"
      fontSize = 8.0
      value = 100
      validRequired = true
      rangeRequired = true
      pageno = 4
      borderStyle = 7	// Client
   endwith

   this.BOOK1.HELPPAINTBOX = new TEXT(this.BOOK1)
   with (this.BOOK1.HELPPAINTBOX)
      height = 3.5
      left = 2.0
      top = 8.0
      width = 69.0
      border = true
      fontName = "MS Sans Serif"
      fontSize = 8.0
      text = "The PaintBox control allows you to draw directly to the control through the Windows API. This example shows how to draw an arc using the BeginPaint, Arc, EndPaint and InvalidateRect functions of the Windows API."
      borderStyle = 2	// Lowered
      pageno = 4
   endwith

   this.BOOK1.RECTANGLE1 = new RECTANGLE(this.BOOK1)
   with (this.BOOK1.RECTANGLE1)
      left = 1.2857
      top = 1.4545
      width = 38.0
      height = 5.9091
      text = ""
      colorNormal = "WindowText/BtnFace"
      border = false
      fontName = "MS Sans Serif"
      pageno = 4
      borderStyle = 2	// Lowered
   endwith

   this.BOOK1.PAINTBOX1 = new PAINTBOX(this.BOOK1)
   with (this.BOOK1.PAINTBOX1)
      onPaint = class::PAINTARC
      pageno = 4
      height = 4.7273
      left = 2.5714
      top = 2.0
      width = 35.0
      transparent = true
   endwith

   this.BUTTONREFRESH = new PUSHBUTTON(this)
   with (this.BUTTONREFRESH)
      onClick = class::BUTTONREFRESH_ONCLICK
      height = 1.1818
      left = 42.4286
      top = 13.5
      width = 14.0
      text = "Refresh"
      fontName = "MS Sans Serif"
      fontSize = 8.0
      group = true
   endwith


   function BOOK1_onSelChange
      this.form.buttonRefresh.enabled = ( this.cursel == 1)
   return ( this.curSel )

   function BUTTONREFRESH_OnClick
   return ( class::GetMetrics( this.form.book1 ) )

   function Form_Open
      local bOpen

      // If running as a compiled app, check
      // for strucmem.dll
      if ( "runtime" $ LOWER( VERSION(0) ) )
         this.mdi := false
         if ( ( not FILE("strucmem.dll") ) and FILE("strucmem.dll",true) )
            COPY FILE "strucmem.dll" TO "strucmem.dll"
         endif
      endif

      class::GetMetrics( this.book1 )
      class::GetProcessorInfo( this.book1 )
      class::GetBDERegistry( this.book1 ) 

      this.book1.cursel := 1 
      bOpen = WIN32APIFORM::Open()
      this.showFormatBar(false)
    return ( bOpen )

   function GetMetrics( thisBook )
      // This member function calls a Windows API function
      // that returns an integer. The values passed are defined
      // in WINUSER.H. The extern for the GetSystemMetrics 
      // was called from WINAPI.H.

      with ( thisBook )
         VALUEMOUSE.text  := LTRIM(STR(GetSystemMetrics(SM_CMOUSEBUTTONS)))
         VALUEWIDTH.text  := LTRIM(STR(GetSystemMetrics(SM_CXFULLSCREEN)))
         VALUEHEIGHT.text := LTRIM(STR(GetSystemMetrics(SM_CYFULLSCREEN)))
         VALUEPEN.text    := ;
            IIF( GetSystemMetrics(SM_PENWINDOWS) == 0,"Not found","Installed")
         VALUESOUND.text  := ;
            IIF( GetSystemMetrics(SM_SHOWSOUNDS) == 0,"Off","On")
      endwith
   return true

   function GetProcessorInfo(thisBook)
      // This member function calls a Windows API function that 
      // requires a structure. The structure is defined in
      // the structSystemInfo class and it relies on the 
      // structure API and classes found in STRUCTAPI.PRG,
      // STRUCTURE.PRG and constants defined in STRUCTAPI.H

      local structSystemInfo, nProcessor, nNumberP

      structSysInfo = new SYSTEM_INFO()
      GetSystemInfo( structSysInfo.value )
      if ( "NT"$ OS() )
         nProcessor = structSysInfo.getMember("wProcessorLevel")
      else
         nProcessor = structSysInfo.getMember("dwProcessorType")
      endif
      nNumberP   = structSysInfo.getMember("dwNumberOfProcessors")

      do case
         case ( nProcessor == 3 )
              thisBook.VALUEPROCESSOR.text := "386"
         case ( nProcessor == 4 )
              thisBook.VALUEPROCESSOR.text := "486"
         case ( nProcessor == 5 OR nProcessor == 586)
              thisBook.VALUEPROCESSOR.text := "Pentium"
         case ( nProcessor == 6 )
              thisBook.VALUEPROCESSOR.text := "Pentium" // Pro or II
         otherwise
              thisBook.VALUEPROCESSOR.text := ;
                 LTRIM( RTRIM( STR( nProcessor ) ) )
      endcase
      thisBook.VALUENUMBERP.text = LTRIM(STR(nNumberP))
   return ( nProcessor )

   function GetBDERegistry( thisBook )
       local reg
       private xLevel
       reg = new Registry(HKEY_LOCAL_MACHINE, ;
            "SOFTWARE\Borland\Database Engine" )
       thisBook.VALUEBDEPATH.text := reg.queryValue("DLLPATH")
       reg.close()

       reg = new Registry(HKEY_LOCAL_MACHINE, ;
            "SOFTWARE\Borland\Database Engine\Settings" + ;
            "\DRIVERS\DBASE\TABLE CREATE" )
       xLevel = reg.queryValue("LEVEL")
       reg.close()
       if ( TYPE("xLevel") == "C" )
          thisBook.VALUEDBASELEVEL.text := xLevel
       else
          thisBook.VALUEDBASELEVEL.fontItalic := true
          thisBook.VALUEDBASELEVEL.text := "(not stored in registry - BDE configuration is in WIN31 compatibility mode)"
       endif

       reg = new Registry(HKEY_LOCAL_MACHINE, ;
            "SOFTWARE\Borland\Database Engine\Settings" + ;
            "\SYSTEM\INIT" )
       thisBook.VALUELOCALSHARE.text := reg.queryValue("LOCAL SHARE")

   return ( reg.close() )

   function SPIN_onChange
   return ( InvalidateRect( this.form.book1.paintbox1.hwnd, 0, true ) )      

   function paintArc
      local paintStruct, hdc, bPaint
      paintStruct = new tagPaintStruct()
      hdc = BeginPaint( this.hWnd, paintStruct.value )
      Arc(hdc, this.form.book1.spinLeftRect.value, ;
               this.form.book1.spinTopRect.value, ;
               this.form.book1.spinRightRect.value, ;
               this.form.book1.spinBottomRect.value, ;
               this.form.book1.spinXStartArc.value, ;
               this.form.book1.spinYStartArc.value, ;
               this.form.book1.spinXEndArc.value, ;
               this.form.book1.spinYEndArc.value )
      bPaint = EndPaint( this.hWnd, paintStruct.value )
   return (bPaint)

endclass

class SYSTEM_INFO of Structure
   super::addMember( TYPE_WORD,   "wProcessor" )
   super::addMember( TYPE_WORD,   "wReserved" )
   super::addMember( TYPE_DWORD,  "dwPageSize" )
   super::addMember( TYPE_LPVOID, "lpMinimumApplicationAddress" )
   super::addMember( TYPE_LPVOID, "lpMaximumApplicatoinAddress" )
   super::addMember( TYPE_DWORD,  "dwActiveProcessorMask" )
   super::addMember( TYPE_DWORD,  "dwNumberOfProcessors" )
   super::addMember( TYPE_DWORD,  "dwProcessorType" )
   super::addMember( TYPE_DWORD,  "dwAllocationGranularity"  )
   super::addMember( TYPE_WORD,   "wProcessorLevel" )
   super::addMember( TYPE_WORD,   "wProcessorRevision" )  
endclass

class tagPAINTSTRUCT of Structure
   super::addMember( TYPE_HDC, "hdc" )
   super::addMember( TYPE_BOOL, "fErase" )
   super::addMember( TYPE_RECT, "rcPaint" )
   super::addMember( TYPE_BOOL, "fRestore" )
   super::addMember( TYPE_BOOL, "fIncUpdate"  )
   super::addMember( TYPE_STRING, "rgbReserved", 32)
endclass
