ex81View.cpp
上传用户:qdhmjx
上传日期:2022-07-11
资源大小:2226k
文件大小:4k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // ex81View.cpp : implementation of the CEx81View class
  2. //
  3. #include "stdafx.h"
  4. #include "ex81.h"
  5. #include "ex81Doc.h"
  6. #include "ex81View.h"
  7. #include "GraphicDlg.h"
  8. #include "EditDlg.h"
  9. #include "ListDlg.h"
  10. #include "ComboDlg.h"
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CEx81View
  18. IMPLEMENT_DYNCREATE(CEx81View, CView)
  19. BEGIN_MESSAGE_MAP(CEx81View, CView)
  20. //{{AFX_MSG_MAP(CEx81View)
  21. ON_COMMAND(ID_Graphic, OnGraphic)
  22. ON_COMMAND(ID_EDITDLG, OnEditdlg)
  23. ON_COMMAND(IDC_LISTDLG, OnListdlg)
  24. ON_COMMAND(IDC_COMBODLG, OnCombodlg)
  25. //}}AFX_MSG_MAP
  26. // Standard printing commands
  27. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  28. ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  29. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  30. END_MESSAGE_MAP()
  31. /////////////////////////////////////////////////////////////////////////////
  32. // CEx81View construction/destruction
  33. CEx81View::CEx81View()
  34. {
  35. r=0;
  36. g=0;
  37. b=0;
  38. color="红色";
  39. }
  40. CEx81View::~CEx81View()
  41. {
  42. }
  43. BOOL CEx81View::PreCreateWindow(CREATESTRUCT& cs)
  44. {
  45. // TODO: Modify the Window class or styles here by modifying
  46. //  the CREATESTRUCT cs
  47. return CView::PreCreateWindow(cs);
  48. }
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CEx81View drawing
  51. void CEx81View::OnDraw(CDC* pDC)
  52. {
  53. CEx81Doc* pDoc = GetDocument();
  54. ASSERT_VALID(pDoc);
  55. CBrush brush(RGB(r,g,b));
  56. pDC->SelectObject(&brush);
  57. pDC->Ellipse(100,100,200,200);
  58. }
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CEx81View printing
  61. BOOL CEx81View::OnPreparePrinting(CPrintInfo* pInfo)
  62. {
  63. // default preparation
  64. return DoPreparePrinting(pInfo);
  65. }
  66. void CEx81View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  67. {
  68. // TODO: add extra initialization before printing
  69. }
  70. void CEx81View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  71. {
  72. // TODO: add cleanup after printing
  73. }
  74. /////////////////////////////////////////////////////////////////////////////
  75. // CEx81View diagnostics
  76. #ifdef _DEBUG
  77. void CEx81View::AssertValid() const
  78. {
  79. CView::AssertValid();
  80. }
  81. void CEx81View::Dump(CDumpContext& dc) const
  82. {
  83. CView::Dump(dc);
  84. }
  85. CEx81Doc* CEx81View::GetDocument() // non-debug version is inline
  86. {
  87. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEx81Doc)));
  88. return (CEx81Doc*)m_pDocument;
  89. }
  90. #endif //_DEBUG
  91. /////////////////////////////////////////////////////////////////////////////
  92. // CEx81View message handlers
  93. void CEx81View::OnGraphic() 
  94. {
  95. CGraphicDlg dlg;
  96. CDC  *pDC=GetDC();
  97. r=0;
  98. g=0;
  99. b=0;
  100. if(dlg.DoModal()==IDOK)
  101. {
  102. if(dlg.m_bChkRed)
  103. r=255;
  104. if(dlg.m_bChkGreen)
  105. g=255;
  106. if(dlg.m_bChkBlue)
  107. b=255;
  108. CBrush brush(RGB(r,g,b));
  109. pDC->SelectObject(&brush);
  110. Invalidate();
  111. UpdateWindow();
  112. if(!dlg.m_Graphic) //判断选择的单选按钮
  113. pDC->Ellipse(100,100,200,200);
  114. else
  115. pDC->Rectangle(100,100,200,200);
  116. }
  117. }
  118. void CEx81View::OnEditdlg() 
  119. {
  120. CEditDlg dlg;
  121. dlg.m_nEditRed=r;
  122. dlg.m_nEditGreen=g;
  123. dlg.m_nEditBlue=b;
  124. if(dlg.DoModal()==IDOK)
  125. {
  126. r=dlg.m_nEditRed;
  127. g=dlg.m_nEditGreen;
  128. b=dlg.m_nEditBlue;
  129. Invalidate();//通过该函数调用OnDraw函数
  130. }
  131. }
  132. void CEx81View::OnListdlg() 
  133. {
  134. CListDlg dlg;
  135. dlg.m_strColor=color;//color为一表示颜色的字符串,初始化为color="红色"
  136. if(dlg.DoModal()==IDOK)
  137. {
  138. color=dlg.m_strColor;
  139. if(color=="红色")
  140. {
  141. r=255;
  142. g=b=0;
  143. }
  144. if(color=="绿色")
  145. {
  146. r=b=0;
  147. g=255;
  148. }
  149. if(color=="蓝色")
  150. {
  151. r=g=0;
  152. b=255;
  153. }
  154. Invalidate();
  155. }
  156. }
  157. void CEx81View::OnCombodlg() 
  158. {
  159. CComboDlg dlg;
  160. dlg.m_strColor=color;
  161. if(dlg.DoModal()==IDOK)
  162. color=dlg.m_strColor;
  163. if(color=="红色")
  164. {
  165. r=255;
  166. g=b=0;
  167. }
  168. if(color=="绿色")
  169. {
  170. r=b=0;
  171. g=255;
  172. }
  173. if(color=="蓝色")
  174. {
  175. r=g=0;
  176. b=255;
  177. }
  178. Invalidate();
  179. }
  180. }