home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / starview / examples / tutorial / example4 / example4.cxx < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-01  |  4.8 KB  |  197 lines

  1. /*******************************************************************
  2. *  EXAMPLE4.CXX
  3. *  (c) 1992 STAR DIVISION
  4. *******************************************************************/
  5.  
  6. #include <sv.hxx>
  7.  
  8. #include "example4.hrc"
  9. #include "about4.hrc"
  10. #include "about4.hxx"
  11.  
  12. // --- class MyApp -------------------------------------------------
  13.  
  14. class MyApp : public Application
  15. {
  16. public:
  17.     virtual void Main( int, char*[] );
  18. };
  19.  
  20. // --- class MyWin -------------------------------------------------
  21.  
  22. class MyWin : public WorkWindow
  23. {
  24. private:
  25.     USHORT          nColor;
  26.     USHORT          nWidth;
  27.     Point           aLastPoint;
  28.  
  29. public:
  30.                     MyWin();
  31.  
  32.     virtual BOOL    Close();
  33.     virtual void    MouseButtonDown( const MouseEvent& rMEvt );
  34.     virtual void    MouseButtonUp( const MouseEvent& rMEvt );
  35.     virtual void    MouseMove( const MouseEvent& rMEvt );
  36.     long            FileSelect( Menu* pMenu );
  37.     long            ColorSelect( Menu* pMenu );
  38.     long            WidthSelect( Menu* pMenu );
  39. };
  40.  
  41. // --- MyWin::MyWin() ----------------------------------------------
  42.  
  43. MyWin::MyWin() : WorkWindow( NULL, WB_STDWORK | WB_APP )
  44. {
  45.     nColor = 0;
  46.     nWidth = 0;
  47. }
  48.  
  49. // --- MyWin::Close() ----------------------------------------------
  50.  
  51. BOOL MyWin::Close()
  52. {
  53.     QueryBox aBox( this, WB_OK_CANCEL | WB_DEF_OK, "Exit Paint" );
  54.  
  55.     if ( aBox.Execute() == RET_OK )
  56.         return WorkWindow::Close();
  57.     else
  58.         return FALSE;
  59. }
  60.  
  61. // --- MyWin::MouseButtonDown() ------------------------------------
  62.  
  63. void MyWin::MouseButtonDown( const MouseEvent& rMEvt )
  64. {
  65.     CaptureMouse();
  66.     aLastPoint = rMEvt.GetPosPixel();
  67. }
  68.  
  69. // --- MyWin::MouseButtonUp() --------------------------------------
  70.  
  71. void MyWin::MouseButtonUp( const MouseEvent& )
  72. {
  73.     ReleaseMouse();
  74. }
  75.  
  76. // --- MyWin::MouseMove() ------------------------------------------
  77.  
  78. void MyWin::MouseMove( const MouseEvent& rMEvt )
  79. {
  80.     if ( rMEvt.GetMode() == MOUSE_SIMPLEDRAG )
  81.     {
  82.         DrawLine( aLastPoint, rMEvt.GetPosPixel() );
  83.         aLastPoint = rMEvt.GetPosPixel();
  84.     }
  85. }
  86.  
  87. // --- MyWin::FileSelect() -----------------------------------------
  88.  
  89. long MyWin::FileSelect( Menu* pMenu )
  90. {
  91.     switch ( pMenu->GetCurItemId() )
  92.     {
  93.         case MID_ABOUT:
  94.             {
  95.                 AboutBox( this, ResId( RID_ABOUTBOX ) ).Execute();
  96.             }
  97.             break;
  98.         case MID_QUIT:
  99.             Close();
  100.             break;
  101.     }
  102.  
  103.     return TRUE;
  104. }
  105.  
  106. // --- MyWin::ColorSelect() ----------------------------------------
  107.  
  108. long MyWin::ColorSelect( Menu* pMenu )
  109. {
  110.     if ( nColor )
  111.         pMenu->CheckItem( nColor, FALSE );
  112.     nColor = pMenu->GetCurItemId();
  113.     pMenu->CheckItem( nColor );
  114.  
  115.     Pen aPen = GetPen();
  116.     switch( nColor )
  117.     {
  118.         case MID_PENRED:
  119.              aPen.ChangeColor( Color( COL_RED ) );
  120.              break;
  121.         case MID_PENBLUE:
  122.              aPen.ChangeColor( Color( COL_BLUE ) );
  123.              break;
  124.         case MID_PENYELLOW:
  125.              aPen.ChangeColor( Color( COL_YELLOW ) );
  126.              break;
  127.     }
  128.     ChangePen( aPen );
  129.  
  130.     return TRUE;
  131. }
  132.  
  133. // --- MyWin::WidthSelect() ----------------------------------------
  134.  
  135. long MyWin::WidthSelect( Menu* pMenu )
  136. {
  137.     if ( nWidth )
  138.         pMenu->CheckItem( nWidth, FALSE );
  139.     nWidth = pMenu->GetCurItemId();
  140.     pMenu->CheckItem( nWidth );
  141.  
  142.     Pen aPen = GetPen();
  143.     switch ( nWidth )
  144.     {
  145.         case MID_PENSMALL:
  146.             aPen.ChangeWidth( 1 );
  147.             break;
  148.         case MID_PENMEDIUM:
  149.             aPen.ChangeWidth( 4 );
  150.             break;
  151.         case MID_PENTHICK:
  152.             aPen.ChangeWidth( 8 );
  153.             break;
  154.     }
  155.     ChangePen( aPen );
  156.  
  157.     return TRUE;
  158. }
  159.  
  160. // --- MyApp::Main() -----------------------------------------------
  161.  
  162. void MyApp::Main( int, char*[] )
  163. {
  164.     MyWin   aMainWin;
  165.     MenuBar aMenuBar( ResId( MID_MENUBAR ) );
  166.  
  167.     aMenuBar.GetPopupMenu( MID_FILE )->
  168.         PushSelectHdl( LINK( &aMainWin, MyWin::FileSelect ) );
  169.     aMenuBar.GetPopupMenu( MID_PENCOLOR )->
  170.         PushSelectHdl( LINK( &aMainWin, MyWin::ColorSelect ) );
  171.     aMenuBar.GetPopupMenu( MID_PENWIDTH )->
  172.         PushSelectHdl( LINK( &aMainWin, MyWin::WidthSelect ) );
  173.  
  174.     ChangeAppMenu( &aMenuBar );
  175.  
  176.     aMainWin.SetText( "StarView Paint" );
  177.     aMainWin.Show();
  178.  
  179.     Execute();
  180.  
  181.     PopupMenu* pDelMenu;
  182.     pDelMenu = aMenuBar.ChangePopupMenu( MID_FILE, NULL );
  183.     delete pDelMenu;
  184.     pDelMenu = aMenuBar.ChangePopupMenu( MID_PENCOLOR, NULL );
  185.     delete pDelMenu;
  186.     pDelMenu = aMenuBar.ChangePopupMenu( MID_PENWIDTH, NULL );
  187.     delete pDelMenu;
  188. }
  189.  
  190. // --- aMyApp ------------------------------------------------------
  191.  
  192. MyApp aMyApp;
  193.  
  194. #ifdef MAC
  195.     Application* pApp = &aMyApp;
  196. #endif
  197.