源碼:
功能表項目
void CMainFrame::OnAppendMenu()<br />{<br />// TODO: Add your command handler code here<br />//擷取主菜單<br />CMenu* pMenu=GetMenu();<br />//擷取子功能表<br />CMenu *pSubMenu=pMenu->GetSubMenu(4);<br />if (pSubMenu->GetMenuItemCount()==4)<br />{<br />//在菜單末端添加功能表項目<br />pSubMenu->AppendMenu(MF_STRING,ID_TEST_MENU,_T("新菜單"));<br />//重畫菜單<br />DrawMenuBar();<br />}</p><p>}<br />void CMainFrame::OnDeleteMenu()<br />{<br />// TODO: Add your command handler code here<br />CMenu* pMenu=GetMenu();<br />CMenu* pSubMenu=pMenu->GetSubMenu(4);<br />if (pSubMenu->GetMenuItemCount()==5)<br />{<br />pSubMenu->DeleteMenu(4,MF_BYPOSITION);<br />DrawMenuBar();<br />}</p><p>}<br />void CMainFrame::OnRemoveMenu()<br />{<br />// TODO: Add your command handler code here<br />CMenu* pMenu=GetMenu();<br />CMenu* pSubMenu=pMenu->GetSubMenu(4);<br />if (pSubMenu->GetMenuItemCount()==5)<br />{<br />pSubMenu->RemoveMenu(4,MF_BYPOSITION);<br />DrawMenuBar();<br />}</p><p>}<br />void CMainFrame::OnInsertMenu()<br />{</p><p>// TODO: Add your command handler code here<br />CMenu* pMenu=GetMenu();<br />CMenu* pSubMenu=pMenu->GetSubMenu(4);<br />if (pSubMenu->GetMenuItemCount()==4)<br />{<br />//在指定的位置添加功能表項目<br />pSubMenu->InsertMenu(2,MF_BYPOSITION,ID_TEST_MENU,_T("Insert功能表項目"));<br />DrawMenuBar();<br />}<br />}<br />void CMainFrame::OnMenuDlg()<br />{<br />dlg.DoModal();</p><p>}<br />void CMainFrame::OnMenuTest1()<br />{<br />m_bEnable1=FALSE;<br />m_bEnable2=TRUE;</p><p>}<br />void CMainFrame::OnMenuTest2()<br />{<br />m_bEnable1=TRUE;<br />m_bEnable2=FALSE;</p><p>}<br />void CMainFrame::OnUpdateMenuTest1(CCmdUI* pCmdUI)<br />{<br />//啟用或者禁用菜單<br />pCmdUI->Enable(m_bEnable1);</p><p>}<br />void CMainFrame::OnUpdateMenuTest2(CCmdUI* pCmdUI)<br />{<br />pCmdUI->Enable(m_bEnable2);</p><p>}<br />
游標:
void CMenuView::OnDraw(CDC* pDC)<br />{<br />/*CMenuDoc* pDoc = GetDocument();<br />ASSERT_VALID(pDoc);<br />// TODO: add draw code for native data here*/<br />//////////////////////////////////////////////////////////////////////////<br />/*<br />//擷取客戶游標座標<br />CRect rect;<br />GetClientRect(&rect);<br />//繪製十字游標<br />pDC->MoveTo(0,m_point.y);<br />pDC->LineTo(rect.Width(),m_point.y);<br />pDC->MoveTo(m_point.x,0);<br />pDC->LineTo(m_point.x,rect.Height());<br />//輸出游標座標<br />CString strText=_T("");<br />strText.Format(_T("%d,%d"),m_point.x,m_point.y);<br />pDC->SetBkMode(TRANSPARENT);<br /> pDC->SetTextAlign(TA_RIGHT|TA_BOTTOM);<br />pDC->TextOut(m_point.x,m_point.y,strText);<br />//////////////////////////////////////////////////////////////////////////<br />*/<br />CRect rect;<br />GetClientRect(rect);<br />CRect rect2;<br />rect2.left=rect.left+rect.Width()/4;<br />rect2.right=rect.right-rect.Width()/4;<br />rect2.top=rect.top+rect.Height()/4;<br />rect2.bottom=rect.bottom-rect.Height()/4;<br />//繪製游標的移動範圍<br />pDC->Rectangle(rect2);</p><p>}</p><p>/////////////////////////////////////////////////////////////////////////////<br />// CMenuView printing<br />BOOL CMenuView::OnPreparePrinting(CPrintInfo* pInfo)<br />{<br />// default preparation<br />return DoPreparePrinting(pInfo);<br />}<br />void CMenuView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)<br />{<br />// TODO: add extra initialization before printing<br />}<br />void CMenuView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)<br />{<br />// TODO: add cleanup after printing<br />}<br />/////////////////////////////////////////////////////////////////////////////<br />// CMenuView diagnostics<br />#ifdef _DEBUG<br />void CMenuView::AssertValid() const<br />{<br />CView::AssertValid();<br />}<br />void CMenuView::Dump(CDumpContext& dc) const<br />{<br />CView::Dump(dc);<br />}<br />CMenuDoc* CMenuView::GetDocument() // non-debug version is inline<br />{<br />ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMenuDoc)));<br />return (CMenuDoc*)m_pDocument;<br />}<br />#endif //_DEBUG<br />/////////////////////////////////////////////////////////////////////////////<br />// CMenuView message handlers<br />//void CMenuView::OnMove(int x, int y)<br />//{<br />//CView::OnMove(x, y);</p><p>// TODO: Add your message handler code here</p><p>//}<br />void CMenuView::OnMouseMove(UINT nFlags, CPoint point)<br />{<br />//儲存游標座標<br />m_point=point;<br />//重新整理客戶區<br />Invalidate();</p><p>CView::OnMouseMove(nFlags, point);<br />}<br />void CMenuView::OnLButtonDown(UINT nFlags, CPoint point)<br />{<br />//游標的自由移動<br />ClipCursor(NULL);<br />//載入游標<br />m_hCursor=AfxGetApp()->LoadCursor(IDC_CURSOR);<br />//設定游標<br />CRect rect;<br />GetClientRect(rect);<br />CRect rect2;<br />rect2.left=rect.left+rect.Width()/4;<br />rect2.right=rect.right-rect.Width()/4;<br />rect2.top=rect.top+rect.Height()/4;<br />rect2.bottom=rect.bottom-rect.Height()/4;<br />//映射螢幕座標<br />ClientToScreen(rect2);<br />//限制游標的移動<br />ClipCursor(&rect2);</p><p>CView::OnLButtonDown(nFlags, point);<br />}<br />void CMenuView::OnLButtonUp(UINT nFlags, CPoint point)<br />{<br />//游標的自由移動<br />ClipCursor(NULL);<br />//載入游標<br />m_hCursor=AfxGetApp()->LoadCursor(IDC_CURSOR);<br />//設定游標<br />::SetCursor(m_hCursor);</p><p>CView::OnLButtonUp(nFlags, point);<br />}<br />void CMenuView::OnInitialUpdate()<br />{<br />CView::OnInitialUpdate();<br />//載入游標<br />m_hCursor=AfxGetApp()->LoadCursor(IDC_CURSOR);</p><p>}<br />BOOL CMenuView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)<br />{<br />//設定游標<br />::SetCursor(m_hCursor);<br />return TRUE;<br />//return CView::OnSetCursor(pWnd, nHitTest, message);<br />}<br />