home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / powergui / fonts / genfont / genfont.cpp next >
Text File  |  1996-10-29  |  3KB  |  85 lines

  1. //************************************************************
  2. // Fonts - Using Common Font Functions
  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 <icheckbx.hpp>
  10. #include <ientryfd.hpp>
  11. #include <ifont.hpp>
  12. #include <iframe.hpp>
  13. #include <imcelcv.hpp>
  14.  
  15. // Specific font names vary between operating systems,
  16. // complicating the issue of writing portable applications.
  17. // Avoid embedding the names in the code and instead define
  18. // them at the top of the code as we do here.
  19. #ifdef IC_PM
  20. #define OS_FONT_1   "Helvetica"
  21. #define OS_FONT_2   "Courier"
  22. #else  // Windows
  23. #define OS_FONT_1   "Arial"
  24. #define OS_FONT_2   "Courier New"
  25. #endif
  26.  
  27. void main()
  28. {
  29.   // Create the frame, client canvas and client controls.
  30.   IFrameWindow aFrame( "Using Common Font Functions" );
  31.   IMultiCellCanvas aClient( IC_FRAME_CLIENT_ID,
  32.                             &aFrame, &aFrame );
  33.   IEntryField myEntryField( 1001, &aClient, &aClient );
  34.   ICheckBox myCB1( 1002, &aClient, &aClient );
  35.   ICheckBox myCB2( 1003, &aClient, &aClient );
  36.   ICheckBox myCB3( 1004, &aClient, &aClient );
  37.   aFrame.setClient( &aClient );
  38.  
  39.   // Add the controls to the canvas.
  40.   aClient
  41.    .addToCell( &myEntryField, 2, 2 )
  42.    .addToCell( &myCB1,        2, 4 )
  43.    .addToCell( &myCB2,        2, 5 )
  44.    .addToCell( &myCB3,        2, 6 );
  45.  
  46.   // Set the text of the entry field.
  47.   myEntryField.setText( "ABCDEFGabcdefg" );
  48.  
  49.   // Set the text of the checkboxes.
  50.   myCB1.setText( "Choice 1" );
  51.   myCB2.setText( "Choice 2" );
  52.   myCB3.setText( "Choice 3" );
  53.  
  54.   // Create a font object, providing a typeface name
  55.   // and point size and apply it to the frame.
  56.   IFont font1( OS_FONT_1, 14 );
  57.   aFrame.setFont( font1 );
  58.  
  59.   // Increase the point size; then, apply it to the entry field.
  60.   font1.setPointSize( 24 );
  61.   myEntryField.setFont( font1 );
  62.  
  63.   // Change the typeface name; decrease the point size,
  64.   // and then apply it to check box 1.
  65.   font1.setName( OS_FONT_2 ).setPointSize( 10 );
  66.   myCB1.setFont( font1 );
  67.  
  68.   // Create a new font from check box 1.  Change the
  69.   // font characteristics, and then apply it to check box 2.
  70.   IFont font2( &myCB1 );
  71.   font2.setBold().setItalic();
  72.   myCB2.setFont( font2 );
  73.  
  74.   // Create a default font, and then apply it to check box 3.
  75.   IFont font3;
  76.   myCB3.setFont( font3 );
  77.  
  78.   // Show the frame and run the application.
  79.   aFrame
  80.     .setFocus()
  81.     .show();
  82.   IApplication::current().run();
  83. }
  84.  
  85.