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

书籍源码

开发平台:

Visual C++

  1. // ex62View.cpp : implementation of the CEx62View class
  2. //
  3. #include "stdafx.h"
  4. #include "ex62.h"
  5. #include "ex62Doc.h"
  6. #include "ex62View.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CEx62View
  14. IMPLEMENT_DYNCREATE(CEx62View, CView)
  15. BEGIN_MESSAGE_MAP(CEx62View, CView)
  16. //{{AFX_MSG_MAP(CEx62View)
  17. ON_WM_CONTEXTMENU()
  18. ON_COMMAND(ID_ELLIPSE, OnEllipse)
  19. ON_UPDATE_COMMAND_UI(ID_ELLIPSE, OnUpdateEllipse)
  20. ON_COMMAND(ID_RECTANGLE, OnRectangle)
  21. ON_UPDATE_COMMAND_UI(ID_RECTANGLE, OnUpdateRectangle)
  22. ON_COMMAND(ID_TEXT, OnText)
  23. ON_COMMAND(ID_PUSHED, OnPushed)
  24. ON_COMMAND(ID_ENABLE, OnEnable)
  25. ON_UPDATE_COMMAND_UI(ID_TEXT, OnUpdateText)
  26. //}}AFX_MSG_MAP
  27. // Standard printing commands
  28. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  29. ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  30. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  31. END_MESSAGE_MAP()
  32. /////////////////////////////////////////////////////////////////////////////
  33. // CEx62View construction/destruction
  34. CEx62View::CEx62View()
  35. {
  36. flag=-1;
  37. m_bPushed=FALSE;
  38. m_bEnable=TRUE;
  39. }
  40. CEx62View::~CEx62View()
  41. {
  42. }
  43. BOOL CEx62View::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. // CEx62View drawing
  51. void CEx62View::OnDraw(CDC* pDC)
  52. {
  53. CEx62Doc* pDoc = GetDocument();
  54. ASSERT_VALID(pDoc);
  55. // TODO: add draw code for native data here
  56. }
  57. /////////////////////////////////////////////////////////////////////////////
  58. // CEx62View printing
  59. BOOL CEx62View::OnPreparePrinting(CPrintInfo* pInfo)
  60. {
  61. // default preparation
  62. return DoPreparePrinting(pInfo);
  63. }
  64. void CEx62View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  65. {
  66. // TODO: add extra initialization before printing
  67. }
  68. void CEx62View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  69. {
  70. // TODO: add cleanup after printing
  71. }
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CEx62View diagnostics
  74. #ifdef _DEBUG
  75. void CEx62View::AssertValid() const
  76. {
  77. CView::AssertValid();
  78. }
  79. void CEx62View::Dump(CDumpContext& dc) const
  80. {
  81. CView::Dump(dc);
  82. }
  83. CEx62Doc* CEx62View::GetDocument() // non-debug version is inline
  84. {
  85. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEx62Doc)));
  86. return (CEx62Doc*)m_pDocument;
  87. }
  88. #endif //_DEBUG
  89. /////////////////////////////////////////////////////////////////////////////
  90. // CEx62View message handlers
  91. void CEx62View::OnContextMenu(CWnd* pWnd, CPoint point) 
  92. {
  93. CMenu menu;
  94. menu.LoadMenu(IDR_POPMENU);
  95. menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,AfxGetMainWnd());
  96. }
  97. void CEx62View::OnEllipse() 
  98. {
  99. Invalidate(); //清除窗口内容
  100. UpdateWindow(); //加快窗口更新速度
  101. CDC *pDC=GetDC();
  102. pDC->Ellipse(100,100,200,200);
  103. flag=0;
  104. }
  105. void CEx62View::OnUpdateEllipse(CCmdUI* pCmdUI) 
  106. {
  107. pCmdUI->SetCheck((flag==0)||m_bPushed);
  108. pCmdUI->Enable(m_bEnable);
  109. }
  110. void CEx62View::OnRectangle() 
  111. {
  112. Invalidate(); //清除窗口内容
  113. UpdateWindow(); //加快窗口更新速度
  114. CDC *pDC=GetDC();
  115. pDC->Rectangle(100,100,200,200);
  116. flag=1;
  117. }
  118. void CEx62View::OnUpdateRectangle(CCmdUI* pCmdUI) 
  119. {
  120. pCmdUI->SetCheck((flag==1)||m_bPushed);
  121. pCmdUI->Enable(m_bEnable);
  122. }
  123. void CEx62View::OnText() 
  124. {
  125. CDC *pDC=GetDC();
  126. pDC->TextOut(100,100,"Hello!");
  127. }
  128. void CEx62View::OnPushed() 
  129. {
  130. m_bPushed=!m_bPushed;
  131. }
  132. void CEx62View::OnEnable() 
  133. {
  134. m_bEnable=!m_bEnable;
  135. }
  136. void CEx62View::OnUpdateText(CCmdUI* pCmdUI) 
  137. {
  138. pCmdUI->SetCheck(m_bPushed);
  139. pCmdUI->Enable(m_bEnable);
  140. }