中南大学数学院面向对象报告 菜单操作

上传人:第*** 文档编号:35821894 上传时间:2018-03-21 格式:DOC 页数:23 大小:621.50KB
返回 下载 相关 举报
中南大学数学院面向对象报告  菜单操作_第1页
第1页 / 共23页
中南大学数学院面向对象报告  菜单操作_第2页
第2页 / 共23页
中南大学数学院面向对象报告  菜单操作_第3页
第3页 / 共23页
中南大学数学院面向对象报告  菜单操作_第4页
第4页 / 共23页
中南大学数学院面向对象报告  菜单操作_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《中南大学数学院面向对象报告 菜单操作》由会员分享,可在线阅读,更多相关《中南大学数学院面向对象报告 菜单操作(23页珍藏版)》请在金锄头文库上搜索。

1、中南大学中南大学面向对象程序设计面向对象程序设计上机报告上机报告题目: 菜单操作学生姓名:学号:专业班级:指导老师:数学科学与计算技术学院数学科学与计算技术学院20112011 年年 1111 月月一、一、 上机目的、内容:上机目的、内容: 学习菜单的工作原理,菜单命令消息在 MFC 框架程序的几个类中的传递顺 序和处理过程。明白标记菜单、缺省菜单的实现原理、图形菜单的实现及常犯 错误的分析,快捷弹出菜单的实现方式。最后利用 VS2008 通过静态和动态两种 方式对菜单进行简单操作(包括产生新的菜单项、新产生的菜单命令安排处理 函数等等) 。二、二、 上机程序设计具体内容:上机程序设计具体内容

2、:菜单操作菜单操作静态菜单的创建与操作静态菜单的创建与操作 1.11.1 利用查找 ID 号或索引对子菜单进行标志,程序运行结果:1.2 利用查找 ID 号或索引对子菜单进行黑体化,程序运行结果:1.31.3 利用查找 ID 号或索引在子菜单中创建图形标志,程序运行结果:但我们遇到如何设置图标大小的问题,最后通过调用 GetSystemMetrics 函数查 看所需图形标志的大小,结果如下图:然后重新设置,得到最后程序,程序运行结果:1.41.4 利用添加工程组件,实现右键弹出菜单功能,但是 VS2008 里面没有该功能, 所以我们选择手动添加鼠标右键弹出菜单的工程组件,程序运行结果:动态菜单

3、的创建、删除与插入操作动态菜单的创建、删除与插入操作 1.51.5 利用动态手动添加在菜单栏上添加一个 Lim 菜单项,程序运行结果:1.61.6 利用动态手动添加在菜单栏 Lim 上添加子菜单项,程序运行结果:并实现子菜单项 a 弹出对话框的功能,程序运行结果:1.71.7 最后我们利用 VIEW 类中 onchar 函数对消息捕获,再由 ID 号调用菜单项, 并运用二维数组 CString 对我们输入的信息进行保存和调用。实现在应用程序 窗口的菜单栏处创建动态电话本菜单项的功能(其中主要是实现在窗口处添加姓名和电话号码,最后保存于电话本,然后点击电话本,可以显示所需内容) , 程序运行结果

4、:三、三、 上机程序设计心得:上机程序设计心得:我们通过学习面向对象程序设计,发现在 VS2008 中添加 MFC 中消息处理函数和 VC6.0 是不一样的。我们只能通过类视图,右键需要添加处理函数的类,选择属性,在属性窗口中,单击“消息”按钮,然后在消息列表框中,选择需要添加的消息。而在运用 MessageBox 时,我们需要用到一种中间类型 TEXT 对字符进行转换。这些都是我们所遇到的问题,但我们都可以通过查询 MSDN 进行解决。四、附录:四、附录: (2 2)源程序主要代码)源程序主要代码第一个程序:第一个程序:/ MainFrm.cppMainFrm.cpp : : CMainFr

5、ameCMainFrame 类的实现类的实现#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 构造/析构CMainFrame:CMainFrame()/ TODO: 在此添

6、加成员初始化代码/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_D

7、YNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0(“未能创建工具栏n“);return -1; / 未能创建if (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)TRACE0(“未能创建状态栏n“);return -1; / 未能创建/ TODO: 如果不需要可停靠工具栏,则删除这三行m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);Enab

8、leDocking(CBRS_ALIGN_ANY);DockControlBar(/GetMenu()-GetSubMenu(0)-CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED); /两种方法进行子菜单项标志/GetMenu()-GetSubMenu(0)-CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND | MF_CHECKED);/GetMenu()-GetSubMenu(0)-SetDefaultItem(1,TRUE); /两种方法进行子菜单项粗体化/GetMenu()-GetSubMenu(0)-SetDefault

9、Item(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函数格式化MessageBox(str);m_bitmap.LoadBitmap(IDB_BITMAP1);GetMenu()-GetSubMenu(0)-SetMenuItemBitmaps(0,MF_BYP

10、OSITION,*/GetMenu()-GetSubMenu(0)-EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);SetMenu(NULL); /去掉菜单栏CMenu menu;menu.LoadMenu(IDR_MAINFRAME);SetMenu(menu.Detach(); /重构菜单栏return 0;BOOL CMainFrame:PreCreateWindow(CREATESTRUCT/ TODO: 在此处通过修改/ CREATESTRUCT cs 来修改窗口类或样式return TRUE;/ CMainFram

11、e 诊断#ifdef _DEBUGvoid CMainFrame:AssertValid() constCFrameWnd:AssertValid();void CMainFrame:Dump(CDumpContext#endif /_DEBUG/ CMainFrame 消息处理程序/void CMainFrame:OnTest()/ TODO: 在此添加命令处理程序代码/void CMainFrame:OnUpdateEditCut(CCmdUI *pCmdUI)/ TODO: 在此添加命令更新用户界面处理程序代码if(2=pCmdUI-m_nIndex)/if(ID_EDIT_CUT=pC

12、mdUI-m_nID)pCmdUI-Enable();/两种方法,索引时只能实现菜单栏,不能实现工具栏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(“

13、MainFrame Show“);/ Menu.cppMenu.cpp : : 定义应用程序的类行为。定义应用程序的类行为。#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 初始化BOOL CMenuApp:In

14、itInstance()/ 如果一个运行在Windows XP 上的应用程序清单指定要/ 使用ComCtl32.dll 版本6 或更高版本来启用可视化方式,/则需要InitCommonControlsEx()。否则,将无法创建窗口。INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);/ 将它设置为包括所有要在应用程序中使用的/ 公共控件类。InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(CWinApp:InitInstance();/ 初始化OL

15、E 库if (!AfxOleInit()AfxMessageBox(IDP_OLE_INIT_FAILED);return FALSE;AfxEnableControlContainer();/ 标准初始化/ 如果未使用这些功能并希望减小/ 最终可执行文件的大小,则应移除下列/ 不需要的特定初始化例程/ 更改用于存储设置的注册表项/ TODO: 应适当修改该字符串,/ 例如修改为公司或组织名SetRegistryKey(_T(“应用程序向导生成的本地应用程序“);LoadStdProfileSettings(4); / 加载标准INI 文件选项(包括MRU)/ 注册应用程序的文档模板。文档模板

16、/ 将用作文档、框架窗口和视图之间的连接CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CMenuDoc),RUNTIME_CLASS(CMainFrame), / 主SDI 框架窗口RUNTIME_CLASS(CMenuView);if (!pDocTemplate)return FALSE;AddDocTemplate(pDocTemplate);/ 分析标准外壳命令、DDE、打开文件操作的命令行CCommandLineInfo cmdInfo;ParseCommandLine(cm

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号