CA - Visual Objects


Here is one which is missing in your list. 
It's made by using Computer Associates tool
CA - Visual Objects. It acts just like original.
Actually here is two versions first one is made by 
John Forsberg ( uses API interface ) and second one 
( Uses VO's GUI classes made by me.
First one is only tested with VO 1.x, but second version
works also with 2.0. Which will be in GA on next month.

API Version 
**************************************
TEXTBLOCK HELLOWIN.C  --  (c) Charles Petzold, 1992
/*--------------------------------------------------------
   HELLOWIN.C -- Displays "Hello, Windows" in client area
                 (c) Charles Petzold, 1992
                 
   HELLOWIN.PRG - CA Visual Objects adaptation
                        John Forsberg, 1994
  --------------------------------------------------------*/


FUNCTION Start()

  STATIC szAppName := "HelloWin"            AS STRING
  LOCAL hWnd                                                      AS WORD
  LOCAL msg                                                         IS
_WINMSG
  LOCAL wndclass                                               IS
_WINWNDCLASS
  
  /* Parameters not received by VO */
  LOCAL hPrevinstance := _GetPrevInst()     AS WORD
  LOCAL hInstance          := _GetInst()               AS WORD
  LOCAL nCmdShow      := _GetCmdShow()  AS WORD
  
  IF hPrevInstance == 0

    wndclass.style         := _OR(CS_HREDRAW, CS_VREDRAW)
    wndclass.lpfnWndProc        := @WndProc()
    wndclass.cbClsExtra            := 0
    wndclass.cbWndExtra         := 0
    wndclass.hInstance              := hInstance
    wndclass.hIcon                      := LoadIcon (hInstance,
IDI_APPLICATION)
    wndclass.hCursor                 := LoadCursor (0, IDC_ARROW)
    wndclass.hbrBackground  := GetStockObject (WHITE_BRUSH)
    wndclass.lpszMenuName := ""
    wndclass.lpszClassName := szAppName

    RegisterClass (@wndclass)
  ENDIF          

  hwnd := CreateWindow (szAppName, ;        // window class name
                 "The Hello Program", ;                        // window
caption
                 WS_OVERLAPPEDWINDOW, ;      // window style
                 CW_USEDEFAULT, ;                          // initial x
position
                 CW_USEDEFAULT, ;                          // initial y
position
                 CW_USEDEFAULT, ;                          // initial x
size
                 CW_USEDEFAULT, ;                          // initial y
size
                 0, ;                                                      
        // parent window handle
                 0, ;                                                      
        // window menu handle
                 hInstance, ;                                             
// program instance handle
                NULL_PTR)                                            //
creation parameters
 
/*  Not in the book.  Add it if you prefer */
//  if hWnd = 0
//    return FALSE
//  endif

  ShowWindow (hwnd, nCmdShow)
  UpdateWindow (hwnd)

  WHILE (GetMessage (@msg, 0, 0, 0))
       TranslateMessage (@msg) 
       DispatchMessage (@msg)
  END

  /* Not in the book.  Add it if you prefer */
  //  UnregisterClass ( szAppName, hInstance )
RETURN msg.wParam 

FUNCTION WndProc (hwnd AS WORD, message AS WORD, wParam AS WORD, ;
                  lParam AS LONG) AS LONG  _WINCALL

     LOCAL hdc  AS WORD
     LOCAL ps   IS _WINPAINTSTRUCT
     LOCAL rect IS _WINRECT

     DO CASE
          CASE message == WM_PAINT
            hdc := BeginPaint (hwnd, @ps)

            GetClientRect (hwnd, @rect)

            DrawText (hdc, "Hello, Windows!", -1, @rect, ;
                      _OR(_OR(DT_SINGLELINE, DT_CENTER), DT_VCENTER))

            EndPaint (hwnd, @ps)
            RETURN 0L

          CASE message == WM_DESTROY
            PostQuitMessage (0)
            RETURN 0L
               
          ENDCASE
               
RETURN DefWindowProc (hwnd, message, wParam, lParam)


GUI class version.

*********************************************************

TEXTBLOCK HELLOWIN.C  --  (c) Charles Petzold, 1992

/*--------------------------------------------------------
   HELLOWIN.C -- Displays "Hello, Windows" in client area
                 (c) Charles Petzold, 1992
                 
   HELLOWIN.PRG - CA Visual Objects adaptation
                        John Forsberg, 1994
                        
   HELLOEAS.AEF - CA Visual Objects adaptation ( Easy one )
                        Jari Sevon, 1995 
  --------------------------------------------------------*/ 


METHOD Start() CLASS App
     LOCAL oWindow AS Window
      oWindow := Hello{}
      oWindow:Show()
RETURN( SELF:Exec() )

CLASS HELLO INHERIT TOPAPPWINDOW 

METHOD INIT(oParent) CLASS HELLO 
     SUPER:INIT(oParent)
     SELF:Caption := "The Easy Hello Program"
RETURN SELF

METHOD EXPOSE(oExpEvent) CLASS HELLO
    
     LOCAL oPoint AS POINT
     LOCAL oBoundBox AS BoundingBox
     LOCAL oDim AS Dimension
     LOCAL nxWinWidth   AS INT
     LOCAL nyWinHeight AS INT
     LOCAL nx AS INT
     LOCAL ny AS INT 
     LOCAL cDispString := "Hello Windows !"
     LOCAL nxTextWidth  AS INT
     LOCAL nyTextHeight AS INT
     
     SUPER:EXPOSE(oExpEvent)  

     oBoundBox  := SELF:CanvasArea
     nxWinWidth     := oBoundBox:Width
     nyWinHeight   := oBoundBox:Height
     
     oDim := SELF:SizeText(cDispString)
     nyTextHeight := oDim:Height
     nxTextWidth  := oDim:Width 
     
     nx := ( ( nxWinWidth - nxTextWidth ) / 2 )
     ny := ( ( nyWinHeight - nyTextHeight ) / 2 )

     oPoint := POINT{ nx  , ny  } 
 
     SELF:TextPrint( cDispString , oPoint )    

RETURN 


submitted by: Jari.Sevon@code.pp.fi (Jari Sev—n)