欢迎来到天天文库
浏览记录
ID:54945804
大小:154.81 KB
页数:16页
时间:2020-04-24
《燕山大学-windows-程序设计-实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Windows程序设计——基于WindowsAPI的简单绘图软件目录1.概述22.工作区窗口52.1hWorkWnd窗口的产生52.2结构体定义52.3文件中函数定义52.4图形的绘制63.工具条的实现93.1资源编辑93.2工具条窗口的产生93.3工具栏按钮效果的实现93.4消息传递114.调色板的创建124.1窗口产生124.2调色功能实现124.2消息处理135.保存与打开功能的实现145.1保存与打开窗口145.2保存功能145.3打开功能156.总结16161.概述1.1工程简介及窗口框架项目
2、中一共建立了四个窗口,其中类名为szWindowClass的窗口是父窗口,工作区窗口(szWorkClass)、工具栏(szToolbarClass)以及调色板(szColorbarClass)是子窗口。工作区窗口主要实现基本的绘图功能,工具栏和调色板分别实现绘图工具和颜色的选择功能。另外,为了方便消息的传递,将工作区窗口的句柄hWorkWnd设为全局变量。项目中MyDrawProj.cpp文件实现主窗口框架的产生及消息处理,function.h和function.cpp实现基本图形的绘制功能,tool
3、bar.h和toolbar.cpp完成工具栏的产生和消息处理,color.h和color.cpp实现调色板功能和消息处理。最后file.h和file.cpp完成图像的保存和打开功能主界面截图:1.2GDI(GraphicDeviceInterface)绘图概述图形设备接口(GDI)处理来自windows应用程序的图形函数调用,然后把这些调用传递给合适的设备驱动程序,由设备驱动程序来执行与硬件相关的函数,并产生最后的输出结果。设备描述表(DC)是一种windows数据结构,它包含了与一个设备(如显示器)的
4、绘制属性的相关信息。所有的绘制操作通过一个设备上下文对象进行,该对象封装了实现绘制线条,矩形,椭圆等图形windowsAPI函数。设备上下文可以用来向屏幕,打印机和图元件输入结果。161.3实现绘图的基本原理实验中通过对API函数的调用实现基本图形的绘制,由于窗口大小发生改变或者客户区无效时发生重绘,故采用双缓冲技术绘图,即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样在保持绘图的同时还可以避免闪烁。工具栏和调色板的选择可通过Se
5、ndMessage函数将用户的选择传到工作区窗口处理,从而画出不同颜色的不同图形。通过对添加bmp文件头将画布保存为bmp图像实现文件的保存功能,通过把打开的bmp图像拷贝到当前工作区实现打开功能,使用OPENFILENAME结构弹出打开和保存对话框。使用一个比当前工作区大以及背景颜色一样的矩形填充当前工作区,实现对图像的清除功能。1.4相关的基本数据类型和函数1.显示窗口的步骤1.注册窗口类typedefstructWNDCLASSEX{ UINTcbSize;//结构的大小 UINTstyle;
6、//窗口风格 WNDPROClpfnWndProc;//窗口函数指针,指向消息处理函数 intcbClsExtra; intcbWndExtra; HINSTANCEhInstance;//实例句柄 HICONhIcon;//图标 HCURSORhCursor;//光标 HBRUSHhbrBackground;//背景画刷 LPCTSTRlpszMenuName;//菜单 LPCTSTRlpszClassName;//窗口类名称 HICONhIconSm;//窗口图标 }WNDCL
7、ASSEX,*PWNDCLASSEX;2.创建窗口HWNDCreateWindow( LPCTSTRlpClassName,//窗口类名 LPCTSTRlpWindowName,//窗口标题 DWORDdwStyle,//指定创建窗口的风格 intx,//指定窗口的初始水平位置 inty,//指定窗口的初始垂直位置 intnWidth,//窗口的宽度 intnHeight,//窗口的高度 HWNDhWndParent,//窗口的父窗口 HMENUhMenu,//菜单句柄16 HAND
8、LEhlnstance,//与窗口相关联的模块实例的句柄 LPVOIDlpParam);3.显示窗口ShowWindow(HWNDhWnd,intnCmdShow);hWnd指窗口句柄,nCmdShow指定窗口如何显示,可取SW_HIDE、SW_SHOW等。4.更新客户区 UpdateWindow(HWNDhWnd);5.进入消息循环WM_CREATE、WM_PAINT、WM_SIZE等消息的处理2.菜单、图标和位图菜单LoadMenu(
此文档下载收益归作者所有