- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 C语言高级编程技术 §8.1 递归程序设计 §8.2 文本的屏幕输出和键盘输入 §8.3 图形程序设计 §8.4 发声技术 §8.5 Linux操作系统下的C语言编程基础 §8.6 Windows操作系统下的C语言编程基础 §8.7 综合应用开发实例 2、消息的来源 Windows发送给应用程序的消息是很多的,可以将消息按来源分为大体的四种:用户产生的消息、其它应用程序产生的消息、应用程序自身产生的消息以及来自系统的消息。 3、消息的传递 消息产生之后,由Windows系统将消息传送到相应的地方。Windows内部有两类系统缓冲区:应用程序消息队列缓冲区和系统消息队列缓冲区。凡是鼠标和键盘产生的消息,都放在系统消息队列缓冲区中;应用程序产生的消息则放在应用程序消息队列缓冲区中。可以通过Windows的API(应用程序接口)中的函数GetMessage()或PeekMessage()从消息缓冲区中获取消息。 4、消息的处理 调用GetMessage()或PeekMessage()函数从消息缓冲区取出消息后,应用程序用DispatchMessage()函数将该消息送给适当的窗口函数进行处理。 二、重要的Windows术语 1、消息 2、窗口 3、回调函数 4、窗口函数 5、Windows API 6、PASCAL调用方式 7、句柄 三、编写基本的Windows应用程序 1、WinMain函数 WinMain函数是所有Windows应用程序的人口。WinMain函数的格式如下: int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) L HINSTANCE hinstance:HINSTANCE是一个句柄类型的标识符。变量hinstance是一个整数,用于标识程序实例。 l???????? HINSTANCE hPreInstance:此参数基本不用了。它只是为早期的Windows版本服务的。 l???????? LPSTR lpCmdLine:是一个指向字符串的指针。 int nCmdShow:决定了窗口在初始显示时的状态。 WinMain函数必须执行以下几个步骤: (l)定义窗口类; (2)注册窗口类; (3)创建该类窗口; (4)显示窗口; (5)运行消息循环。 2、定义和注册窗口类 Windows的每一个应用程序都要有一个主窗口。每个程序的主窗口不尽相同。每一个窗口都要有一个窗口类。窗口类规定了此类窗口所具有的风格、字体、图标等信息。窗口类是相对于结构体WNDCLASSEX的一个结构体变量。 定义了窗口类后,就调用函数RegisterClassEX()来注册这个窗口类。只有注册了窗口类,才能创建新的窗口。 * 一、递归与递归程序设计 递归分直接递归和间接递归两种。 直接递归调用:若在一个函数的定义中出现了对自身的调用,称之为直接递归; 间接递归调用:若一个函数f的定义中包含了对函数g的调用,而g的实现过程又调用了f,即函数调用形成了一个环状调用链, 这种方式称之为间接递归。 funa() { ... funa(); ... } funa() { ... funb(); ... } funb() { ... funa(); ... } 直接递归调用 间接递归调用 二、递归实例 例1:编写一个递归函数,求n的阶乘值n!。 若用fact(n)表示n的阶乘值,根据阶乘的数学定义可知: long fact(int n) { long m; if (n == 0) return(1); else { m=n*fact(n-1); return (m); } } 要使用递归技术进行程序设计,首先必须将要求解的问题分解成若干子问题,这些子问题的结构与原问题的结构相同,但规模较原问题小。由于子问题与原问题结构相同,因而它们的求解过程相同,在进行程序设计时,不必再仔细考虑子问题的求解,只需借助递归机制进行函数自身调用加以实现,然后利用所得到的子问题的解组合成原问题的解即可;而递归程序在执行过程中,通过不断修改参数进行自身调用,将子问题分解成更小的子问题进行求解,直到最终分解成的子问题可以直接求解为止。 一个问题要采用递归方法来解决时必须符合以下三个条件: (1)能将问题转化为一个新的问题,而这个新问题的解决方法与原问题的解法相同,
您可能关注的文档
- 重庆大学通信工程学院数字通信原理课件第五章第五节 多进制数字调制与解调原理.ppt
- 重庆大学通信工程学院数字通信原理课件第五章第一节 引言.ppt
- 重庆大学通信工程学院数字通信原理课件第一章 概论.ppt
- 重庆大学土木工程学院安装原理课件第1章 绪论.ppt
- 重庆大学土木工程学院安装原理课件第2章 设备基础.ppt
- 重庆大学土木工程学院安装原理课件第3章 安装工程精度及分析.ppt
- 重庆大学土木工程学院安装原理课件第4章 设备振动与平衡.ppt
- 重庆大学土木工程学院安装原理课件第5章 静置设备.ppt
- 重庆大学土木工程学院安装原理课件第6章 动荷设备.ppt
- 重庆大学土木工程学院安装原理课件第7章 典型特种设备.ppt
- 重庆工商大学程序设计基础(C语言)课件第二章 函数.ppt
- 重庆工商大学程序设计基础(C语言)课件第六章 文件.ppt
- 重庆工商大学程序设计基础(C语言)课件第七章 常用数据结构及其程序设计.ppt
- 重庆工商大学程序设计基础(C语言)课件第三章 程序控制结构语句与数组.ppt
- 重庆工商大学程序设计基础(C语言)课件第四章 指针.ppt
- 重庆工商大学程序设计基础(C语言)课件第五章 结构体共用体枚举.ppt
- 重庆工商大学程序设计基础(C语言)课件第一章 概述.ppt
- 重庆工商大学程序设计基础(vfp)课件第八章 报表与标签设计.ppt
- 重庆工商大学程序设计基础(vfp)课件第二章 Visual FoxPro 6.0系统概述.ppt
- 重庆工商大学程序设计基础(vfp)课件第九章 菜单与工具栏设计.ppt
最近下载
- 高中英语选择性必修4优质课公开课Unit 4 Project.pdf
- 精品解析:山东省济宁市实验中学2024-2025学年高一上学期12月月考历史试题(原卷版).docx VIP
- DB4413T 29-2022城市园林绿化养护管理规范.docx
- 2025青鸟消防JBF-11S控制器使用说明书.docx VIP
- 中国古代神话故事《天帝颛顼》.doc VIP
- 2019年输变电工程设计竞赛创新亮点.pdf
- (人教版2024)八年级地理上册新教材解读课件.pptx
- 2025年新人教版三年级上册语文全册教案.pdf
- 高中英语2025届高考高频词汇(共 688个 ).doc VIP
- 耐药结核病全口服短程治疗专家共识(2025)解读PPT课件.pptx VIP
文档评论(0)