home *** CD-ROM | disk | FTP | other *** search
/ HomeWare 14 / HOMEWARE14.bin / windows / graphs / multicon.arj / ELLPSEVW.CPP next >
C/C++ Source or Header  |  1994-03-10  |  3KB  |  120 lines

  1. //*************************************************************
  2. //  File name: ELLPSEVW.CPP
  3. //
  4. //  Description: Implementation for the CEllipseView class.
  5. //
  6. //  History:    Date       Author     Comment
  7. //              3/7/94     FJB        Created
  8. //
  9. // Written by Microsoft Product Support Services, Windows Developer Support
  10. // Copyright (c) 1994 Microsoft Corporation. All rights reserved.
  11. //*************************************************************
  12.  
  13. #include "stdafx.h"
  14. #include "multicon.h" 
  15. #include "micondoc.h" 
  16. #include "modview.h"
  17. #include "ellpsevw.h"
  18.  
  19. #ifdef _DEBUG
  20. #undef THIS_FILE
  21. static char BASED_CODE THIS_FILE[] = __FILE__;
  22. #endif
  23.         
  24.         
  25. //*************************************************************
  26. //  Class:
  27. //      CEllipseView 
  28. //
  29. //  Description:
  30. //      AppWizard generated view class that draws an ellipse of random color
  31. //      and size.
  32. //
  33. //  Derived from:
  34. //      CEllipseView
  35. //
  36. //  Data Members:
  37. //      None
  38. //
  39. //  Member Functions:
  40. //      CEllipseView      : Constructor
  41. //     ~CEllipseView      : Destructor
  42. //      GetDocument       : Returns a CMulticonDoc*
  43. //      OnDraw            : Draws an ellipse
  44. //
  45. //  Comments
  46. //      This class is derived from CModView, a CView derived class that
  47. //      exposes a public OnDraw override.
  48. //
  49. //  History:    Date       Author     Comment
  50. //              3/7/94     FJB        Created
  51. //
  52. //*************************************************************  
  53.  
  54.  
  55. IMPLEMENT_DYNCREATE(CEllipseView, CModView)
  56.  
  57. CEllipseView::CEllipseView()
  58.    // nothing to do here...
  59. }
  60.  
  61. CEllipseView::~CEllipseView()
  62.    // or here.
  63. }
  64.  
  65.  
  66. BEGIN_MESSAGE_MAP(CEllipseView, CModView)
  67.    //{{AFX_MSG_MAP(CEllipseView)
  68.       // NOTE - the ClassWizard will add and remove mapping macros here.
  69.    //}}AFX_MSG_MAP
  70. END_MESSAGE_MAP()
  71.  
  72.  
  73. /////////////////////////////////////////////////////////////////////////////
  74. // CEllipseView drawing
  75.  
  76.  
  77. void CEllipseView::OnDraw(CDC* pDC)
  78. {   
  79.    CMulticonDoc* pDoc = GetDocument();
  80.   
  81.    // This block draws an ellipse of random size and color 
  82.    // The coordinate range for the rectangle is 50% larger than
  83.    // the view's current client area, to give a splashover effect
  84.    CRect rcClient;
  85.    GetClientRect(&rcClient);
  86.    int xMin = rcClient.left   - rcClient.Width()/4;
  87.    int xMax = rcClient.right  + rcClient.Width()/4;
  88.    int yMin = rcClient.top    - rcClient.Height()/4;
  89.    int yMax = rcClient.bottom + rcClient.Height()/4;
  90.   
  91.    // This view doesn't really need a document, since it generates it's
  92.    // own random data and doesn't require serialization support.  Just
  93.    // for fun, the document provides a random number function that returns
  94.    // a value in the specified range
  95.    int x1 = pDoc->Rand(xMax,xMin);
  96.    int x2 = pDoc->Rand(xMax,xMin);
  97.    int y1 = pDoc->Rand(yMax,yMin);
  98.    int y2 = pDoc->Rand(yMax,yMin);
  99.       
  100.    int nRed   = pDoc->Rand(255);
  101.    int nBlue  = pDoc->Rand(255);
  102.    int nGreen = pDoc->Rand(255);  
  103.       
  104.    CBrush br;
  105.    br.CreateSolidBrush( RGB(nRed,nBlue,nGreen) );
  106.       
  107.    CBrush *pbrOld = pDC->SelectObject(&br);
  108.       
  109.    pDC->Ellipse(x1,y1,x2,y2);
  110.  
  111.    // We painted the picture, now clean the brush   
  112.    pDC->SelectObject(pbrOld);
  113.    br.DeleteObject();
  114.    
  115. }
  116.  
  117.  
  118.