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

书籍源码

开发平台:

Visual C++

  1. // ex71View.cpp : implementation of the CEx71View class
  2. //
  3. #include "stdafx.h"
  4. #include "ex71.h"
  5. #include "ex71Doc.h"
  6. #include "ex71View.h"
  7. #include "PenDlg.h"
  8. //#include "NPenDlg.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CEx71View
  16. IMPLEMENT_DYNCREATE(CEx71View, CView)
  17. BEGIN_MESSAGE_MAP(CEx71View, CView)
  18. //{{AFX_MSG_MAP(CEx71View)
  19. ON_COMMAND(ID_TESTDLG, OnTestdlg)
  20. ON_COMMAND(ID_Modal, OnModal)
  21. ON_COMMAND(ID_NoModal, OnNoModal)
  22. ON_MESSAGE(WM_APPLY,Apply)
  23. //}}AFX_MSG_MAP
  24. // Standard printing commands
  25. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  26. ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  27. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  28. END_MESSAGE_MAP()
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CEx71View construction/destruction
  31. CEx71View::CEx71View()
  32. {
  33. m_nWidth=1;   //将当前画笔宽度设置为1
  34. }
  35. CEx71View::~CEx71View()
  36. {
  37. }
  38. BOOL CEx71View::PreCreateWindow(CREATESTRUCT& cs)
  39. {
  40. // TODO: Modify the Window class or styles here by modifying
  41. //  the CREATESTRUCT cs
  42. return CView::PreCreateWindow(cs);
  43. }
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CEx71View drawing
  46. void CEx71View::OnDraw(CDC* pDC)
  47. {
  48. CEx71Doc* pDoc = GetDocument();
  49. ASSERT_VALID(pDoc);
  50. CPen pen;
  51. pen.CreatePen(PS_SOLID,m_nWidth,RGB(255,0,0)); //创建画笔
  52. pDC->SelectObject(&pen);
  53. pDC->Ellipse(100,100,300,300); //画圆
  54. }
  55. /////////////////////////////////////////////////////////////////////////////
  56. // CEx71View printing
  57. BOOL CEx71View::OnPreparePrinting(CPrintInfo* pInfo)
  58. {
  59. // default preparation
  60. return DoPreparePrinting(pInfo);
  61. }
  62. void CEx71View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  63. {
  64. // TODO: add extra initialization before printing
  65. }
  66. void CEx71View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  67. {
  68. // TODO: add cleanup after printing
  69. }
  70. /////////////////////////////////////////////////////////////////////////////
  71. // CEx71View diagnostics
  72. #ifdef _DEBUG
  73. void CEx71View::AssertValid() const
  74. {
  75. CView::AssertValid();
  76. }
  77. void CEx71View::Dump(CDumpContext& dc) const
  78. {
  79. CView::Dump(dc);
  80. }
  81. CEx71Doc* CEx71View::GetDocument() // non-debug version is inline
  82. {
  83. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEx71Doc)));
  84. return (CEx71Doc*)m_pDocument;
  85. }
  86. #endif //_DEBUG
  87. /////////////////////////////////////////////////////////////////////////////
  88. // CEx71View message handlers
  89. void CEx71View::OnTestdlg() 
  90. {
  91. CPenDlg dlg;
  92. dlg.DoModal();
  93. }
  94. void CEx71View::OnModal() 
  95. {
  96. CPenDlg dlg;
  97. dlg.m_nWidthEdit=m_nWidth;// 将视图中的m_nWidth赋给对话框中的m_nWidthEdit
  98. if(dlg.DoModal()==IDOK)//调用DoModal()显示对话框,如果单击OK关闭对话框
  99. {
  100. m_nWidth=dlg.m_nWidthEdit; //对话框中的m_nWidthEdit赋给将视图中的m_nWidth
  101. Invalidate();//调用OnDraw()函数用新画笔重绘图形
  102. }
  103. }
  104. void CEx71View::OnNoModal() 
  105. {
  106. NpenDlg=new CNPenDlg(this);
  107. NpenDlg->m_nWidthEdit=m_nWidth;
  108. NpenDlg->Create(CNPenDlg::IDD);
  109. NpenDlg->ShowWindow(SW_SHOW);
  110. }
  111. void CEx71View::Apply(WPARAM wParam, LPARAM lParam)
  112. {
  113. m_nWidth=NpenDlg->m_nWidthEdit; //将对话框中m_nWidthEdit的值传给视图的m_nWidth;
  114. Invalidate(); //重绘图形
  115. }