第一篇:第1章MFC概述 1
第1章 MFC概述................错误!未定义书签。
1.1 MFC是一个编程框架..........错误!未定义书签。
1.1.1 封装..............错误!未定义书签。
1.1.2 继承..............错误!未定义书签。
1.1.3 虚拟函数和动态约束.......错误!未定义书签。
1.1.4 MFC的宏观框架体系......错误!未定义书签。
1.2 MDI应用程序的构成...........错误!未定义书签。
1.2.1 构成应用程序的对象.......错误!未定义书签。
1.2.2 构成应用程序的对象之间的关系.错误!未定义书签。
1.2.3 构成应用程序的文件.......错误!未定义书签。
第2章 MFC和Win32...............错误!未定义书签。
2.1 MFC Object和Windows Object的关系...错误!未定义书签。
2.2 Windows Object..............错误!未定义书签。
2.2.1 Windows的注册........错误!未定义书签。
2.2.2 MFC窗口类CWnd...........错误!未定义书签。
2.2.3 在MFC下创建一个窗口对象......错误!未定义书签。
2.2.4 MFC窗口的使用.......错误!未定义书签。
2.2.5 在MFC下窗口的销毁...........错误!未定义书签。
2.3 设备描述表.............错误!未定义书签。
2.3.1 设备描述表概述........错误!未定义书签。
2.3.2 设备描述表在MFC中的实现......错误!未定义书签。
2.3.3 MFC设备描述表类的使用.....错误!未定义书签。
2.4 GDI对象..........错误!未定义书签。
第3章 CObject类...............错误!未定义书签。
3.1 CObject的结构..............错误!未定义书签。
3.2 CObject类的特性..........错误!未定义书签。
3.3 实现CObject特性的机制..........错误!未定义书签。
3.3.1 DECLARE_DYNAMIC等宏的定义错误!未定义书签。
3.3.2 CruntimeClass类的结构与功能.....错误!未定义书签。
3.3.3 动态类信息、动态创建的原理.....错误!未定义书签。
3.3.4 序列化的机制............错误!未定义书签。
第4章 消息映射的实现.............错误!未定义书签。
4.1 Windows消息概述........错误!未定义书签。
4.1.1 消息的分类.........错误!未定义书签。
4.1.2 消息结构和消息处理.......错误!未定义书签。
4.2 消息映射的定义和实现.......错误!未定义书签。
4.2.1 MFC处理的三类消息......错误!未定义书签。
4.2.2 MFC消息映射的实现方法.....错误!未定义书签。
4.2.3 在声明与实现的内部.......错误!未定义书签。
4.2.3.1 消息映射声明的解释..........错误!未定义书签。
4.2.3.2 消息映射实现的解释..........错误!未定义书签。
4.2.4 消息映射宏的种类...........错误!未定义书签。
4.3 CcmdTarget类................错误!未定义书签。
4.4 MFC窗口过程...............错误!未定义书签。
4.4.1 MFC窗口过程的指定......错误!未定义书签。
4.4.2 对Windows消息的接收和处理...错误!未定义书签。
4.4.2.1 从窗口过程到消息映射......错误!未定义书签。
4.4.2.2 Windows消息的查找和匹配错误!未定义书签。
4.4.2.3 Windows消息处理函数的调用错误!未定义书签。
4.4.2.4 消息映射机制完成虚拟函数功能的原理错误!未定义书签。
4.4.3 对命令消息的接收和处理......错误!未定义书签。
4.4.3.1 MFC标准命令消息的发送.错误!未定义书签。
4.4.3.2 命令消息的派发和消息的多次处理错误!未定义书签。
4.4.3.3 一些消息处理类的OnCmdMsg的实现错误!未定义书签。
4.4.3.4 一些消息处理类的OnCommand的实现错误!未定义书签。
4.4.4 对控制通知消息的接收和处理.....错误!未定义书签。
4.4.4.1 WM_COMMAND控制通知消息的处理错误!未定义书签。
4.4.4.2 WM_NOTIFY消息及其处理:错误!未定义书签。
4.4.4.3 消息反射.........错误!未定义书签。
4.4.5 对更新命令的接收和处理......错误!未定义书签。
4.4.5.1 实现方法.........错误!未定义书签。
4.4.5.2 状态更新命令消息.......错误!未定义书签。
4.4.5.3 类CCmdUI.....错误!未定义书签。
4.4.5.4 自动更新用户接口对象状态的机制错误!未定义书签。
4.5 消息的预处理................错误!未定义书签。
4.6 MFC消息映射的回顾..........错误!未定义书签。
第5章 MFC对象的创建...........错误!未定义书签。
5.1 MFC对象的关系...........错误!未定义书签。
5.1.1 创建关系.............错误!未定义书签。
5.1.2 交互作用关系............错误!未定义书签。
5.2 MFC提供的接口...........错误!未定义书签。
5.2.1 虚拟函数接口............错误!未定义书签。
5.2.2 消息映射方法和标准命令消息.....错误!未定义书签。
5.3 MFC对象的创建过程..........错误!未定义书签。
5.3.1 应用程序中典型对象的结构.........错误!未定义书签。
5.3.1.1 应用程序类的成员变量......错误!未定义书签。
5.3.1.2 CDocument的成员变量......错误!未定义书签。
5.3.1.3 文档模板的属性...........错误!未定义书签。
5.3.2 WinMain入口函数...........错误!未定义书签。
5.3.2.1 WinMain流程........错误!未定义书签。
5.3.2.2 MFC空闲处理.......错误!未定义书签。
5.3.3 SDI应用程序的对象创建.......错误!未定义书签。
5.3.3.1 文档模板的创建...........错误!未定义书签。
5.3.3.2 文件的创建或者打开..........错误!未定义书签。
5.3.3.3 SDI边框窗口的创建...........错误!未定义书签。
5.3.3.4 视的创建.........错误!未定义书签。
5.3.3.5 窗口初始化.....错误!未定义书签。
5.3.3.6 视的初始化.....错误!未定义书签。
5.3.3.7 激活边框窗口(处理WM_ACTIVE)错误!未定义书签。
5.3.3.8 SDI流程的回顾.....错误!未定义书签。
5.3.4 MDI程序的对象创建.......错误!未定义书签。
5.3.4.1 有别于SDI的主窗口加载过程错误!未定义书签。
5.3.4.2 MDI子窗口、视、文档的创建错误!未定义书签。
5.3.4.3 MDI子窗口的初始化和窗口的激活错误!未定义书签。
第6章 应用程序的退出.............错误!未定义书签。
6.1 边框窗口对WM_CLOSE的处理.....错误!未定义书签。
6.2 窗口的销毁过程............错误!未定义书签。
6.2.1 DestroyWindow..........错误!未定义书签。
6.2.2 处理WM_DESTROY消息...........错误!未定义书签。
6.2.3 处理WM_NCDESTROY消息......错误!未定义书签。
6.3 SDI窗口、MDI主、子窗口的关闭.........错误!未定义书签。
第7章 MFC的DLL...........错误!未定义书签。
7.1 DLL的背景知识............错误!未定义书签。
7.2 调用约定..........错误!未定义书签。
7.2.1 MFC的DLL应用程序的类型.......错误!未定义书签。
7.3 DLL的几点说明............错误!未定义书签。
7.4 输出函数的方法............错误!未定义书签。
第8章 MFC的进程和线程..............错误!未定义书签。
8.1 Win32的进程和线程概念...........错误!未定义书签。
8.2 Win32的进程处理简介........错误!未定义书签。
8.2.1 进程的创建.........错误!未定义书签。
8.2.2 进程的终止.........错误!未定义书签。
8.3 Win32的线程..........错误!未定义书签。
8.3.1 线程的创建.........错误!未定义书签。
8.3.2 线程的终止.........错误!未定义书签。
8.3.3 线程局部存储............错误!未定义书签。
8.4 线程同步..........错误!未定义书签。
8.4.1 同步对象.............错误!未定义书签。
8.4.2 等待函数.............错误!未定义书签。
8.5 MFC的线程处理...........错误!未定义书签。
8.5.1 创建用户界面线程...........错误!未定义书签。
8.5.2 创建工作者线程........错误!未定义书签。
8.5.3 AfxBeginThread..........错误!未定义书签。
8.5.4 CreateThread和_AfxThreadEntry...错误!未定义书签。
8.5.5 线程的结束.........错误!未定义书签。
8.5.6 实现线程的消息循环.......错误!未定义书签。
第9章 MFC的状态............错误!未定义书签。
9.1 模块状态..........错误!未定义书签。
9.2 模块、进程和线程状态的数据结构........错误!未定义书签。
9.2.1 层次关系.............错误!未定义书签。
9.2.2 CNoTrackObject类...........错误!未定义书签。
9.2.3 AFX_MODULE_STATE类...........错误!未定义书签。
9.2.4 _AFX_BASE_MODULE_STATE..错误!未定义书签。
9.2.5 _AFX_THREAD_STATE........错误!未定义书签。
9.2.6 AFX_MODULE_THREAD_STATE错误!未定义书签。
9.3 线程局部存储机制和状态的实现.....错误!未定义书签。
9.3.1 CThreadSlotData和_afxThreadData错误!未定义书签。
9.3.1.1 CThreadSlotData的定义......错误!未定义书签。
9.3.1.2 CThreadSlotData的一些数据成员错误!未定义书签。
9.3.1.3 _afxThreadData.......错误!未定义书签。
9.3.2 线程状态_afxThreadState.......错误!未定义书签。
9.3.3 进程模块状态afxBaseModuleState错误!未定义书签。
9.3.4 状态对象的创建........错误!未定义书签。
9.3.4.1 状态对象的创建过程..........错误!未定义书签。
9.3.4.2 创建过程所涉及的几个重要函数的算法错误!未定义书签。
9.4 管理状态..........错误!未定义书签。
9.4.1 模块状态切换............错误!未定义书签。
9.4.2 扩展DLL的模块状态.....错误!未定义书签。
9.4.2.1 _AFX_EXTENSION_MODULE错误!未定义书签。
9.4.2.2 扩展DLL的初始化函数....错误!未定义书签。
9.4.3 核心MFC DLL.........错误!未定义书签。
9.4.4 动态链接的规则DLL的模块状态的实现错误!未定义书签。
9.5 状态信息的作用............错误!未定义书签。
9.5.1.1 模块信息的保存和管理......错误!未定义书签。
9.5.2 MFC资源、运行类信息的查找....错误!未定义书签。
9.5.3 模块信息的显示........错误!未定义书签。
9.5.4 模块-线程状态的作用.....错误!未定义书签。
9.5.4.1 只能访问本线程MFC对象的原因错误!未定义书签。
9.5.4.2 实现MFC对象和Windows对象之间的映射错误!未定义书签。
9.5.4.3 临时对象的处理...........错误!未定义书签。
9.6 状态对象的删除和销毁.......错误!未定义书签。
第10章 内存分配方式和调试机制.........错误!未定义书签。
10.1 M内存分配...........错误!未定义书签。
10.1.1 内存分配函数..........错误!未定义书签。
10.1.2 C++的new 和 delete操作符......错误!未定义书签。
10.2 调试手段...............错误!未定义书签。
10.2.1 C运行库提供和支持的调试功能 错误!未定义书签。
10.2.2 MFC提供的调试手段...........错误!未定义书签。
10.2.3 内存诊断...........错误!未定义书签。
第11章 MFC下的文件类.........错误!未定义书签。
11.1 文件操作的方法..........错误!未定义书签。11.2 MFC的文件类.............错误!未定义书签。
11.2.1 CFile的结构.............错误!未定义书签。
11.2.1.1 CFile定义的枚举类型.......错误!未定义书签。
11.2.1.2 CFile的其他一些成员变量 错误!未定义书签。
11.2.1.3 CFile的成员函数........错误!未定义书签。
11.2.2 CFile的部分实现.....错误!未定义书签。11.2.3 CFile的派生类.........错误!未定义书签。
第12章 对话框和对话框类CDialog......错误!未定义书签。
12.1 模式和无模式对话框.........错误!未定义书签。
12.1.1 模式对话框..............错误!未定义书签。12.1.2 无模式对话框..........错误!未定义书签。12.2 对话框的MFC实现..........错误!未定义书签。
12.2.1 CDialog的设计和实现..........错误!未定义书签。
12.2.1.1 CDialog的成员变量..........错误!未定义书签。
12.2.1.2 CDialog的成员函数:......错误!未定义书签。
12.2.2 MFC模式对话框的实现.......错误!未定义书签。
12.2.2.1 MFC对话框过程........错误!未定义书签。
12.2.2.2 模式对话框窗口过程........错误!未定义书签。
12.2.2.3 使用原对话框窗口过程作消息的缺省处理错误!未定义书签。12.2.2.4 Dialog命令消息和控制通知消息的处理错误!未定义书签。12.2.2.5 消息预处理和Dialog消息 错误!未定义书签。
12.2.2.6 模式对话框的消息循环....错误!未定义书签。
12.2.3 对话框的数据交换.........错误!未定义书签。
12.2.3.1 数据交换的方法.........错误!未定义书签。
12.2.3.2 CDataExchange.....错误!未定义书签。
12.2.3.3 数据交换和验证函数........错误!未定义书签。
12.2.3.4 UpdateData函数..........错误!未定义书签。
12.3 无模式对话框..............错误!未定义书签。
12.3.1 CScrollView..............错误!未定义书签。12.3.2 CFormView........错误!未定义书签。
12.3.2.1 CFormView的创建.....错误!未定义书签。
12.3.2.2 CFormView的消息预处理 错误!未定义书签。
12.3.2.3 CFormView的输入焦点....错误!未定义书签。
第13章 MFC工具条和状态栏........错误!未定义书签。
13.1 Windows控制窗口.............错误!未定义书签。13.2 MFC的工具条和状态栏类.......错误!未定义书签。
13.2.1 控制窗口的创建......错误!未定义书签。
13.2.1.1 PreCreateWindow........错误!未定义书签。
13.2.1.2 控制条的窗口创建.....错误!未定义书签。
13.2.2 控制条的销毁..........错误!未定义书签。13.2.3 处理控制条的位置.........错误!未定义书签。
13.2.3.1 计算控制条位置的过程和算法错误!未定义书签。
13.2.3.2 CFrameWnd的虚拟函数RecalcLayout错误!未定义书签。13.2.3.3 CWnd的成员函数RepositionBars错误!未定义书签。13.2.4 工具条、状态栏和边框窗口的接口错误!未定义书签。
13.2.4.1 应用程序在状态栏中显示信息错误!未定义书签。13.2.4.2 状态栏显示菜单项的提示信息错误!未定义书签。13.2.4.3 控制条的消息分发处理....错误!未定义书签。
13.2.4.4 Tooltip............错误!未定义书签。
13.2.4.5 禁止和允许..........错误!未定义书签。
13.2.4.6 显示或者隐藏工具栏和状态栏错误!未定义书签。13.2.5 泊位和漂浮..............错误!未定义书签。
第14章 SOCKET类的设计和实现........错误!未定义书签。
14.1 WinSock基本知识..............错误!未定义书签。
14.1.1 WinSock API............错误!未定义书签。14.1.2 Socket的使用...........错误!未定义书签。14.2 MFC对WinSockt API的封装.........错误!未定义书签。
14.2.1 CAsyncSocket...........错误!未定义书签。14.2.2 socket对象的创建和捆绑......错误!未定义书签。14.2.3 异步网络事件的处理.....错误!未定义书签。14.3 CSocket...........错误!未定义书签。14.4 CSocketFile............错误!未定义书签。
第二篇:MFC实践总结
mfc编程实验总结报告 知识总结+个人心得 2011年暑期mfc编程实验报告 mfc编程实验个人总结报告
一、mfc类、函数等知识小结:
1、settimer(1, m_intlevel, null);在mfc程序中settimer被封装在cwnd类中,调用就不用指定窗口句柄了于是settimer函数的原型变为: uint settimer(uint nidevent,uint nelapse,void(callback export *lpfntimer)(hwnd,uint ,yint ,dword))当使用settimer函数的时候,就会生成一个计时器。函数中nidevent指的是计时器的标识,也就是名字。nelapse指的是时间间隔,也就是每隔多长时间触发一次事件。第三个参数是一个回调函数,在这个函数里,放入你想要做的事情的代码,你可以将它设定为null,也就是使用系统默认的回调函数,系统默认认的是ontime函数。这个函数怎么生成的呢?你需要在需要计时器的类的生成ontime函数:在classwizard里,选择需要计时器的类,添加wm_time消息映射,就自动生成ontime函数了。然后在函数里添加代码,让代码实现功能。每隔一段时间就会自动执行一次。例: settimer(1,1000,null);1:计时器的名称;
1000:时间间隔,单位是毫秒; null:使用ontime函数。
当不需要计时器的时候调用killtimer(nidevent);例如:killtimer(1);killtimer(1);
2、typedef struct{};(1)struct{ int x;int y;}test1;好,定义了 结构 test1,test1.x 和 test1.y 可以在语句里用了。(2)struct test {int x;int y;}test1;定义了结构 test1,test1.x 和 test1.y 可以在语句里用了。
与(1)比,省写 了 test(3)typedef struct test {int x;int y;}text1,text2;此处时说了这种结构体(类型)别名 叫 text1 或叫 text2,而不是定义了结构体变量.真正在语句里用,还要写: text1 test1;//定义结构体变量
然后好用 test1.x test1.y 或写 text2 test1;//定义结构体变量
然后好用 test1.x test1.y
3、invalidate();//让客户区无效,即时重新绘制客户区 void invalidate(bool berase = true);该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时windows会在应用程序的消息队列中放置wm_paint消息。mfc为窗口类提供了wm_paint的消息处理函数onpaint,onpaint负责重绘窗口。视图类有一些例外,在视图类的onpaint函数中调用了ondraw函数,实际的重绘工作由ondraw来完成。参数berase为true时,重绘区域内的背景将被擦除,否则,背景将保持不变。
4、cdc::rectangle(左上x,左上y,右下x,右下y);使用该函数画一个矩形,可以用当前的画笔画矩形轮廓,用当前画刷进行填充。
函数原型:bool rectangle(hdc hdc, int nleftrect, int ntoprect, int nrightrect, int nbottomrect);
hdc:设备环境句柄。
nleftrect:指定矩形左上角的逻辑x坐标。ntoprect:指定矩形左上角的逻辑y坐标。nrightrect:指定矩形右下角的逻辑x坐标。nbottomrect:指定矩形右下角的逻辑y坐标。
5、cbrush:: cbrush//画刷类 eg:cbrush brushstick(rgb(127, 127, 127));四种构造函数: cbrush();cbrush(colorref crcolor);cbrush(int nindex, colorref crcolor);cbrush(cbitmap* pbitmap);参数说明: crcolor指定画刷的前景色(rgb方式)。如果画刷是阴影线型的,则指定阴影线的颜色。nindex指定画刷阴影线采用的风格,取值如下: hs_bdiagonal45度的向下影线(从左到右)hs_cross水平和垂直方向以网格线作出阴影 hs_diagcross 45度的网格线阴影 hs_fdiagonal 45度的向上阴影线(从左到右)
hs_horizontal 水平的阴影线 hs_vertical 垂直的阴影线 pbitmap指向cbitmap对象的指针,该对象指定了画刷要绘制的位
图。
构造函数说明:
6、messagebox(game over!);messagebox(null,text,title,button);参数title:string类型,指定消息对话框的标题。text:指定消息对话框中显示的消息,该参数可以是数值数据类型、字符串或boolean值。icon:icon枚举类型,可选项,指定要在该对话框左侧显示的图标。button:button枚举类型,可选项,指定显示在该对话框底部的按钮。default:数值型,可选项,指定作为缺省按钮的按钮编号,按钮编号自左向右依次计数,缺省值为1,如果该参数指定的编号超过了显示的按钮个数,那么messagebox()函数将使用缺省值返回值integer。函数执行成功时返回用户选择的按钮编号(例如1、2、3等),发生错误时返回-1。如果任何参数的值为null,messagebox()函数返回null。
函数原型:
messagebox.show(text,title,messageboxbuttons,messageboxicon ,messageboxdefaultbuttons)参数说明:
(1)text:必选项,消息框的正文。
(2)title:可选项,消息框的标题。(3)messageboxbuttons:可选项,消息框的按钮设置,默认只显示【确定】按钮。ok――确定 okcancel――确定和取消 abortretryignore――终止、重试和忽略 yesnocancel――是、否和取消 yesno――是和否 retrycancel――重试和取消
(4)messageboxicon:对话框中显示的图标样式,默认不显示任何图标。
question――问号 information、asterisk――i号 error、stop、hand――错误号 warning、exclamation――!号 none――不显示任何图标
(5)messageboxdefaultbuttons:可选项,对话框中默认选中的按钮设置。
defaultbutton1――第1个button是默认按钮 defaultbutton2――第2个button是默认按钮 defaultbutton3――第3个button是默认按钮
7、memcpy(拷贝目的地,拷贝对象,拷贝长度);包含在头文件#include
函数原型:
extern void *memcpy(void *destin, void *source, unsigned n);功能:
由source指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。eg: int a=5,b=9;memcpy(a,b,sizeof(a));//将b按位拷给a;说明:
1.source和destin所指内存区域不能重叠,函数返回指向destin的指针。2.与strcpy相比,memcpy并不是遇到 就结束,而是一定会拷贝完n个字节。篇三:mfc个人心得体会 mfc个人心得体会 06a13526 余思远
时间过得很快,历时一个月的短学期即将结束,我们小组的mfc课题也基本完成。虽然只有短短的一个月,但却带给我很多。在小组成员的共同努力下,基本解决了计划中的一个个问题,要实现一个功能并不算复杂的计算器,也没有想象中那么简单。mfc涉及的概念很多,语法也与以前有些许不同,在c++基础上新增的内容也有许多。从开始编辑一个简单的界面,通过这段时间的学习,终于感到掌握了些许了,但想更加熟练的使用,也必须付出更多的时间吧。我发现在编程过程中,并不能只想着眼前所负责的这一块,许多对许多综合多方面进行考虑,需要与自己队友进行配合,作出合理的计划和安排。
实践是检验真理的唯一标准,这次mfc的实践活动,让我学习到了很多知识,弥补了很多漏洞。这个看似简单对我们来说却付出了很多时间和精力的程序,让我体会到了mfc相比与单纯的c++的优越性。程序编译过程中的有些困难虽然我们的能力范围内也无法解决,但是在网上资料的参考,读懂他人资料、相关程序的基础上,我们也完成了这个程序。相信这个经历能对以后的编程有很大的帮助。我也从此次课程设计中体会到了团队合作的乐趣和力量。在一个团队中扬长避短,发挥自己应有的作用,能让我们更加容易地去克服一个又一个难关。篇四:c++(mfc)程序设计实践报告
中南大学
本科生课程设计(实践)任务书、设计报告
(c++语言程序设计)题 目 学生姓名 指导教师 学 院 专业班级 学生学号
计算机基础教学实验中心
年 月 日
目 录
设计任务书?3 课程实践报告4
一、实践内容??4
二、实践成果??4
三、程序功能??4
四、设计思路??5
五、源程序???7
六、运行情况??13
七、实践心得??16
八、实践收获与不足???18 c++语言程序设计任务书
指导老师:李力
课程编号:
一、学时与学分
学时:40 学分:2
二、实践目的计算机实践是本科计算机基础教学的一个重要环节。它对于巩固学生的计算机基础知识,增强学生的计算机应用水平,改善学生的知识结构,具有重要意义。
三、实践任务与要求
用c++语言编程。编程题目如下:
(一)统计一个班(最多有35人)的学生成绩,要求能实现如下功能:(1)输入每个学生的学号和6门课程的成绩。(2)计算每个学生的平均分和总分。(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学号、各科成绩、平均分和总分。(4)根据用户要求输出某门课程(从键盘输入课程号)成绩在90分以上(含90分)且总分在前5名的学生情况,包括学号、各科成绩、平均分和总分。(5)根据统计,绘制总成绩五分制百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类来实现,学生学号和成绩采用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。
(二)统计商品销售数据,要求能用菜单实现如下功能:(1)输入每件商品的名称,编号,入库日期,标价,成本。(2)输入每件商品的售价,出售日期。(3)按总销售量从高到低排出每种商品的名称,售出件数,销售额。(4)根据用户要求输出某商品某月(从键盘输入商品名称和月份)的平均售价、售出件数、总利润。(5)根据统计,绘制商品销售利润百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。
(三)统计足球比赛数据,要求能用菜单实现如下功能:(1)输入每场比赛的主队名称,客队名称,比赛日期,主队得分,客队得分。(2)按总得分从高到低排出每个队的名称,总得分,胜,和,负的次数。(3)根据用户要求输出某队某月(从键盘输入队名和月份)的所有比赛数据。(4)根据用户要求输出某队主场总得分,客场总得分(5)根据用户输入,绘制某队成绩历史趋势图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采
用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。
(四)统计稿件管理数据,要求能用菜单实现如下功能:(1)输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。(2)输入每件稿件的发表日期,审稿意见。(3)按作者的省份,从高到低排出每个省的总发表篇数。(4)根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。(5)根据用户输入,绘制稿件按省份的百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。
(五)统计用电管理数据,要求能用菜单实现如下功能:(1)输入每个电表的用户名,楼栋号,抄表日期,电表读数。(3)按作者的用电量,从高到低排出每个用户的总用电量。(3)根据用户要求输出某用户某月(从键盘输入用户名和月份)的总用电量。(4)统计某楼栋从某月到某月(从键盘输入)的总用电量(5)绘制按的楼栋的用电百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。数据的组织对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。
以上五题任选一题。
四、实践纪律
学生除了要遵守实践期间学院的基本规定外,还要求做到: 1.必须在规定的时间、地点,独立完成以上任务; 2.不得迟到、早退。尤其不得擅自缺席。
五、设计报告要求
1. 任务书必须作为报告第一页 2. 报告不得少于3000字:主要总结实践心得、实践成果、程序功能、设计思路(程序流程图)、源程序(加上必要的注释)、运行情况、课程设计的收获与不足等
六、时间安排
两周时间
七、成绩评定规则
成绩分为优、良、中、及格、不及格五等。
优:程序功能完备,报告有深度, 遵守实践纪律。
良:程序功能满足要求,报告有内容, 遵守实践纪律。
中:程序和报告基本满足要求, 遵守实践纪律。
及格:程序有错误但大体能运行,有报告书,基本遵守实践纪律。
不及格:程序完全错误或严重违反实践纪律。c++语言程序设计报告
一、实践内容
统计稿件管理数据,要求能用菜单实现如下功能:(1)输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。(2)输入每件稿件的发表日期,审稿意见。(3)按作者的省份,从高到低排出每个省的总发表篇数。(4)根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。(5)根据用户输入,绘制稿件按省份的百分比饼图。(自学利用c++提供的库函数绘制曲线图)。
二、实践成果
灵活运用《c++程序设计》课程所学的基础知识,独立设计大型程序的能力;该程序必须用户界面友好、操作简洁方便,大大提高工作效率。
此程序先由用户输入数据,并存储。再作各种功能处理。整个程序基本可以实现稿件管理数据系统的统计。
三、程序功能 a)录入功能:可以写入关于稿件的基本信息,并进行以下几项功能。b)排序功能:用户可按作者的省份,将每个省的总发表篇数进行排序,并
输出。
c)查询功能:用户可根据作者与月份查出某作者某月的稿件数据,没找到的给予提示。d)绘制饼状图功能:系统根据输入的数据绘制高价男生份的百分比饼图。e)各项退出功能:在每个环节里都设有退出功能。
四、设计思路
统计稿件管理数据系统程序框图篇五:mfc心得 mfc学习心得
时光如梭,不知不觉短学期已经结束一个月左右了。对于mfc,这种c++的高级应用,从陌生到熟悉,从茫然到大致了解,从不屑一顾到很感兴趣,在编写飞行棋这个游戏的过程中感触良多,也收获了许多。mfc跟以前的控制台编程有比较大的差异,实现了部分可视化编程。对于其中复杂的类和函数,刚开始的时候感到相当的恐慌。虽然在暑假的时候有看过一些书,但到真正做起来却仍然觉得很吃力。第一次上mfc的课,老师一下子讲了很多东西,主要是控件,对于如此繁复的知识感觉一片茫然。整个理论课上了四节,虽然老师也讲了一些东西,但是对于我们要做的系统却是远远不够的。所以,很多东西都需要我们自学,到图书馆借书,到网上查找资料,问同学,问老师……我们使用各种方法获取知识。
必须学会自学,这是短学期的编程课带给我的一大感触。虽然我们需要做的只是一个小型的游戏,但对于初次接触窗口编程的我们难度依然是非常大了。但是,我们克服了,通过我们的团结协作。
要学会团结协作是我另一大感触。小组中各个组员的通力合作是编程工作能够顺利进行的一大关键,我们进行了明确的分工,却又能互相合作,互相参考,互相帮助。只有这样,才会有最后的飞行棋游戏新鲜出炉。
在编程过程中,我主要负责的部分是图形设计和界面美化部分。这部分的特点是:既与大一所学的控制台编程紧密联系,又必须要和现在所学的窗口程序编程相衔接。代码基本上靠逐行输入,考验的是自己的逻辑思维能力和严谨态度。其实,这部分的代码并不是特别多,所以编写代码的工作也并不是很难的。最磨练人的耐性的是将写好的代码进行调试。由于程序长度相对于原来的编程根本不属于同一个数量级,所以调试理所当然地变得痛苦起来。并且,这些代码基本上在编译时都能够一次通过,但在实际运行时却老是出错,检查算法和语法又不得要领。这个时候,就不得不耐着性子,用调试工具逐行调试了。学会了一些调试技巧,这不得不说是编程过程中我的一大收获。很久以前,我认为程序就是在头脑中思考一下就立即ok,而且程序先写出来再说, 然后再改就是,人的认识总是慢慢前进的!经过了短学期的编码和试验,彻底打破了以前的一些思维,其实程序只是人的思维的体现而已,因而重要的是思想,所以在构架整体框架的时候,先写一些程序验证是很必要的,而在程序开发的过程中,其如果对工程不是很了解的阶段,也只能算是在为整体框架做必要的验证,所以一般的工程的周期长于我们想象的那样!尽管mfc这门课程已经结束了,但是我还会继续学习下去,希望自己将来能够对编程有更加深入的了解。
第三篇:Mfc个人心得体会
Mfc个人心得体会
06a13526
余思远
时间过得很快,历时一个月的短学期即将结束,我们小组的mfc课题也基本完成。虽然只有短短的一个月,但却带给我很多。在小组成员的共同努力下,基本解决了计划中的一个个问题,要实现一个功能并不算复杂的计算器,也没有想象中那么简单。
Mfc涉及的概念很多,语法也与以前有些许不同,在c++基础上新增的内容也有许多。从开始编辑一个简单的界面,通过这段时间的学习,终于感到掌握了些许了,但想更加熟练的使用,也必须付出更多的时间吧。我发现在编程过程中,并不能只想着眼前所负责的这一块,许多对许多综合多方面进行考虑,需要与自己队友进行配合,作出合理的计划和安排。
实践是检验真理的唯一标准,这次mfc的实践活动,让我学习到了很多知识,弥补了很多漏洞。这个看似简单对我们来说却付出了很多时间和精力的程序,让我体会到了mfc相比与单纯的c++的优越性。程序编译过程中的有些困难虽然我们的能力范围内也无法解决,但是在网上资料的参考,读懂他人资料、相关程序的基础上,我们也完成了这个程序。相信这个经历能对以后的编程有很大的帮助。我也从此次课程设计中体会到了团队合作的乐趣和力量。在一个团队中扬长避短,发挥自己应有的作用,能让我们更加容易地去克服一个又一个难关。
第四篇:MFC个人心得
MFC个人心得
在四周时间里完成一个MFC的一个项目,个人觉得还是比较宽裕的,我们在第一周确立了项目的软件功能和名称,我们借鉴手机上RSS软件的广泛应用,想要通过MFC编写一个PC端的RSS应用,用户可以通过我们的软件获取到各大网站的新闻,科技精选,人文精选等等,总之,就是可以通过我们的软件得到每天想要获得资讯消息。
之后我们确定了各小组成员在整个团队中的分工。想要完成这样一个RSS软件的开发,思路还是比较明确的,首先要通过后台获取到各大资讯网站的网页源代码,再从这些源代码中间解析出有用的信息,之后将这些信息传递给前台,前台通过一个友好的界面将信息有条有序的展现给用户。我的主要工作就是开发后台,通过解析HTML代码获取各类资讯。由于先前我在Java平台下对于HTML解析的开发有一定的经验,所以我着手开始编写程序是的第一件事就是搜索看是否有已经写好的解析HTML的C++类库,经过我两天的搜索,我发现在C++环境下并没有比较完好的HTML解析类库,于是我暂时放弃了寻找现成的HTML解析类库,通过MFC中的CSting类中的函数操作来自己编写HTML解析类库。我采用DOM型的方式解析HTML,通过两天时间的编写基本实现了HTML的解析功能并且获取了大量网站的有用信息。由
于要求写在参与MFC项目的心得体会,我就贴上具体的C++代码了。在编写程序的过程中,我还是觉得一个优秀的程序员在于提升代码的重用性与可维护性,在理解别人代码的基础上使用网上现有代码是一个比较好的习惯,这样既能够了解其他人在编写程序时的思路理解,开拓自己的编程理念,同时也大量节省了时间,时间的优秀使用在编写程序的过程中是极其重要的。
另外,在编写MFC程序的过程中我也着实体验到了MFC编写程序的局限性。MFC虽然给开发者提供了一个现成的框架,着实便利的开发者的开发。但同样也造成了一个巨大的问题,开发者很难开发出具有个人特色的软件,想要重新改写程序整体的外观就比较困难,并且C++在编写程序时需要开发者自己定义变量的空间开辟和回收,这点上没有JAVA开发时来的方便,尤其是C++当中的指针机制,一不注意还是很容易造成程序错误的。
最后一点就是一个团队在一个项目中的重要意义。如果这样一个软件完全由我一个人进行开发,可能需要耗费大量时间,但是如果合理地分配给各个组员进行完成,便能取得事半功倍的效果,亦能听取各方面的意见,是的程序更加的完善。
第五篇:MFC编程学习心得
//
1、将C语言变量简单重新定义 UINT、INT(32位,4字节)
LONG、DWORD(32位,4字节)WPARAM、LPARAM(32位,4字节)SHORT、WORD(16位,2字节)LONG、LRESULT BOOL(TRUE、FALSE)PINT
PSTR、LPSTR、LPCSTR(字符串指针,只读和可写)
//
2、H开头,Windows句柄类型变量 HANDLE of Windows =>HWND HANDLE of Instance =>HINSTANCE HANDLE of Icon =>HICON
//3结构体类型
SIZE、POINT、RECT
MFC所有封装类一共有200多个,但是MFC的内部技术不只是简单地封装。MFC内部总共有六大关键技术,构架起了整个MFC开发平台。
一、MFC的六大关键技术包括: a)MFC程序的初始化过程: b)消息映射机制;
c)运行时类型识别(RTTI); d)动态创建; e)永久保存; f)消息传递;
六大关键技术的目的是为了提高开发效率,开发者只需要在局部做简单的修改,即可处理大部分窗口事物。
二、SendMessage和PostMessage函数的功能:
a)能够向指定的窗口内发送窗口消息,既可以是本进程内窗口也可以是其他进程的; b)既可以发送系统内部消息,消息编号的范围是:1-WM_USER-1; 例如:WM_LBUTTONDONW,WM_MOUSEMOVE等; c)也可以发送非系统消息(开发者定义的消息),范围是WM_USER-0x7FFF。
三、SendMessage和PostMessage两个函数的区别是:
a)SendMessage是阻塞型函数,PostMessage是非阻塞型函数:
SendMessage用于调用指定窗口的内部程序,直到窗口程序处理完成以后再返回: PostMessage是将一个消息寄送到一个窗口内的消息队列后就立即返回。b)两个函数的返回值不同:
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM,lParam);BOOL PostMessage(HWND hWnd,UNIT Msg,WPARAM wParam,LPARAM,lParam);SendMessage的返回值依赖于消息处理函数
c)跨线程或者跨进程发送消息,推荐使用PostMessage函数。
一、更具主窗口类型,MFC软件工程可以分为以下几种构架模型:
1、SDI(Single Document Interface):单文档界面,一个主框架窗口下只能编辑一份文档。例如:记事本和画笔等。
2、MDI(Multiple Document Interface):多文档界面,一个主框架窗口下可以同时编辑多份文档。
例如:VC++6.0,Photoshop等软件。
3、基于对话框的软件模型:主窗口是通过资源管理器,在对话框模板内摆放控件编辑而成的。
多数用于开发小规模软件,例如:任务管理器。
4、其他自定义窗口做主窗口:主窗口既不是框架也不是对话框,而是直接开发通用窗口类CWind而成。
例如:输入法窗口、QQ和360软件等,有时这类软件都可以使用框架和对话框模式来代替开发而成。
对话框常用消息映射函数:
二、对话框初始化消息:
1、WM_CREATE:通用窗口初始化消息
窗口还未显示出来,只有父窗口,子窗口还没创建
2、WM_INITDIALOG:对话框窗口专用消息
子窗口已经全部创建完成,可以调用和操作子窗口
三、对话框关闭过程消息:
1、WM_SYSCOMMAND:管理所有系统菜单和系统按钮消息 包括通过最大化、最小化、移动、大小和关闭等
2、WM_CLOSE:是WM_SYSCOMMAND消息的一个专用关闭的分支 再次消息处理过程可以取消本次关闭任务
3、IDCANCEL按钮消息:不但用于按钮回调消息,也是系统按钮关闭窗口的回调 执行真正关闭对话框函数是EndDialog,在此消息处理过程可以取消本次关闭任务
4、WM_DESTROY:通用窗口销毁消息
窗口已经在屏幕中消失了,但是自身窗口和窗口内的控件都还可以调用 在此消息处理过程可以取消本次关闭任务
四、非模式对话框:
1、在调用EndDialog函数关闭时,非模式对话框只是隐藏没有真正关闭;
2、在调用DestroyWindow函数关闭时,只是隐藏没有真正关闭;
3、DestroyWindow函数是通用摧毁窗口的函数,适用于对话框、控件、框架和视图等。
一个MFC软件工程由至少一个CWind派生类和一个CWinApp派生类,因此这两个类是MFC工程中最重要的两个类。
一、CWind成员函数:主要就是一个核心成员变量m_hWnd。
1、DestroyWindow:摧毁窗口。
2、Create和CreateEx:创建窗口,CreateEx创建时可以指定扩展风格。
3、获取窗口句柄:
a)pWnd->m_hWnd:直接调用前最好判断一下指针是否为空。b)operator HWND():自动类型转换,将对象转换为句柄。
c)GetSafeHwnd():可以避免的a方法,因为指针为空造成软件崩溃。
4、由句柄转化为CWnd对象:
a)CWnd::FromHandle:生成一个临时性窗口类指针
b)Attach和Detach:为一个CWnd对象嫁接和移除窗口句柄; c)SubclassWindow和UnsubclassWindow:子类化和反子类化; d)SubclassDlgItem:子类化指定ID对应的控件窗口。
5、获取和设置窗口信息:
a)GetWindowText和SetWindowText:获取和设置窗口的标题文字。b)GetStyle和ModifyStyle:获取和设置窗口的基础风格。c)GetExStyle和ModifyStyleEx:获取和设置窗口的扩展风格。
6、计时器: a)SetTimer: b)KillTimer:
7、窗口操作: a)ShowWindow: b)EnableWindow: c)MoveWindow: d)CenterWindow:
二、CWinApp类成员变量:
三、CWinApp类成员函数:
//匈牙利命名法: //变量:
int long定义:int nSel;long nTel HANDLE hInst;CString szName,szPass;CString strAddr;LPCSTR pszName;DWORD dwID;//如果是成员变量,以“m_”开头 //如果是全局变量,以“g_”开头