第五章《资源的应用》

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

德州学院计算机系1VisualC++与面向对象程序设计•第5章资源的应用德州学院计算机系主讲教师韩金姝德州学院计算机系2本章主要内容菜单与加速键资源位图资源及其应用对话框资源及其应用德州学院计算机系3菜单与加速键资源资源是Windows应用程序用户界面的重要组成部分,极大的方便了应用程序与用户之间的交互。常用资源如:加速键、位图、对话框、菜单。资源的两种编辑方法1.资源可使用资源编辑器来创建和编辑2.资源也可使用文本编辑器(如记事本)编辑德州学院计算机系4菜单与加速键资源菜单与加速键部分的主要内容菜单的创建过程操作菜单项菜单资源应用实例加速键资源(自学)讲授方法资源的两种编辑方法对比讲授;API和MFC对比讲授德州学院计算机系5菜单的创建过程菜单的组成窗口主菜单条、下拉式菜单框、菜单项热键标识、菜单项加速键标识和菜单分割线、选中标识等菜单的创建:分为定义和加载两个步骤定义菜单:在.rc文件中定义New/File/textfile写入定义内容另存为.rc德州学院计算机系6菜单的创建过程定义内容包括:1.#includewindows.h2.#include“Menu.h”Menu.h文件中定义了菜单项标识对应的数值,如:#defineIDM_CUT20取值范围:0-65535,是用户自定义的,可选用。德州学院计算机系7菜单的创建过程3.定义格式:菜单名.MENU关键字.载入特性选项表(参见表5-1).菜单项列表例:MyMenuMENUMOVEABLE{POPUP“编辑”{MENUITEM“剪切”,IDM_CUTMENUITEM“复制”,IDM_COPY…….MENUITEMSEPARATOR}}德州学院计算机系8菜单的创建过程菜单的加载方法2:在创建窗口时加载。实现语句为:HMENUhmenu…hmenu=LoadMenu(hInstance,”MyMenu”)Hwnd=CreateWindow(…,….,hmenu,….)德州学院计算机系9菜单的创建过程菜单的加载方法3:动态加载菜单(前提是在方法2的基础上)。可在同一程序中实现多种不同的菜单操作界面。实现过程如下:定义菜单句柄第一次采用LoadMenu+CreateWindow之后是LoadMenu+SetMenu德州学院计算机系10菜单的创建过程API创建菜单小结:Step1:.rc文件。菜单名、菜单特性、菜单项和ID标识。Step2:.h文件。菜单项ID所对应的数值。Step3:.cpp文件。加载菜单的三种方式。注意:加载时使用的是菜单名,而不是.rc文件名。.rc和.cpp都要包含.h文件德州学院计算机系11菜单的创建过程例5-1(P78):创建一个菜单。其中有三个菜单项,分别为“文件”、“计算”和“帮助”,各菜单项又有子菜单选项。程序演示1德州学院计算机系12菜单的创建过程应用资源编辑器创建菜单headerfiles右键添加已存在的resource.h并可自定义菜单项ID对应数值,注意菜单名。得到.h文件在.cpp中加载,MAKEINTRESOURCE(IDR_MENU1)新建工程File/new/files/ResourceScript,得.rc文件右键/Insert/Menu/new右键properties,所见即所得安排菜单项及ID值德州学院计算机系13操作菜单项1.API创建菜单,应用程序可调用相关函数访问菜单项的属性或编辑菜单项,也可实现对菜单项的动态控制.参加教材P73-76.2.资源编辑器创建菜单,可以直接采用所见即所得方式,进行修改菜单名称及ID值、变换菜单项位置、添加/删除菜单等操作3.练习:应用方法2创建并操作菜单德州学院计算机系14位图资源及其应用位图是一种数字化的图形表示形式与设备相关的位图DDB或GDI位图DDB位图对象有一个与之关联的WINDOWS数据结构,它在WINDOWSGDI模块内进行维护。程序可以获得位图数据的副本,但是其中位的排列取决于显示硬件。与设备无关的位图DIB可在不同机器或系统中显示位图所固有的图像。是一种外部的位图格式,经常存储在以BMP为后缀的位图文件中,还支持图像数据的压缩。德州学院计算机系15位图资源及其应用操作位图必须要有:位图、内存设备描述表、设备描述表内存设备描述表位设置的目的因为位图数据量大,为了提高显示速度,位图操作在内存中进行。内存设备描述表的相关操作为:HDChdcmenhdcmen=CreateCompatibleDC(hDC)SelectObject(hdcmen,hBm)(将位图选入内存设备境)操作位图DeleteDC(hdcmen)德州学院计算机系16位图资源及其应用位图的操作过程定义:HBITMAPhBm加载或创建:hBm=LoadBitmap(hInstance,位图名)选入内存设备环境:SelectObject(hdcmen,hBm)输出:BitBlt(),将位图从内存设备环境复制到设备环境德州学院计算机系17位图资源及其应用说明:应用程序通过响应消息WM_CREATE完成加载或创建位图操作。位图的有关信息可通过调用GetObject()获取。该函数将位图的信息写入BITMAP结构。德州学院计算机系18位图资源及其应用例5-2(P84):位图操作在一个窗口中央加载一个任意位图,位图尺寸为窗口面积的1/4,当单击鼠标左键或键盘上的向上箭头时,位图向上移动,当移动到窗口的上边界时,窗口显示“已经达到顶部,不能再向上移动了”字样。当单击鼠标右键或键盘向下箭头时,位图下移,当到达窗口下边界时,屏幕显示提示文字。程序演示2德州学院计算机系19位图资源及其应用基于MFC的DDB位图操作新建基于对话框的工程位图资源.rc,Insert/bitmap/import显示位图:在OnPaint()中设备描述表、位图句柄、内存设备描述表、位图选如内存设备描述表、由内存DC到屏幕DC修改StretchBlt()的尺寸参数,可实现位图显示尺寸的缩放。程序演示3德州学院计算机系20对话框资源及其应用对话框是一个弹出式窗口。包含了控件:按钮、滚动条、编辑框、列表框。功能:发送消息如警告、提示框消息;接收消息如用户输入的消息和提供消息。对话框消息的处理在独立的对话框函数内进行。德州学院计算机系21对话框资源及其应用对话框的形式模式对话框:不允许用户在关闭对话框之前切换到应用程序的其他窗口。非模式对话框:允许用户在该对话框与应用程序其他窗口之间的切换。非模式对话框从WinMain函数的消息循环中接收输入。德州学院计算机系22对话框资源及其应用模式对话框的编程方法Step1:定义对话框资源.rcStep2:显示对话框DialogBox()Step3:构造对话框处理函数。具有与主窗口相似的参数。主要处理WM_INITDIALOG/WM_COMMAND,通过LOWORD(wParam)确定产生交互请求的控件并转入相应处理过程Step4:关闭对话框。EndDialog()德州学院计算机系23对话框资源及其应用例5-3(P92):模式对话框应用实例程序含有标题栏、两个下拉菜单。单击菜单,弹出对话框,此时其他操作都是无效的。演示程序程序4是基于API编写的,演示程序5是基于MFC编写的,两者功能相似。程序中同时还涉及了菜单的创建和响应程序演示4程序演示5德州学院计算机系24对话框资源及其应用基于API的非模式对话框编程与模式对话框编程类似Step1:对话框定义(.rc):STYLEWS_POPUP|WS_CAPTION|WS_VISIBLEStep2:对话框创建(.cpp)hdlg=CreateDialog(hInstance,About,hWnd,(DLGPROC)DlgProc);Step3:消息处理:非模式对话框允许应用程序向其他窗口发送信息,因此在WinMain函数消息循环中调用IsDialogMessage判断消息是否发往非模式对话框Step4:关闭对话框:DestroyWindow()DialogBox()EndDialog()德州学院计算机系25对话框资源及其应用含有非模式对话框程序的消息循环while(GetMessage(&Msg,NULL,0,0)){if(!IsDialogMessage(hdlg,&Msg)){TranslateMessage(&Msg);DispatchMessage(&Msg);}}德州学院计算机系26对话框资源及其应用例5-4(P97):非模式对话框应用程序含有标题栏、两个下拉菜单。单击菜单,弹出保存对话框,此时其他操作都是无效的。但当弹出关于对话框(属于非模式对话框)时,其他窗口仍能进行操作。程序演示6德州学院计算机系27对话框资源及其应用基于MFC的非模式对话框编程Step1:新建工程,添加对话框资源,并创建类Step2:添加菜单,建立消息映射Step3:添加代码,包含头文件。(例:欢迎)程序演示7德州学院计算机系28对话框资源及其应用通用对话框资源程序员除使用自定义的对话框外,还可以直接调用Windows系统提供的通用对话框模板生成对话框资源。如:OPEN,SAVE,SAVEAS,PRINT.这些对话框模板在系统提供的COMMDLG.h文件中德州学院计算机系29对话框资源及其应用通用对话框模板的创建Step1:填充对话框模板结构1.OPENFILENAME,CHOOSECOLOR,CHOOSEFONT,PRINTDLG,PAGESETUPDLG,FINDREPLACE,具体参见MSDN2.钩子函数:该函数的功能与对话框窗口处理函数相同。Step2:调用函数显示对话框。不同功能对话框,对应的显示函数也不同。表5-11程序演示8德州学院计算机系30本章小结习题五:5.2是综合运用前5章编程技巧的程序,主讲教师给出了程序设计思想,重点讲授动态加载菜单和图形绘制,并给出了程序实现框架,绘制矩形后可以通过键盘左右方向键,使得所绘制的矩形缩放。请同学们进一步填充完善该程序。程序演示9

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功