home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / powergui / canvas / mcbad / mcbad.cpp < prev   
Text File  |  1996-10-29  |  3KB  |  85 lines

  1. //*********************************************************
  2. // Canvas - Multicell Canvas without Expandable Rows/Columns
  3. //
  4. // Copyright (C) 1994, Law, Leong, Love, Olson, Tsuji.
  5. // Copyright (c) 1997 John Wiley & Sons, Inc. 
  6. // All Rights Reserved.
  7. //*********************************************************
  8. #include <iapp.hpp>
  9. #include <icolor.hpp>
  10. #include <iframe.hpp>
  11. #include <imcelcv.hpp>
  12. #include <ipushbut.hpp>
  13. #include <isysmenu.hpp>
  14. #include <icconst.h>
  15.  
  16. void main ( )
  17. {
  18.   // This example is almost identical to the canvas\mcsimple
  19.   // example.  However, this version uses no expandable rows or
  20.   // columns.  As a result, the IMultiCellCanvas grows the
  21.   // starting column/row of the child windows that occupy more
  22.   // than one column/row.  The child windows are not positioned
  23.   // or sized to overlap by even amounts.  See the
  24.   // canvas\mcsimple example to see how expandable rows and
  25.   // columns improve the results.
  26.  
  27.   IFrameWindow
  28.     frame( "Multicell Canvas without Expandable "
  29.            "Rows and Columns" );
  30.   IMultiCellCanvas
  31.     client( IC_FRAME_CLIENT_ID, &frame, &frame );
  32.  
  33.   // Create three color squares using ICanvas objects.
  34.   ICanvas
  35.     red  ( 1, &client, &client ),
  36.     green( 2, &client, &client ),
  37.     blue ( 3, &client, &client );
  38.   red
  39.    .setBackgroundColor( IColor::red ) 
  40.    .setMinimumSize( ISize( 200, 200 ) );
  41.   green
  42.    .setBackgroundColor( IColor::green )
  43.    .setMinimumSize( ISize( 200, 200 ) );
  44.   blue
  45.    .setBackgroundColor( IColor::blue )
  46.    .setMinimumSize( ISize( 200, 200 ) );
  47.  
  48.   // Create a push button.
  49.   IPushButton
  50.     ok( ISystemMenu::idClose, &client, &client );
  51.   ok
  52.    .enableDefault()
  53.    .enableSystemCommand()  // For ISystemMenu::idClose.
  54.    .setText( "OK" )
  55.    .enableTabStop()
  56.    .enableGroup();
  57.  
  58.   // Position child windows in the canvas.
  59.   client
  60.    .addToCell( &red,   2, 2, 2, 2 )
  61.    .addToCell( &green, 3, 3, 3, 2 )
  62.    .addToCell( &blue,  5, 2, 2, 2 )
  63.    .addToCell( &ok,    2, 6, 5 );
  64.  
  65.   // Missing from this example are calls to setColumnWidth and
  66.   // setRowHeight to designate expandable columns and rows.
  67.   // The canvas causes starting columns (2 and 3) and rows
  68.   // (2 and 3) to grow beyond their default sizes of 10.  The
  69.   // resulting window differs significantly in appearance from
  70.   // the canvas\mcsimple example.
  71.   ISize
  72.     defaultCellSize = IMultiCellCanvas::defaultCell();
  73.   client
  74.    .setColumnWidth( 7, defaultCellSize.width() )
  75.    .setRowHeight( 7, defaultCellSize.height() );
  76.  
  77.   // Size and show the window now.
  78.   frame
  79.    .setClient( &client )
  80.    .setFocus()
  81.    .show();
  82.  
  83.   IApplication::current().run();
  84. }
  85.