mymenuView.cpp
上传用户:aphuaqiang
上传日期:2007-01-02
资源大小:62k
文件大小:4k
源码类别:

菜单

开发平台:

Visual C++

  1. // mymenuView.cpp : implementation of the CMymenuView class
  2. //
  3. #include "stdafx.h"
  4. #include "mymenu.h"
  5. #include "MainFrm.h"
  6. #include "mymenuDoc.h"
  7. #include "mymenuView.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMymenuView
  15. IMPLEMENT_DYNCREATE(CMymenuView, CView)
  16. BEGIN_MESSAGE_MAP(CMymenuView, CView)
  17. //{{AFX_MSG_MAP(CMymenuView)
  18. ON_WM_RBUTTONDOWN()
  19. ON_WM_MEASUREITEM()
  20. ON_WM_MENUCHAR()
  21. ON_COMMAND(ID_HOMEPAGE, OnHomepage)
  22. //}}AFX_MSG_MAP
  23. // Standard printing commands
  24. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  25. ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  26. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  27. END_MESSAGE_MAP()
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CMymenuView construction/destruction
  30. CMymenuView::CMymenuView()
  31. {
  32. }
  33. CMymenuView::~CMymenuView()
  34. {
  35. }
  36. BOOL CMymenuView::PreCreateWindow(CREATESTRUCT& cs)
  37. {
  38. // TODO: Modify the Window class or styles here by modifying
  39. //  the CREATESTRUCT cs
  40. return CView::PreCreateWindow(cs);
  41. }
  42. /////////////////////////////////////////////////////////////////////////////
  43. // CMymenuView drawing
  44. void CMymenuView::OnDraw(CDC* /*pDC*/) //SK: removed warning C4100: 'pDC' : unreferenced formal parameter
  45. {
  46. CMymenuDoc* pDoc = GetDocument();
  47. ASSERT_VALID(pDoc);
  48. // TODO: add draw code for native data here
  49. }
  50. /////////////////////////////////////////////////////////////////////////////
  51. // CMymenuView printing
  52. BOOL CMymenuView::OnPreparePrinting(CPrintInfo* pInfo)
  53. {
  54. // default preparation
  55. return DoPreparePrinting(pInfo);
  56. }
  57. void CMymenuView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  58. {
  59. // TODO: add extra initialization before printing
  60. }
  61. void CMymenuView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  62. {
  63. // TODO: add cleanup after printing
  64. }
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CMymenuView diagnostics
  67. #ifdef _DEBUG
  68. void CMymenuView::AssertValid() const
  69. {
  70. CView::AssertValid();
  71. }
  72. void CMymenuView::Dump(CDumpContext& dc) const
  73. {
  74. CView::Dump(dc);
  75. }
  76. CMymenuDoc* CMymenuView::GetDocument() // non-debug version is inline
  77. {
  78. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMymenuDoc)));
  79. return (CMymenuDoc*)m_pDocument;
  80. }
  81. #endif //_DEBUG
  82. /////////////////////////////////////////////////////////////////////////////
  83. // CMymenuView message handlers
  84. void CMymenuView::OnRButtonDown(UINT /*nFlags*/, CPoint point) //SK: removed warning C4100: 'nFlags' : unreferenced formal parameter
  85. {
  86.   popmenu.LoadMenu(IDR_RIGHT_CLICK);
  87.   popmenu.ModifyODMenu(NULL,ID_EDIT_CUT,IDR_MAINFRAME);
  88.   popmenu.ModifyODMenu(NULL,ID_EDIT_COPY,IDR_MAINFRAME);
  89.   popmenu.ModifyODMenu(NULL,ID_EDIT_PASTE,IDR_MAINFRAME);
  90.   popmenu.ModifyODMenu(NULL,ID_ZOOM,IDB_ZOOM);
  91.   popmenu.ModifyODMenu(NULL,_T("&Rocscience on the Web"),IDB_NET);//SK modified for Unicode
  92.   popmenu.LoadToolbar(IDR_TOOLBAR);
  93.   ClientToScreen(&point);
  94.   BCMenu *psub = (BCMenu *)popmenu.GetSubMenu(0);
  95.   psub->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
  96.   popmenu.DestroyMenu();
  97. }
  98. void CMymenuView::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct) 
  99. {
  100.   BOOL setflag=FALSE;
  101.   if(lpMeasureItemStruct->CtlType==ODT_MENU){
  102.     if(IsMenu((HMENU)lpMeasureItemStruct->itemID)){
  103.       CMenu* cmenu=CMenu::FromHandle((HMENU)lpMeasureItemStruct->itemID);
  104.       if(popmenu.IsMenu(cmenu)){
  105.         popmenu.MeasureItem(lpMeasureItemStruct);
  106.         setflag=TRUE;
  107.       }
  108.     }
  109.   }
  110. if(!setflag)CView::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
  111. }
  112. LRESULT CMymenuView::OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu) 
  113. {
  114.   LRESULT lresult;
  115.   if(popmenu.IsMenu(pMenu))
  116.     lresult=BCMenu::FindKeyboardShortcut(nChar, nFlags, pMenu);
  117. else
  118.     lresult=CView::OnMenuChar(nChar, nFlags, pMenu);
  119.   return(lresult);
  120. }
  121. void CMymenuView::OnHomepage() 
  122. {
  123.   ShellExecute(::GetDesktopWindow(),_T("open"),//SK modified for Unicode
  124.     _T("http://www.rocscience.com/~corkum/BCMenu.html"),NULL,NULL,//SK modified for Unicode
  125.     SW_MAXIMIZE);
  126. }