程序设计专题实验.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《程序设计专题实验.pdf》由会员分享,可在线阅读,更多相关《程序设计专题实验.pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 程序设计专题实验参考程序设计专题实验参考 西安交通大学电信学院“程序设计专题”课程组 2007 年 6 月 目 录 目 录 1 目标.1 2 基础知识.1 3 VC+集成开发环境中的程序开发.2 3.1 在 VC+集成开发环境中进行简单 C 程序的编写与运行调试.2 3.2 在 VC+集成开发环境中创建基于单文档的可视化应用程序.3 4 制作菜单与工具栏.4 4.1 制作菜单.4 4.2 制作工具栏.5 4.3 处理函数的添加.7 5 文本与图形的显示.7 5.1 Windows 客户区.8 5.2 图形设备接口.8 5.3 显示文本.9 5.4 绘制图形.10 6 显示图片.13 6.1
2、添加位图资源.13 6.2 显示位图资源.14 7 系统时间和定时器.14 7.1 系统时间.14 7.2 定时器.16 7.3 调用系统时间设置窗口.17 8 模式对话框.18 8.1 模式对话框创建步骤.18 8.2 模式对话框的一般使用方式.18 8.3 常用的系统对话框.18 9 VC+标准控件的使用.19 9.2 控件之间的消息传递.21 9.3 控件使用的例程与实现.21 10 VC+调试方法.24 10.1 调试环境的建立.24 10.2 调试的一般过程.24 10.3 高级调试技术.25 11 目标目标 通过本文档中给出的参考与例程,希望能够在以下几个方面有所帮助:(1)在 V
3、C+集成开发环境中进行程序开发的一般过程;(2)掌握基于单文档的应用程序实现方法;(3)菜单的使用方法:包括菜单资源的建立、编辑方法和菜单项响应函数的创建方法。(4)工具栏的使用方法:包括工具栏资源的建立、编辑方法和工具栏条目响应函数的创建方法。(5)画图与文字显示方法。包括基本图形的绘制,画笔、画刷的设置,已绘制图形的重新显示,文本的显示等内容。(6)定时器的使用。包括定时器的设置,定时器响应函数的创建等。(7)掌握模式对话框的实现方法及 VC+标准控件的基本使用方法;(8)掌握 VC+集成开发环境中的基本调试方法。2 基础知识基础知识 Visual C+作为一种程序设计语言,它同时也是一个
4、集成开发工具,一个在Windows 下进行 32 位应用程序开发的可视化集成开发环境,提供了软件代码自动生成和可视化的资源编辑功能。相比其他的编程工具而言,VC+在提供可视化编程方法的同时,也适用于编写直接对系统进行底层操作的程序,其生成代码的质量也较其他很多开发环境更优。在各种各样的 VC+及 Windows 编程的书籍中,经常会提及这样两个常见以缩写方式出现的词:MFC(Microsoft Foundation Class Library),即:Microsoft 基础类库,它是 VC+的核心,为编程者提供了一个应用程序框架,这个应用程序框架为编程者完成了很多 Windows 编程中的例行
5、性工作,如管理窗口、菜单和对话框,执行基本的输入和输出、使用集合类来保存数据对象等等;API(Application Programming Interface),即:应用程序接口,它是所有Windows 应用程序的根本之所在。简单的说,API 就是一系列的例程,应用程序通过调用这些例程来请求操作系统完成一些低级服务。在 Windows 这样的图形用户界面中,应用程序的窗口、图标、菜单和对话框等就是由 API 来管理和维护的。关于这个开发环境的一些基础性的知识内容,可以在各种参考书籍中查阅。这里不再占用篇幅。2 3 VC+集成开发环境中的程序开发集成开发环境中的程序开发 3.1 在在 VC+集
6、成开发环境中进行简单集成开发环境中进行简单 C 程序的编写与运行调试程序的编写与运行调试 在 VC+集成开发环境所提供的强大的编辑和调试环境的支持下,简单 C 语言应用程序的开发过程会变得相对容易些。但是有一点要明确:在 VC+开发环境中,对程序的调试、运行等都建立在“项目”或“工程”(Project)的基础上。因此,即使是只有一个 C 文件,也需要运行在一个工程之中。3.1.1 创建新工程:创建新工程:(1)选择 FileNew 菜单命令,在弹出的“新建”对话框中选择 Project 选项卡。(2)选择 Win32 Application,在 Project Name 编辑框中输入一个工程名
7、,如MyProject,选择工程存放的路径 Location,单击 OK 按钮。(3)选择 An Empty Project,并单击 Finish 按钮。系统弹出一个”New Project Information”窗口,点击 OK 确定。一个空的工程就创建好了。在 WorkSpace 里查看 FileView,可以看到 MyProject树下有三个文件夹:Source Files,Header Files 和 Resource Files,但是都是空的。查看 Window 系统中相应的路径,MyProject 目录下有一个名为 Debug 的空文件夹,三个新创建的文件 Myproject.d
8、sp,MyProject.dsw 和 MyProject.ncb 保存项目的相关信息。3.1.2 编写应用程序编写应用程序(1)点击新建一个文件,并且保存为 MyProgram.c。(2)在 WrokSpace 的 FileView 中,点击 MyProject Files 前的,展开文件树,在 Source Files 处点击右键,并选择:”Add Files to Folder.”。(3)在弹出的对话框中,选择 MyProgram.c,并点击 OK,可以看到MyProgram.c 出现在 Source Files 文件树之中。新的应用程序已经创建,并且已经包含到工程之中。双击 MyProg
9、ram.c,就可以编写应用程序了。如果希望编写 C+程序,只需在保存文件时使用.cpp 作为后缀名即可。通过 FileNew,选择 C+源文件,也可以很方便地创建应用程序文件。3.1.3 程序的编译、运行程序的编译、运行 对于 C 程序而言,其编译运行方法与普通 VC+程序的编译运行过程完全一致。编译、运行的操作都在 Build 菜单中。工具栏中的图标:分别代表:编译程序、创建应用程序、停止创建过程、执行应用程序、调试、设置断点。33.2 在在 VC+集成开发环境中创建基于单文档的可视化应用程序集成开发环境中创建基于单文档的可视化应用程序 基于单文档的项目就是用单窗口文档做为主窗口的一个程序。
10、这样的编程工作在 VC+开发软件的帮助下会变得相对简单得多。我们可以使用 MFC,通过AppWizard 来生成应用程序框架,然后再在此框架的基础上添加特定的应用程序的功能。说明一点:说明一点:AppWizard 能够帮助我们建立起一个应用程序的框架,但绝大多数的应用程序的代码还需要我们亲自编写。明白这一点是很重要的:AppWizard 所做的,只不过是我们在程序设计过程中所需要的最没有创意的那一部分事情。对于基于单文档的应用程序来说,我们可以很容易地使用 AppWizard 来实现一个单文档界面,在整个过程中,只需要做一点点简单的选择就足够了。3.2.1 创建应用程序框架创建应用程序框架(1
11、)选择 FileNew 菜单命令,在弹出的“新建”对话框中选择 Project 选项卡。(2)选择 MFC AppWizard(exe),在 Project Name 编辑框中输入工程名,如MyApp,单击 OK 按钮,出现 Step 1 对话框。(3)选择单文档选项,单击 Next 按钮,出现 Step 2 对话框。(4)在以后各步中接受默认设置,一直到最后点击 Finish。(5)点击 OK 确认新生成项目的信息,系统会自动生成一个基于单文档的工程。WorkSpace 中会出现三个选项卡,如图 1 所示:图 1 VC+6.0 中的 WorkSpace 窗口 在 FileView 中,可以看
12、到向导已经为我们生成了一些基本的应用程序框架,后面的程序就是在这个框架的基础上进行添加的。3.2.2 程序的编译、运行程序的编译、运行 点击进行编译链接,生成 MyApp.exe。点击运行。这个名为“无标题“的程序就是向导为我们完成的。4 4 制作菜单与工具栏制作菜单与工具栏 4.1 制作菜单制作菜单 当创建程序框架时,AppWizard 为其自动生成了如图 2所示的菜单资源IDR_MAINFRAME。图 2 由 AppWizard 自动生成的菜单资源(1)创建菜单项 a)在 Resource View 中,单击 Menu 项左边的“+”,然后双击其子项IDR_MENUFRAME,打开菜单资源
13、编辑器。b)选择菜单条上的新条目框(空的矩形框),双击,在弹出的属性窗口中输入菜单名称(如果不是弹出式菜单,还需要输入合适的 ID)。点击属性窗口左上角的图标,可以固定属性窗口,添加多个菜单项。例:在“查看”菜单项下添加“闹钟工具栏”菜单(ID_VIEW_RING_BAR)。(2)创建快捷菜单资源 a)在 Resource View 中的 Menu 项上点右键,选择“Insert menu”创建新菜单。b)在 Resource View 中新建的菜单上右击,选择“Properties”改变菜单ID 为 IDR_CONTEXT_MENU。c)用上面的方法加入新的菜单项,“设置颜色”-“前景色、背
14、景色”。(3)添加消息处理函数 a)选择“View”下的“Class Wizard”菜单项。b)在弹出的对话框中选“Message Map”标签,在该标签下的“Class Name”5处选择“CMyAppView”,在“Object IDs”框中选择相应的菜单 ID,在右边的“Message”框中选择相应的事件。需要增加的菜单消息处理函数见下表:对象标识符对象标识符 消息消息 函数名函数名 所属类所属类 ID_VIEW_RING_BAR COMMAND UPDATE_COMMAND_UIOnViewRingBar OnUpdateViewRingBar CMainFrame ID_COLOR_
15、FRAME COMMAND OnColorFrame CMyAppViewID_COLOR_TEXT COMMAND OnColorText CMyAppView。(4)快捷菜单 用户单击鼠标右键时弹出的菜单为快捷菜单,VC 中专门为快捷菜单提供了WM_CONTEXTMENU 消息,用户只需要在应用程序中添加该消息的处理函数即可。例,将刚才创建的 IDR_CONTEXT_MENU 菜单作为快捷菜单显示的程序段为:void CMyAppView:OnContextMenu(CWnd*pWnd,CPoint point)/TODO:Add your message handler code her
16、e CMenu menu;if(menu.LoadMenu(IDR_CONTEXT_MENU)CMenu*ppopup=menu.GetSubMenu(0);ppopup-TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);4.2 制作工具栏制作工具栏 当创建程序框架时,AppWizard 为其自动生成了如图 3所示的工具栏资源IDR_MAINFRAME。在应用程序中,可根据自己的需要对工具栏进行编辑,或创建新的工具栏。例在 IDR_MAINFRAME 工具栏中添加“颜色选择”项,创建新的工具栏“绘图工具栏”。图
17、 3 由 AppWizard 自动生成的工具栏资源 (1)编辑现有工具栏 6 a)在 Resource View 中,单击 Toolbar 项左边的“+”,然后双击其子项IDR_MAINFRAME,打开工具栏资源编辑器。b)选择工具条上的新条目框(空的矩形框),双击,输入图标的 ID(如果选择与菜单项相同的 ID,则可与菜单项共用一个消息响应函数),编辑工具选项的图标。c)通过鼠标拖动项目,可以将该项放在合适的位置。例:加入工具项“设置时间”。(2)创建新的工具栏 a)在 Resource View 中的 Toolbar 项上点右键,选择“Insert toolbar”创建新工具栏。b)在 R
18、esource View 中新建的工具栏上右击,选择“Properties”改变菜单 ID 为 IDR_RING_TOOLBAR。c)用上面的方法加入新的工具项,“设置闹钟、取消闹钟”等。(3)添加消息处理函数 添加方法如前。需要增加的工具项消息处理函数见下表:对象标识符对象标识符 消息消息 函数名函数名 所属类所属类 ID_SET_RING_ON COMMAND OnSetRingOn CMyAppView ID_SET_RING_OFF COMMAND OnSetRingOff CMyAppView。(4)将工具栏载入应用程序 要显示工具栏,必须要将它载入应用程序中。一般通过重载 CMai
19、nFrame 类中的 OnCreate 函数载入工具栏。如果应用程序中包含不同的子窗口类型,且需要为每个子框架窗口创建不同的工具栏,则可以在 CChildFrame 类的 OnCreate 函数中载入工具栏(OnCreate 函数是 WM_CREATE 消息映射的处理函数)。例如:将新建的 IDR_RING_TOOLBAR 工具栏载入应用程序的语句段为:a)在 CMainFrame 类的头文件中声明工具栏对象:CToolBar m_DrawToolBar;b)在 CMainFrame 类的实现文件 OnCreate 函数中载入工具栏对象:int CMainFrame:OnCreate(LPCR
20、EATESTRUCT lpCreateStruct)/载入绘图工具栏 if(!m_DrawToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_ALIGN_LEFT|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)|!m_DrawToolBar.LoadToolBar(IDR_RING_TOOLBAR)7 TRACE0(Failed to create toolbarn);return-1;/fail to create /使工具栏浮动 m_DrawToolBar.
21、EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_DrawToolBar);(5)工具栏的显示与隐藏 工具栏载入后,其显示与隐藏可以由应用程序中的菜单来控制。例如:利用“闹铃工具栏”(ID_VIEW_RING_BAR)来控制显示与隐藏工具栏:void CMainFrame:OnViewRingBar()/TODO:Add your command handler code here BOOL bvisible=(m_DrawToolBar.GetStyle()&WS_VISIBLE)!=0
22、);ShowControlBar(&m_DrawToolBar,!bvisible,FALSE);RecalcLayout();void CMainFrame:OnUpdateViewRingBar(CCmdUI*pCmdUI)/TODO:Add your command update UI handler code here BOOL bvisible=(m_DrawToolBar.GetStyle()&WS_VISIBLE)!=0);pCmdUI-SetCheck(bvisible);4.3 处理函数的添加处理函数的添加 以上步骤中通过 AppWizard 添加的一系列处理函数中,除了为了
23、显示菜单和工具栏,在一些处理函数中添加了相应的处理代码外,其他的函数并没有真正的处理过程。在这些函数中添加什么样的处理函数,就要看程序中需要它们做些什么事情了。这也正如之前所说,AppWizard 为你搭建的只是一个框架,程序的灵魂还需要自己来编写。5 文本与图形的显示文本与图形的显示 VC+中可以显示我们所期望的文字或者图形,此时,我们需要使用文本工具或者图形工具来完成这一任务。在介绍这些之前,我们应该对 Windows 的客户区域和图形设备接口(GDI)有一个初步的了解。8 5.1 Windows 客户区客户区 一个 Windows 窗口具有一个举行的“客户区域”,它包括边框、标题栏、菜单
24、和贴边工具栏。CWnd 中的 GetClient 成员函数可以获得客户区域的大小。一般来说,一个程序的操作都是在这个客户区域以内进行的。在获取客户区大小时,常使用的方式是通过 GetClientRect()函数,把客户区的大小返回给 CRect 类型的变量 Rect。代码如下:CRect Rect;GetClientRect(&Rect);为了在这个客户区域内进行有效的显示输出,要对 Windows 的坐标体系进行初步了解。我们以显示象素作为绘图单位,我们称之为设备坐标。比如当我们要绘制一个矩形的时候,使用:pDC-Rectangle(CRect(0,0,200,200);其中的(0,0)代表
25、矩形的左上角坐标值,(200,200)代表右下角坐标值。这和我们通常看到的直角坐标系的坐标方向有点不一样,设备坐标中,向下的方向是 y 轴的正方向。也就是说,对于一个 1024768 的窗口而言,窗口的左上角是(0,0)坐标,窗口的右下角坐标是(1024,768)。Windows 提供的还有逻辑坐标,有兴趣的话可以翻阅相关 VC+编程的书籍做进一步了解。我们的图形或文字在什么位置输出,就要根据这个客户区域的大小来设置了。比如,可以计算得到区域的中间位置:int CenterX=Rect.right/2;int CenterY=Rect.bottom/2;并在这个位置的基础上,进行相应的调整,得
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 专题 实验
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内