ToolbarMenuDemoMDIView.cpp
上传用户:pasef_zww
上传日期:2007-01-02
资源大小:109k
文件大小:5k
源码类别:

菜单

开发平台:

Visual C++

  1. // ToolbarMenuDemoMDIView.cpp : implementation of the CToolbarMenuDemoMDIView class
  2. //
  3. #include "stdafx.h"
  4. #include "ToolbarMenuDemoMDI.h"
  5. #include "ToolbarMenuDemoMDIDoc.h"
  6. #include "ToolbarMenuDemoMDIView.h"
  7. // COOLMENU SUPPORT
  8. #include "MenuSpawn.h"
  9. // END COOLMENU SUPPORT
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CToolbarMenuDemoMDIView
  17. IMPLEMENT_DYNCREATE(CToolbarMenuDemoMDIView, CEditView)
  18. BEGIN_MESSAGE_MAP(CToolbarMenuDemoMDIView, CEditView)
  19. //{{AFX_MSG_MAP(CToolbarMenuDemoMDIView)
  20. ON_WM_RBUTTONDOWN()
  21. ON_WM_MENUCHAR()
  22. ON_WM_DRAWITEM()
  23. ON_WM_MEASUREITEM()
  24. //}}AFX_MSG_MAP
  25. // Standard printing commands
  26. ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
  27. ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
  28. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
  29. END_MESSAGE_MAP()
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CToolbarMenuDemoMDIView construction/destruction
  32. CToolbarMenuDemoMDIView::CToolbarMenuDemoMDIView()
  33. {
  34. // COOLMENU SUPPORT
  35. pSpawn = NULL;
  36. // END COOLMENU SUPPORT
  37. }
  38. CToolbarMenuDemoMDIView::~CToolbarMenuDemoMDIView()
  39. {
  40. // COOLMENU SUPPORT
  41. if (pSpawn) delete pSpawn;
  42. // END COOLMENU SUPPORT
  43. }
  44. BOOL CToolbarMenuDemoMDIView::PreCreateWindow(CREATESTRUCT& cs)
  45. {
  46. // TODO: Modify the Window class or styles here by modifying
  47. //  the CREATESTRUCT cs
  48. BOOL bPreCreated = CEditView::PreCreateWindow(cs);
  49. cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping
  50. return bPreCreated;
  51. }
  52. /////////////////////////////////////////////////////////////////////////////
  53. // CToolbarMenuDemoMDIView drawing
  54. void CToolbarMenuDemoMDIView::OnDraw(CDC* pDC)
  55. {
  56. CToolbarMenuDemoMDIDoc* pDoc = GetDocument();
  57. ASSERT_VALID(pDoc);
  58. // TODO: add draw code for native data here
  59. }
  60. /////////////////////////////////////////////////////////////////////////////
  61. // CToolbarMenuDemoMDIView printing
  62. BOOL CToolbarMenuDemoMDIView::OnPreparePrinting(CPrintInfo* pInfo)
  63. {
  64. // default CEditView preparation
  65. return CEditView::OnPreparePrinting(pInfo);
  66. }
  67. void CToolbarMenuDemoMDIView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
  68. {
  69. // Default CEditView begin printing.
  70. CEditView::OnBeginPrinting(pDC, pInfo);
  71. }
  72. void CToolbarMenuDemoMDIView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
  73. {
  74. // Default CEditView end printing
  75. CEditView::OnEndPrinting(pDC, pInfo);
  76. }
  77. /////////////////////////////////////////////////////////////////////////////
  78. // CToolbarMenuDemoMDIView diagnostics
  79. #ifdef _DEBUG
  80. void CToolbarMenuDemoMDIView::AssertValid() const
  81. {
  82. CEditView::AssertValid();
  83. }
  84. void CToolbarMenuDemoMDIView::Dump(CDumpContext& dc) const
  85. {
  86. CEditView::Dump(dc);
  87. }
  88. CToolbarMenuDemoMDIDoc* CToolbarMenuDemoMDIView::GetDocument() // non-debug version is inline
  89. {
  90. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CToolbarMenuDemoMDIDoc)));
  91. return (CToolbarMenuDemoMDIDoc*)m_pDocument;
  92. }
  93. #endif //_DEBUG
  94. /////////////////////////////////////////////////////////////////////////////
  95. // CToolbarMenuDemoMDIView message handlers
  96. // COOLMENU SUPPORT
  97. void CToolbarMenuDemoMDIView::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 
  98. {
  99. if (!pSpawn || !pSpawn->DrawItem(lpDrawItemStruct))
  100. CEditView::OnDrawItem(nIDCtl, lpDrawItemStruct);
  101. }
  102. void CToolbarMenuDemoMDIView::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct) 
  103. {
  104. if (!pSpawn || !pSpawn->MeasureItem(lpMeasureItemStruct))
  105. CEditView::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
  106. }
  107. // END COOLMENU SUPPORT
  108. void CToolbarMenuDemoMDIView::OnRButtonDown(UINT nFlags, CPoint point) 
  109. {
  110. // COOLMENU SUPPORT
  111. if (pSpawn) delete pSpawn;
  112. pSpawn = new CMenuSpawn(true);
  113. ASSERT(pSpawn);
  114. pSpawn->LoadToolBarResource(IDR_MAINFRAME);
  115. CMenu pPopupMenu;
  116. VERIFY(pPopupMenu.LoadMenu(IDR_TOOLBATYPE));
  117. CMenu * pPopup = pPopupMenu.GetSubMenu(1); // Let's get the Modify menu
  118. ASSERT(pPopup != NULL);
  119. pSpawn->RemapMenu(pPopup);
  120. // This is a function which uses the standard MFC command enabling mechanism
  121. // to enable and disable the items of the popup menu
  122. pSpawn->EnableMenuItems(pPopup, this);
  123. /* CString csText;
  124. pSpawn->GetMenuItemText(csText, pPopup, 0, true);
  125. afxDump << csText << "n";*/
  126. CPoint mpt;
  127. ::GetCursorPos(&mpt);
  128. pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, mpt.x, mpt.y, this);
  129. pPopupMenu.DestroyMenu();
  130. delete pSpawn;
  131. pSpawn = NULL;
  132. // END COOLMENU SUPPORT
  133. // CEditView::OnRButtonDown(nFlags, point);
  134. }
  135. // COOLMENU SUPPORT
  136. LRESULT CToolbarMenuDemoMDIView::OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu) 
  137. {
  138. LRESULT lRes = CEditView::OnMenuChar(nChar, nFlags, pMenu);
  139. if (HIWORD(lRes) != 2) pSpawn->FindKeyboardShortcut(nChar, nFlags, pMenu, lRes);
  140. return lRes;
  141. }
  142. // END COOLMENU SUPPORT