中南大學(xué)數(shù)學(xué)院面向?qū)ο髨蟾娌藛尾僮?doc_第1頁
中南大學(xué)數(shù)學(xué)院面向?qū)ο髨蟾娌藛尾僮?doc_第2頁
中南大學(xué)數(shù)學(xué)院面向?qū)ο髨蟾娌藛尾僮?doc_第3頁
中南大學(xué)數(shù)學(xué)院面向?qū)ο髨蟾娌藛尾僮?doc_第4頁
中南大學(xué)數(shù)學(xué)院面向?qū)ο髨蟾娌藛尾僮?doc_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

中南大學(xué)面向?qū)ο蟪绦蛟O(shè)計上機報告題目: 菜單操作學(xué)生姓名:學(xué)號:專業(yè)班級:指導(dǎo)老師:數(shù)學(xué)科學(xué)與計算技術(shù)學(xué)院2011年11月一、 上機目的、內(nèi)容:學(xué)習(xí)菜單的工作原理,菜單命令消息在MFC框架程序的幾個類中的傳遞順序和處理過程。明白標(biāo)記菜單、缺省菜單的實現(xiàn)原理、圖形菜單的實現(xiàn)及常犯錯誤的分析,快捷彈出菜單的實現(xiàn)方式。最后利用VS2008通過靜態(tài)和動態(tài)兩種方式對菜單進行簡單操作(包括產(chǎn)生新的菜單項、新產(chǎn)生的菜單命令安排處理函數(shù)等等)。二、 上機程序設(shè)計具體內(nèi)容:菜單操作靜態(tài)菜單的創(chuàng)建與操作1.1利用查找ID號或索引對子菜單進行標(biāo)志,程序運行結(jié)果:1.2利用查找ID號或索引對子菜單進行黑體化,程序運行結(jié)果:1.3利用查找ID號或索引在子菜單中創(chuàng)建圖形標(biāo)志,程序運行結(jié)果:但我們遇到如何設(shè)置圖標(biāo)大小的問題,最后通過調(diào)用GetSystemMetrics函數(shù)查看所需圖形標(biāo)志的大小,結(jié)果如下圖:然后重新設(shè)置,得到最后程序,程序運行結(jié)果:1.4利用添加工程組件,實現(xiàn)右鍵彈出菜單功能,但是VS2008里面沒有該功能,所以我們選擇手動添加鼠標(biāo)右鍵彈出菜單的工程組件,程序運行結(jié)果:動態(tài)菜單的創(chuàng)建、刪除與插入操作1.5利用動態(tài)手動添加在菜單欄上添加一個Lim菜單項,程序運行結(jié)果:1.6利用動態(tài)手動添加在菜單欄Lim上添加子菜單項,程序運行結(jié)果:并實現(xiàn)子菜單項a彈出對話框的功能,程序運行結(jié)果:1.7最后我們利用VIEW類中onchar函數(shù)對消息捕獲,再由ID號調(diào)用菜單項,并運用二維數(shù)組CString對我們輸入的信息進行保存和調(diào)用。實現(xiàn)在應(yīng)用程序窗口的菜單欄處創(chuàng)建動態(tài)電話本菜單項的功能(其中主要是實現(xiàn)在窗口處添加姓名和電話號碼,最后保存于電話本,然后點擊電話本,可以顯示所需內(nèi)容),程序運行結(jié)果:三、 上機程序設(shè)計心得:我們通過學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計,發(fā)現(xiàn)在VS2008中添加MFC中消息處理函數(shù)和VC6.0是不一樣的。我們只能通過類視圖,右鍵需要添加處理函數(shù)的類,選擇屬性,在屬性窗口中,單擊“消息”按鈕,然后在消息列表框中,選擇需要添加的消息。而在運用MessageBox時,我們需要用到一種中間類型TEXT對字符進行轉(zhuǎn)換。這些都是我們所遇到的問題,但我們都可以通過查詢MSDN進行解決。四、附錄:(2)源程序主要代碼第一個程序:/ MainFrm.cpp : CMainFrame 類的實現(xiàn)#include stdafx.h#include Menu.h#include MainFrm.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CMainFrameIMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)ON_WM_CREATE()/ON_COMMAND(IDM_TEST, &CMainFrame:OnTest)/ON_COMMAND(IDM_TEST, &CMainFrame:OnTest)ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, &CMainFrame:OnUpdateEditCut)ON_UPDATE_COMMAND_UI(ID_FILE_NEW, &CMainFrame:OnUpdateFileNew)ON_COMMAND(IDM_SHOW, &CMainFrame:OnShow)END_MESSAGE_MAP()static UINT indicators =ID_SEPARATOR, / 狀態(tài)行指示器ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;/ CMainFrame 構(gòu)造/析構(gòu)CMainFrame:CMainFrame()/ TODO: 在此添加成員初始化代碼 /m_bAutoMenuEnable=FALSE;CMainFrame:CMainFrame()int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0(未能創(chuàng)建工具欄n);return -1; / 未能創(chuàng)建if (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)TRACE0(未能創(chuàng)建狀態(tài)欄n);return -1; / 未能創(chuàng)建/ TODO: 如果不需要可停靠工具欄,則刪除這三行m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar); /GetMenu()-GetSubMenu(0)-CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED); /兩種方法進行子菜單項標(biāo)志/GetMenu()-GetSubMenu(0)-CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND | MF_CHECKED); /GetMenu()-GetSubMenu(0)-SetDefaultItem(1,TRUE); /兩種方法進行子菜單項粗體化/GetMenu()-GetSubMenu(0)-SetDefaultItem(ID_FILE_OPEN);/GetMenu()-GetSubMenu(0)-SetDefaultItem(5,TRUE); /*CString str; /CString 對象str.Format(TEXT(x=%d,y=%d),GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK);/Format函數(shù)格式化MessageBox(str);m_bitmap.LoadBitmap(IDB_BITMAP1); GetMenu()-GetSubMenu(0)-SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap,&m_bitmap);*/ /GetMenu()-GetSubMenu(0)-EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);SetMenu(NULL); /去掉菜單欄CMenu menu;menu.LoadMenu(IDR_MAINFRAME);SetMenu(&menu);menu.Detach(); /重構(gòu)菜單欄return 0;BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)if( !CFrameWnd:PreCreateWindow(cs) )return FALSE;/ TODO: 在此處通過修改/ CREATESTRUCT cs 來修改窗口類或樣式return TRUE;/ CMainFrame 診斷#ifdef _DEBUGvoid CMainFrame:AssertValid() constCFrameWnd:AssertValid();void CMainFrame:Dump(CDumpContext& dc) constCFrameWnd:Dump(dc);#endif /_DEBUG/ CMainFrame 消息處理程序/void CMainFrame:OnTest()/ TODO: 在此添加命令處理程序代碼/void CMainFrame:OnUpdateEditCut(CCmdUI *pCmdUI)/ TODO: 在此添加命令更新用戶界面處理程序代碼if(2=pCmdUI-m_nIndex) /if(ID_EDIT_CUT=pCmdUI-m_nID) pCmdUI-Enable();/兩種方法,索引時只能實現(xiàn)菜單欄,不能實現(xiàn)工具欄void CMainFrame:OnUpdateFileNew(CCmdUI *pCmdUI)/ TODO: 在此添加命令更新用戶界面處理程序代碼/ if(ID_FILE_NEW=pCmdUI-m_nID)/ pCmdUI-Enable(false);if(0=pCmdUI-m_nIndex)pCmdUI-Enable(FALSE); / 兩種方法,一個是ID,另一個是索引void CMainFrame:OnShow()/ TODO: 在此添加命令處理程序代碼MessageBox(TEXT(MainFrame Show);/ Menu.cpp : 定義應(yīng)用程序的類行為。#include stdafx.h#include Menu.h#include MainFrm.h#include MenuDoc.h#include MenuView.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CMenuAppBEGIN_MESSAGE_MAP(CMenuApp, CWinApp)ON_COMMAND(ID_APP_ABOUT, &CMenuApp:OnAppAbout)/ 基于文件的標(biāo)準(zhǔn)文檔命令ON_COMMAND(ID_FILE_NEW, &CWinApp:OnFileNew)ON_COMMAND(ID_FILE_OPEN, &CWinApp:OnFileOpen)/ 標(biāo)準(zhǔn)打印設(shè)置命令ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp:OnFilePrintSetup)END_MESSAGE_MAP()/ CMenuApp 構(gòu)造CMenuApp:CMenuApp()/ TODO: 在此處添加構(gòu)造代碼,/ 將所有重要的初始化放置在InitInstance 中/ 唯一的一個CMenuApp 對象CMenuApp theApp;/ CMenuApp 初始化BOOL CMenuApp:InitInstance()/ 如果一個運行在Windows XP 上的應(yīng)用程序清單指定要/ 使用ComCtl32.dll 版本6 或更高版本來啟用可視化方式,/則需要InitCommonControlsEx()。否則,將無法創(chuàng)建窗口。INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);/ 將它設(shè)置為包括所有要在應(yīng)用程序中使用的/ 公共控件類。InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinApp:InitInstance();/ 初始化OLE 庫if (!AfxOleInit()AfxMessageBox(IDP_OLE_INIT_FAILED);return FALSE;AfxEnableControlContainer();/ 標(biāo)準(zhǔn)初始化/ 如果未使用這些功能并希望減小/ 最終可執(zhí)行文件的大小,則應(yīng)移除下列/ 不需要的特定初始化例程/ 更改用于存儲設(shè)置的注冊表項/ TODO: 應(yīng)適當(dāng)修改該字符串,/ 例如修改為公司或組織名SetRegistryKey(_T(應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序);LoadStdProfileSettings(4); / 加載標(biāo)準(zhǔn)INI 文件選項(包括MRU)/ 注冊應(yīng)用程序的文檔模板。文檔模板/ 將用作文檔、框架窗口和視圖之間的連接CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CMenuDoc),RUNTIME_CLASS(CMainFrame), / 主SDI 框架窗口RUNTIME_CLASS(CMenuView);if (!pDocTemplate)return FALSE;AddDocTemplate(pDocTemplate);/ 分析標(biāo)準(zhǔn)外殼命令、DDE、打開文件操作的命令行CCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);/ 調(diào)度在命令行中指定的命令。如果/ 用/RegServer、/Register、/Unregserver 或/Unregister 啟動應(yīng)用程序,則返回FALSE。if (!ProcessShellCommand(cmdInfo)return FALSE;/ 唯一的一個窗口已初始化,因此顯示它并對其進行更新m_pMainWnd-ShowWindow(SW_SHOW);m_pMainWnd-UpdateWindow();/ 僅當(dāng)具有后綴時才調(diào)用DragAcceptFiles/ 在SDI 應(yīng)用程序中,這應(yīng)在ProcessShellCommand 之后發(fā)生return TRUE;/ 用于應(yīng)用程序“關(guān)于”菜單項的CAboutDlg 對話框class CAboutDlg : public CDialogpublic:CAboutDlg();/ 對話框數(shù)據(jù)enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 實現(xiàn)protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()/ 用于運行對話框的應(yīng)用程序命令void CMenuApp:OnAppAbout()CAboutDlg aboutDlg;aboutDlg.DoModal();/ CMenuApp 消息處理程序/ MenuDoc.cpp : CMenuDoc 類的實現(xiàn)#include stdafx.h#include Menu.h#include MenuDoc.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CMenuDocIMPLEMENT_DYNCREATE(CMenuDoc, CDocument)BEGIN_MESSAGE_MAP(CMenuDoc, CDocument)END_MESSAGE_MAP()/ CMenuDoc 構(gòu)造/析構(gòu)CMenuDoc:CMenuDoc()/ TODO: 在此添加一次性構(gòu)造代碼CMenuDoc:CMenuDoc()BOOL CMenuDoc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;/ TODO: 在此添加重新初始化代碼/ (SDI 文檔將重用該文檔)return TRUE;/ CMenuDoc 序列化void CMenuDoc:Serialize(CArchive& ar)if (ar.IsStoring()/ TODO: 在此添加存儲代碼else/ TODO: 在此添加加載代碼/ CMenuDoc 診斷#ifdef _DEBUGvoid CMenuDoc:AssertValid() constCDocument:AssertValid();void CMenuDoc:Dump(CDumpContext& dc) constCDocument:Dump(dc);#endif /_DEBUG/ CMenuDoc 命令/ MenuView.cpp : CMenuView 類的實現(xiàn)#include stdafx.h#include Menu.h#include MenuDoc.h#include MenuView.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CMenuViewIMPLEMENT_DYNCREATE(CMenuView, CView)BEGIN_MESSAGE_MAP(CMenuView, CView)/ 標(biāo)準(zhǔn)打印命令ON_COMMAND(ID_FILE_PRINT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView:OnFilePrintPreview)ON_COMMAND(IDM_TEST, &CMenuView:OnTest)ON_WM_LBUTTONDOWN()ON_COMMAND(IDM_SHOW, &CMenuView:OnShow)END_MESSAGE_MAP()/ CMenuView 構(gòu)造/析構(gòu)CMenuView:CMenuView()/ TODO: 在此處添加構(gòu)造代碼CMenuView:CMenuView()BOOL CMenuView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: 在此處通過修改/ CREATESTRUCT cs 來修改窗口類或樣式return CView:PreCreateWindow(cs);/ CMenuView 繪制void CMenuView:OnDraw(CDC* /*pDC*/)CMenuDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;/ TODO: 在此處為本機數(shù)據(jù)添加繪制代碼/ CMenuView 打印BOOL CMenuView:OnPreparePrinting(CPrintInfo* pInfo)/ 默認準(zhǔn)備return DoPreparePrinting(pInfo);void CMenuView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 添加額外的打印前進行的初始化過程void CMenuView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 添加打印后進行的清理過程/ CMenuView 診斷#ifdef _DEBUGvoid CMenuView:AssertValid() constCView:AssertValid();void CMenuView:Dump(CDumpContext& dc) constCView:Dump(dc);CMenuDoc* CMenuView:GetDocument() const / 非調(diào)試版本是內(nèi)聯(lián)的ASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMenuDoc);return (CMenuDoc*)m_pDocument;#endif /_DEBUG/ CMenuView 消息處理程序void CMenuView:OnTest()/ TODO: 在此添加命令處理程序代碼void CMenuView:OnLButtonDown(UINT nFlags, CPoint point)/ TODO: 在此添加消息處理程序代碼和/或調(diào)用默認值CMenu menu;menu.LoadMenu(IDR_MENU1);CMenu *pPopup=menu.GetSubMenu(0);ClientToScreen(&point);pPopup-TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,GetParent();/窗口屬于父窗口 CView:OnLButtonDown(nFlags, point);void CMenuView:OnShow()/ TODO: 在此添加命令處理程序代碼MessageBox(TEXT(View Show!);第二個程序:/ MainFrm.cpp : CMainFrame 類的實現(xiàn)#include stdafx.h#include Menu2.h#include MainFrm.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CMainFrameIMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)ON_WM_CREATE()ON_COMMAND(IDM_a,Ona)ON_COMMAND(ID_EDIT_CUT, &CMainFrame:OnEditCut)END_MESSAGE_MAP()static UINT indicators =ID_SEPARATOR, / 狀態(tài)行指示器ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;/ CMainFrame 構(gòu)造/析構(gòu)CMainFrame:CMainFrame()/ TODO: 在此添加成員初始化代碼CMainFrame:CMainFrame()int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0(未能創(chuàng)建工具欄n);return -1; / 未能創(chuàng)建if (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)TRACE0(未能創(chuàng)建狀態(tài)欄n);return -1; / 未能創(chuàng)建/ TODO: 如果不需要可停靠工具欄,則刪除這三行m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);/*CMenu menu;menu.CreatePopupMenu();/GetMenu()-AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,TEXT(Lim);menu.Detach();/ GetMenu()-InsertMenu(2,MF_BYPOSITION | MF_POPUP,(UINT)menu.m_hMenu,TEXT(Lim);menu.AppendMenu(MF_STRING,IDM_a,TEXT(a);menu.AppendMenu(MF_STRING,112,TEXT(b);menu.AppendMenu(MF_STRING,113,TEXT(c);menu.Detach();/GetMenu()-GetSubMenu(0)-AppendMenu(MF_STRING,114,TEXT(Welcome);/增加子菜單GetMenu()-GetSubMenu(0)-InsertMenu(ID_FILE_OPEN,MF_BYCOMMAND | MF_STRING,115,TEXT(維新);GetMenu()-DeleteMenu(1,MF_BYPOSITION);/刪除編輯子菜單GetMenu()-GetSubMenu(0)-DeleteMenu(2,MF_BYPOSITION);*/return 0;BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)if( !CFrameWnd:PreCreateWindow(cs) )return FALSE;/ TODO: 在此處通過修改/ CREATESTRUCT cs 來修改窗口類或樣式return TRUE;/ CMainFrame 診斷#ifdef _DEBUGvoid CMainFrame:AssertValid() constCFrameWnd:AssertValid();void CMainFrame:Dump(CDumpContext& dc) constCFrameWnd:Dump(dc);#endif /_DEBUGvoid CMainFrame:Ona()MessageBox(TEXT(Hello!);/ CMainFrame 消息處理程序void CMainFrame:OnEditCut()/ TODO: 在此添加命令處理程序代碼/ Menu2.cpp : 定義應(yīng)用程序的類行為。#include stdafx.h#include Menu2.h#include MainFrm.h#include Menu2Doc.h#include Menu2View.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CMenu2AppBEGIN_MESSAGE_MAP(CMenu2App, CWinApp)ON_COMMAND(ID_APP_ABOUT, &CMenu2App:OnAppAbout)/ 基于文件的標(biāo)準(zhǔn)文檔命令ON_COMMAND(ID_FILE_NEW, &CWinApp:OnFileNew)ON_COMMAND(ID_FILE_OPEN, &CWinApp:OnFileOpen)/ 標(biāo)準(zhǔn)打印設(shè)置命令ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp:OnFilePrintSetup)END_MESSAGE_MAP()/ CMenu2App 構(gòu)造CMenu2App:CMenu2App()/ TODO: 在此處添加構(gòu)造代碼,/ 將所有重要的初始化放置在InitInstance 中/ 唯一的一個CMenu2App 對象CMenu2App theApp;/ CMenu2App 初始化BOOL CMenu2App:InitInstance()/ 如果一個運行在Windows XP 上的應(yīng)用程序清單指定要/ 使用ComCtl32.dll 版本6 或更高版本來啟用可視化方式,/則需要InitCommonControlsEx()。否則,將無法創(chuàng)建窗口。INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);/ 將它設(shè)置為包括所有要在應(yīng)用程序中使用的/ 公共控件類。InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinApp:InitInstance();/ 初始化OLE 庫if (!AfxOleInit()AfxMessageBox(IDP_OLE_INIT_FAILED);return FALSE;AfxEnableControlContainer();/ 標(biāo)準(zhǔn)初始化/ 如果未使用這些功能并希望減小/ 最終可執(zhí)行文件的大小,則應(yīng)移除下列/ 不需要的特定初始化例程/ 更改用于存儲設(shè)置的注冊表項/ TODO: 應(yīng)適當(dāng)修改該字符串,/ 例如修改為公司或組織名SetRegistryKey(_T(應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序);LoadStdProfileSettings(4); / 加載標(biāo)準(zhǔn)INI 文件選項(包括MRU)/ 注冊應(yīng)用程序的文檔模板。文檔模板/ 將用作文檔、框架窗口和視圖之間的連接CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CMenu2Doc),RUNTIME_CLASS(CMainFrame), / 主SDI 框架窗口RUNTIME_CLASS(CMenu2View);if (!pDocTemplate)return FALSE;AddDocTemplate(pDocTemplate);/ 分析標(biāo)準(zhǔn)外殼命令、DDE、打開文件操作的命令行CCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);/ 調(diào)度在命令行中指定的命令。如果/ 用/RegServer、/Register、/Unregserver 或/Unregister 啟動應(yīng)用程序,則返回FALSE。if (!ProcessShellCommand(cmdInfo)return FALSE;/ 唯一的一個窗口已初始化,因此顯示它并對其進行更新m_pMainWnd-ShowWindow(SW_SHOW);m_pMainWnd-UpdateWindow();/ 僅當(dāng)具有后綴時才調(diào)用DragAcceptFiles/ 在SDI 應(yīng)用程序中,這應(yīng)在ProcessShellCommand 之后發(fā)生return TRUE;/ 用于應(yīng)用程序“關(guān)于”菜單項的CAboutDlg 對話框class CAboutDlg : public CDialogpublic:CAboutDlg();/ 對話框數(shù)據(jù)enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 實現(xiàn)protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()/ 用于運行對話框的應(yīng)用程序命令void CMenu2App:OnAppAbout()CAboutDlg aboutDlg;aboutDlg.DoModal();/ CMenu2App 消息處理程序/ Menu2Doc.cpp : CMenu2Doc 類的實現(xiàn)#include stdafx.h#include Menu2.h#include Menu2Doc.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CMenu2DocIMPLEMENT_DYNCREATE(CMenu2Doc, CDocument)BEGIN_MESSAGE_MAP(CMenu2Doc, CDocument)END_MESSAGE_MAP()/ CMenu2Doc 構(gòu)造/析構(gòu)CMenu2Doc:CMenu2Doc()/ TODO: 在此添加一次性構(gòu)造代碼CMenu2Doc:CMenu2Doc()BOOL CMenu2Doc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;/ TODO: 在此添加重新初始化代碼/ (SDI 文檔將重用該文檔)return TRUE;/ CMenu2Doc 序列化void CMenu2Doc:Serialize(CArchive& ar)if (ar.IsStoring()/ TODO: 在此添加存儲代碼else/ TODO: 在此添加加載代碼/ CMenu2Doc 診斷#ifdef _DEBUGvoid CMenu2Doc:AssertValid() constCDocument:AssertValid();void CMenu2Doc:Dump(CDumpContext& dc) constCDocument:Dump(dc);#endif /_DEBUG/ CMenu2Doc 命令/ Menu2View.cpp : CMenu2View 類的實現(xiàn)#include stdafx.h#include Menu2.h#include Menu2Doc.h#include Menu2View.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CMenu2ViewIMPLEMENT_DYNCREATE(CMenu2View, CView)BEGIN_MESSAGE_MAP(CMenu2View, CView)/ 標(biāo)準(zhǔn)打印命令ON_COMMAND(ID_FILE_PRINT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView:OnFilePrintPreview)ON_WM_CHAR()ON_COMMAND(IDM_PHONE1, &CMenu2View:OnPhone1)ON_COMMAND(IDM_PHONE2, &CMenu2View:OnPhone2)ON_COMMAND(IDM_PHONE3, &CMenu2View:OnPhone3)END_MESSAGE_MAP()/ CMenu2View 構(gòu)造/析構(gòu)CMenu2View:CMenu2View(): m_nlndex(0), m_strLine(_T()/ TODO: 在此處添加構(gòu)造代碼 m_nlndex=-1;CMenu2View:CMenu2View()BOOL CMenu2View:PreCreateWindow(CREATESTRUCT& cs)/ T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論