下篇Windows编程基础.ppt

上传人:za****8 文档编号:6255306 上传时间:2020-02-20 格式:PPT 页数:69 大小:223.06KB
返回 下载 相关 举报
下篇Windows编程基础.ppt_第1页
第1页 / 共69页
下篇Windows编程基础.ppt_第2页
第2页 / 共69页
下篇Windows编程基础.ppt_第3页
第3页 / 共69页
点击查看更多>>
资源描述
下篇Windows编程基础 华北电力大学电子商务教研室王钇 第一章Windows编程基础 Windows编程基础知识Windows应用程序常用消息Windows中的事件驱动程序设计Windows应用程序组成及编程步骤应用程序举例 Windows编程基础知识 MicrosoftWindows是一个应用于微机的具有图形化用户界面的操作系统 它为应用程序提供了一个由一致的窗口和菜单结构构成的多任务环境 目前的Windows应用软件开发平台大多是 可视的 Visual 是一个集成了系统的可用资源和开发工具的综合性开发平台 Windows编程基础知识 系统的可用资源和开发工具包括 Windows语言的源程序编辑器和编译器程序调试工具 包括源程序语法检查 可执行程序修改和运行监视等系统函数库和系统函数开发工具资源管理器 包括图形化窗口及组成元素的多种对象的编辑器可选择并构成具体语句或源程序结构的例程库及Help应用程序Help和Setup开发工具包 Windows编程基础知识 Windows的程序设计语言 包括VisualC VisualBasic VisualJava等 都是 面向对象 object oriented 的程序设计语言 Windows编程中 对象 object 是指Windows的规范部件 包括各种窗口 菜单 按钮 对话框及程序模块等 编写Windows程序相当一部分工作是在创建对象和为对象属性赋值 Windows编程基础知识 Windows的特点图形化的窗口界面多任务方式的运行环境虚拟化的设备接口以虚拟内存为核心的内存管理网络功能及应用程序多媒体功能及应用程序功能丰富的用户管理工具和实用软件 Windows编程基础知识 VisualC 开发面向对象应用程序的两种主要方法 使用Windows提供的WindowsAPI函数使用Microsoft提供的MFC类库 Windows编程基础知识 API是应用程序编程接口 ApplicationProgrammingInterface 的缩写 是Windows系统与Windows应用程序间的标准程序接口为应用程序提供Windows系统特殊函数及数据结构Windows应用程序可以利用标准大量API函数调用系统功能 Windows编程基础知识 WindowsAPI的功能窗口管理函数实现窗口的创建 移动和修改功能图形设备 GDI 函数 实现与设备无关的图形操作功能系统服务函数 实现与操作系统有关的多种功能 Windows编程基础知识 MFC MicrosoftFoundationClass 类库集成了大量已经预先定义好的类 用户可以根据编程的需要调用相应的类 或根据需要定义有关的类 采用交互式方法时 可视化开发平台给出了许多选用的对象 程序员可选择所需对象并确定其属性 由此搭建起应用程序的 大框架 并可根据需要进一步编写必要的细节代码段 最后构成完整的应用程序 Windows编程基础知识 利用WindowsAPI函数编写Windows应用程序必须首先了解以下内容 窗口的概念事件驱动的概念句柄消息 窗口 窗口Windows应用程序基本的操作单元 是应用程序与用户之间交互的接口环境 也是系统管理应用程序的基本单位 编写一个Windows应用程序首先应创建一个或多个窗口 随后应用程序的运行过程即是窗口内部 窗口与窗口之间 窗口与系统之间进行数据处理与数据交换的过程 一个基本的Windows应用程序窗口 事件驱动 Windows程序设计是针对事件或消息的处理进行消息是描述事件发生的信息 如按下鼠标或键盘 Windows程序的执行顺序取决于事件发生的顺序 程序的执行顺序是由顺序产生的消息驱动的 但是消息的产生往往并不要求有次序之分 事件驱动 事件驱动编程方法对于编写交互式程序很有用处 它避免了死板的操作模式 使得用户可以按照自己的意愿采用灵活多变的操作方式 句柄 句柄 handle 是整个Windows编程的基础 句柄是一个4字节长的数值 用于标识应用程序中不同的对象和同类对象中不同的实例 如窗口 按钮 图标 滚动条 输出设备 控制或者文件等 应用程序通过句柄访问相应的对象信息 句柄 常用句柄类型及其说明 HWND窗口句柄HDC设备环境句柄HBITMAP位图句柄HCURSOR光标句柄HICON图标句柄HFONT字体句柄HMENU菜单句柄HPEN画笔句柄HFILE文件句柄HBRUSH画刷句柄HINSTANCE当前实例句柄 消息 Windows应用程序利用Windows消息 Message 与应用程序及系统进行信息交换 消息的组成消息号 由事先定义好的消息名标识字参数 wParam 和长字参数 lParam 用于提供消息的附加信息 附加信息的含义与具体消息号的值有关 消息 在Windows中 消息用一个结构体MSG表示 typedefstructtagMSG HWNDhwnd 窗口句柄 为null 则可检索所有驻留在消息队列中的消息UINTmessage 消息值 由Windows h头文件中的宏定义来标识WPARAMwParam 包含有关消息的附加信息 不同消息其值有所不同LPARAMlParam DWORDtime 指定消息送至队列的时间POINTpt 指定消息发送时屏幕光标的位置 其数据类型POINT是一个结构体 MSG typedefstructtagPOINT LONGx LONGy POINT 消息 VC中存在几种系统定义的消息分类 不同的前缀符号经常用于消息宏识别消息附属的分类 系统定义的消息宏前缀如下 BM表示按钮控制消息CB表示组合框控制消息DM表示默认下压式按钮控制消息EM表示编辑控制消息LB表示列表框控制消息SBM表示滚动条控制消息WM表示窗口消息 消息 Windows编程常用消息窗口管理消息 初始化消息 输入消息 系统消息 剪贴板消息 控制处理消息 控制通知消息 滚动条通知消息 非用户区消息 MDI 多文档界面 消息 DDE 动态数据交换 消息 以及应用程序自定义的消息等 应用程序自定义的消息可以供内部应用程序和系统内其他进程通信使用 Windows应用程序常用消息 WM LBUTTONDOWNWM KEYDOWNWM CHARWM CREATEWM CLOSEWM DESTROYWM QUITWM PAINT Windows应用程序常用消息 WM LBUTTONDOWN产生单击鼠标左键的消息wParam包含一整数值以标识鼠标键的按下状态MK LBUTTON按下鼠标左键MK MBUTTON按下鼠标中键MK RBUTTON按下鼠标右键lParam低字节包含当前光标的X坐标值 高字节包含当前光标的Y坐标值 Windows应用程序常用消息 WM LBUTTONDOWN此外 相似的消息还有 WM LBUTTONUP 放开鼠标左键时产生 WM RBUTTONDOWN 单击鼠标右键时产生 WM RBUTTONUP 放开鼠标右键时产生 WM LBUTTONDBLCLK 双击鼠标左键时产生 WM RBUTTONDBLCLK 双击鼠标右键时产生 Windows应用程序常用消息 WM KEYDOWN按下一个非系统键时产生的消息系统键是指实现系统操作的组合键 例如Alt与某个功能键的组合以实现系统菜单操作等 wParam 按下键的虚拟键码 用以标识按下或释放的键 如F1的虚拟键码在Windows h文件中定义为VK F11Param 记录了按键的重复次数 扫描码 转移代码 先前键的状态等信息 Windows应用程序常用消息 WM KEYDOWN相似的消息还有 WM KEYUP 在放开非系统键时产生 Windows应用程序常用消息 WM CHAR按下一个非系统键时产生的消息wParam为按键的ASCII码lParam与WM KEYDOWN的相同 Windows应用程序常用消息 WM CREATE由CreateWindow函数发出的消息wParam 未用lParam 包含一个指向CREATESTRUCT数据结构的指针该结构是传递给CreateWindow函数的参数的副本 Windows应用程序常用消息 WM CLOSE关闭窗口时产生的消息wParam和lParam均未用 Windows应用程序常用消息 WM DESTROY由DestroyWiodow函数发出的消息wParam和lParam均未用 Windows应用程序常用消息 WM QUIT由PostQuitMessage函数发出的消息wParam 含退出代码 标识程序退出运行时的有关信息lParam 未用 Windows应用程序常用消息 WM PAINT当发生用户区移动或显示事件 用户窗口改变大小的事件 程序通过滚动条滚动窗口时 均产生WM PAINT消息 当下拉式菜单关闭并需要恢复被覆盖的部分以及Windows清除对话框或消息框等对象 并需要恢复被覆盖的部分时 也将产生WM PAINT消息 Windows中的事件驱动程序设计 过程驱动方法计算平均成绩 事件驱动方法计算平均成绩 Windows中的事件驱动程序设计 事件驱动程序设计是围绕着消息的产生与处理而展开的 一条消息是关于发生的事件的信息 Windows消息是事件驱动的 消息是不会以任何预定义顺序出现的 事件驱动程序方法提供了许多便利 对于那些需要大范围的用户干预的应用程序来说 更显其优越性 Windows应用程序组成及编程步骤 应用程序的组成源程序组成结构 Windows应用程序组成及编程步骤 应用程序的组成一个完整的Windows应用程序通常由五种类型的文件组成 C语言源程序文件头文件模块定义文件资源描述文件项目文件 Windows应用程序组成及编程步骤 源程序组成结构Windows应用程序具有相对固定的基本结构 其中入口函数WinMain和窗口函数WndProc构成基本框架 包含各种数据类型 数据结构与函数等 WinMain和WinProc是Windows应用程序的主体 Windows应用程序组成及编程步骤 源程序组成结构WinMain函数窗口函数WinProc数据类型一些重要的数据结构 Windows应用程序组成及编程步骤 WinMain函数是所有应用程序的入口 类似C语言中的Main函数它的功能是完成一系列的定义和初始化工作 并产生消息循环实现以下功能 注册窗口类 建立窗口及执行必要的初始化工作进入消息循环 据接受的消息调用相应的处理过程当消息循环检索到WM QUIT时终止程序运行 Windows应用程序组成及编程步骤 WinMain函数三个基本的组成部分 函数说明初始化消息循环 Windows应用程序组成及编程步骤 WinMain函数说明 intWINAPIWinMain HINSTANCEhThisInst 应用程序当前实例句柄HINSTANCehPrevInst 应用程序其他实例句柄LPSTRlpszCmdLine 指向程序命令行参数的指针IntnCmdShow 应用程序开始执行时窗口显示方式 的整数值标识 Windows应用程序组成及编程步骤 WinMain函数说明注意 Windows是多任务管理的 同一应用程序的多个窗口可能会同时存 Windows系统对每个窗口的执行称为一个实例 instance 并用一个实例句柄来唯一标识 Windows应用程序组成及编程步骤 初始化包括窗口类的定义 注册 创建窗口实例和显示窗口四部分 Windows应用程序组成及编程步骤 初始化 窗口类的定义通过给窗口类数据结构WNDCLASS赋值完成 该数据结构中包含窗口类的各种属性 窗口类定义常用以下函数 LoadIcon函数作用是在应用程序中加载一个窗口图标 其原型为 HICONLoadIcon HINSTANCEhInstance 图标资源所在的模块句柄 NULL则使用系统预定义图标LPCTSTRlpIconName 图标资源名或系统预定义图标标识名 Windows应用程序组成及编程步骤 初始化 窗口类的定义LoadCursor函数作用是在应用程序中加载一个窗口光标 其原型为 HCURSORLoadCursor HINSTANCEhInstance 光标资源所在的模块句柄 NULL则使用系统预定义光标LPCTSTRlpCursorName 光标资源名或系统 预定义光标标识名 Windows应用程序组成及编程步骤 初始化 窗口类的定义GetStockObject函数应用程序调用函数GetStockObject获取系统提供的背景刷 其原型为 HBRUSHGetStockObject intnBrush nBrush为系统提供的背景刷的标识符 Windows应用程序组成及编程步骤 初始化 注册窗口类Win系统本身提供部分预定义的窗口类 程序员也可以自定义窗口类 窗口类必须先注册后使用 窗口类的注册由函数RegisterClass 实现 其形式为 RegisterClass wndclass为窗口类结构RegisterClass函数的返回为布尔值 注册成功则返回真 Windows应用程序组成及编程步骤 初始化 创建窗口创建一个窗口类的实例由函数CreateWindow 实现 函数原型为 HWNDCreateWindow LPCTSTRlpszClassName 窗口类名LPCTSTRlpszTitle 窗口标题名DWORDdwStyle 创建窗口的样式intx y 窗口左上角坐标intnWidth nHeight 窗口宽度和度高HWNDhwndParent 该窗口的父窗口句柄HWENUhMenu 窗口主菜单句柄HINSTANCEhInstance 创建窗口的应用程序当前句柄LPVOIDlpParam 指向一个传递给窗口的参数值的指针 Windows应用程序组成及编程步骤 初始化 显示窗口窗口类的显示由ShowWindow和UpdateWindow函数实现 应用程序调用ShowWindow函数在屏幕上显示窗口 其形式为 ShowWindow hwnd nCmdshow nCmdshow为窗口显示形式标识显示窗口后 应用程序调用UpdateWindow更新并绘制用户区 并发出WM PAINT消息 形式为 UpdateWindow hwnd 常见显示形式标识及其说明 Windows应用程序组成及编程步骤 消息循环Windows应用程序的运行以消息为核心 Windows将产生的消息放入应用程序的消息队列 而应用程序的WinMain函数从消息循环提取队列中的消息 并将其传递给窗口函数的相应过程 Windows应用程序组成及编程步骤 消息循环消息循环的常见格式如下 MSGMsg while GetMessage 函数GetMessage的作用是从消息队列中读取一条消息 并将消息放在MSG结构中 Windows应用程序组成及编程步骤 消息循环GetMessage形式为 GetMessage lpMSG 指向MSG结构的指针hwnd nMsgFilteMin 用于消息过滤的最小消息号值nMsgFilterMax 用于消息过滤的最大消息号值 GetMessage返回零值 即检索到WM QUIT消息 程序结束循环并退出 Windows应用程序组成及编程步骤 消息循环TranslateMessage函数将消息的虚拟键转换为字符信息 形式为 TranslateMessage lpMsg DispatchMessage函数将消息传送到指定窗口函数 形式为 DispatchMessage lpMsg Windows应用程序组成及编程步骤 窗口函数定义了应用程序对接收到的不同消息的响应包含了对各种可能接收到的消息的处理过程WinProc函数由一个或多个switch语句组成 每一条case语句对应一种消息 当应用程序接收到一个消息时 相应的case语句被激活并执行相应的响应程序模块 窗口函数的一般形式如下 LRESULTCALLBACKWndProc HWNDhwnd UINTmessage WPARAMwParam LPARAMlParam switch message message为标识的消息 case break caseWM DESTROY PostQuitMessage 0 default returnDefWindowProc hwnd message wParam lParam return 0 Windows应用程序组成及编程步骤 数据类型在Windows h中定义了Windows应用程序中包含种类繁多的数据类型 Windows应用程序组成及编程步骤 一些重要的数据结构MSG 包含一个消息的全部信息 是消息发送的格式 定义为 typedefstructtagMSG HWNDhwnd UINTmessage WPARAMwParam LPARAMlParam DWORDtime POINTpt MSG Windows应用程序组成及编程步骤 一些重要的数据结构WINDCLASS 包含一个窗口类的全部信息及属性 定义为 typedefstructtagWNDCLASS UINTstyle 窗口类的样式 一般为0WINDPROClpfnWndProc 指向窗口函数的指针IntcbClsExtra 分配在窗口类结构后的字节数IntcbWndExtra 分配在窗口实例后的字节数HINSTANCEhInstance 定义窗口类的应用程序实例句柄HICONhIcon 窗口类的图标HCURSORhCursor 窗口类的光标HBRUSHhbrBackground 窗口类的背景刷LPCTSTRlpszMenuName 窗口类菜单资源名LPCTSTRlpszClassName 窗口类名 WNDCLASS Windows应用程序组成及编程步骤 一些重要的数据结构POINT 定义了屏幕上或窗口中的一个点的X和Y坐标 定义为 typedefstructtagPOINT LONGx LONGy POINT Windows应用程序组成及编程步骤 一些重要的数据结构RECT 定义了一个矩形区域及其左上角和右下角的坐标 定义为 typedefstructtagRECT LONGleft 矩形框左上角x坐标LONGtop 矩形框左上角y坐标LONGright 矩形框右下角x坐标LONGbottom 矩形框右下角y坐标 RECT 应用程序举例 例 创建应用程序框架 本例的目的在于说明创建Windows应用程序的方法及过程 include 窗口函数说明LRESULTCALLBACKWndProc HWND UINT WPARAM LPARAM 初始化窗口类 WinMain函数说明intWINAPIWinMain HINSTANCEhInstance HINSTANCEhPrevInst LPSTRlpszCmdLine intnCmdShow HWNDhwnd MSGMsg WNDCLASSwndclass charlpszClassName 窗口 窗口类名charlpszTitle My Windows 窗口标题名 窗口类的定义wndclass style 0 窗口类型为缺省类型wndclass lpfnWndProc WndProc 窗口处理函数为WndProcwndclass cbClsExtra 0 窗口类无扩展wndclass cbWndExtra 0 窗口实例无扩展wndclass hInstance hInstance 当前实例句柄wndclass hIcon LoadIcon NULL IDI APPLICATION 窗口的最小化图标为缺省图标wndclass hCursor LoadCursor NULL IDC ARROW 窗口采用箭头光标wndclass hbrBackground GetStockObject WHITE BRUSH 窗口背景为白色wndclass lpszMenuName NULL 窗口中无菜单wndclass lpszClassName lpszClassName 窗口类名为 窗口示例 窗口类注册if RegisterClass 不使用该值 显示窗口ShowWindow hwnd nCmdShow 绘制用户区UpdateWindow hwnd 消息循环while GetMessage 消息循环结束即程序终止时将信息返回系统 窗口函数LRESULTCALLBACKWndProc HWNDhwnd UINTmessage WPARAMwParam LPARAMlParam switch message caseWM DESTROY PostQuitMessage 0 调用PostQuitMessage发出WM QUIT消息default 默认时采用系统消息默认处理函数returnDefWindowProc hwnd message wParam lParam return 0
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!