Windows SDK编程(Delphi版) 之 应用基础,楔子

简介:
本来是打算将Windows API一日一练,往下讲解的,但是,那个东西貌似又没啥可讲的。不熟悉SDK的编程,那些东西讲了用处也不大,所以,就打算讲讲这个。
   Windows SDK编程,这个东西应该追溯到98时代了。而且如果要 学习 SDK之类的东西的话,还是去找Win98编程之类的书籍来看,现在的书籍专门讲SDK的基本上没有了,翻到手的都是.net框架,VCL使用那些东西了,对于底层的运作等等,讲解甚少。我这里的所有讲解,都是依托《Win98 程序 设计从 入门 到精通》这本书为蓝本进行Delphi版本的讲解。本书用来学习SDK是非常不错的,现在这个书已经绝版了,可以在网上搜搜电子版本的。
   WinMain入口 函数
      做SDK开发,每个Windows程序都要有一个入口位置,也就是Windows开始执行的地方。学过C 语言 的,都晓得,C的入口为main函数,这个与main的效果是一样的,只是他标记了这是Windows程序,也就是说是可以有窗体的。WinMain函数的某些特征注定了他与应用程序的其他函数不同,首先他必须使用WINAPI的调用约定,这个在Delphi中就是Stdcall的约定方式,该函数的返回类型是int类型。
   窗口过程
      用了这么长时间的Windows,或者说学了那么长时间的编程,无论是MFC,还是VCL,都应该知道Windows是通过消息驱动来实现各种操作响应的。这个窗口过程就是专门用来处理各种消息的,所有的消息驱动操作都在本过程中实现。只要一个窗口指定了窗口过程,操作 系统 就会调用它。每个窗口都有一个默认的窗口过程,如果你不指定窗口过程,系统就会调用它默认的进行消息处理,操作系统通过窗口函数,来接受用户的消息和反馈用户的对应各种消息的操作给系统。窗口函数的返回类型为LRESULT,其实就是一个整数,该函数的返回必须用CallBack标记表示它是一个系统回调函数。典型的一个窗口过程中,包含了对N多消息的处理的,一般是一个很大的Case end 条件结构来针对各种消息进行处理。但是在很多时候,我们不想响应任何消息而仅仅交给系统去处理,这时,我们就可以调用默认的窗口过程处理了。但是这个窗口过程是如何产生出来的呢,那么就有另一个概念产生了, 注册 一个窗口类,一个窗口类对应着一个窗口过程,这应该也算得上是一个面向对象的方式吧,就是说,比如一个按钮类,他的消息响应处理窗口过程应该是同一个。
   窗口类
      窗口类定义窗口的类型,比如按钮窗口,Form窗口,编辑框窗口等,不同的窗口类有不同的形态外观,和不同的用法也就注定着有不同的窗口过程。
一个Windows程序,一般都有一个窗口,所以开始执行windows程序时,一般会定义并注册一个窗口类(这个不是指Delphi等面向对象中的那个类,而是指样式或者类型哦)。注册一个窗口类的目的是告诉操作系统本窗口的类型外观以及功能,这个窗口类就和前面讲的窗口过程关联起来了。不过注册窗口类,并不是建立一个窗口。注册窗口类,执行在系统内部增加一种窗口样式,以便于以后能够随时通过这个样式来生成一个新的窗口。     
   消息循环

       消息循环式从应用程序的消息队列中取回消息,前面讲过了,Windows是消息驱动的所以,所有的Windows程序内部都要建立一个消息循环,此循环从应用程序的消息队列中读取任何未解决的消息,然后再将它送给Windows,这样Windows就会调用相应的窗口函数来对消息进行处理了。书上说,这个过程的部分原因是想将控制返回到操作系统中,以使调度表能合理的分配CPU时间,而不是等候应用程序时间片的结束。



本文转自 不得闲 博客园博客,原文链接http://www.cnblogs.com/DxSoft/archive/2010/06/07/1753111.html:   ,如需转载请自行联系原作者

相关文章
|
2月前
|
JSON Serverless API
Serverless 应用引擎常见问题之通过SDK修改调度器报错如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
25 0
|
3月前
|
Java API 开发工具
支付与银行业线上客户协议应用中的DocuSign集成方式选择——SDK和API
跨境支付公司和Docusign进行集成时,碰到问题时的解决方案。分别用SDK和API集成后的各自使用体验。
48 2
支付与银行业线上客户协议应用中的DocuSign集成方式选择——SDK和API
|
5月前
|
开发工具 Android开发
应用研发平台EMAS的用户反馈SDK确实使用了WebView
应用研发平台EMAS的用户反馈SDK确实使用了WebView
41 6
|
10天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用阿里云API或SDK从函数计算调用ECS实例的服务如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
37 4
|
11天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里函数中sdk可以被中层引用如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
16 0
|
14天前
|
API C++ Windows
windows编程入门_链接错误的配置
windows编程入门_链接错误的配置
19 0
|
4月前
|
API Python Windows
python3应用windows api对后台程序窗口及桌面截图并保存的方法
python3应用windows api对后台程序窗口及桌面截图并保存的方法
112 1
|
2月前
|
数据可视化 数据库 C++
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
|
3月前
|
Windows
火山中文编程 -- 第一个windows程序
火山中文编程 -- 第一个windows程序
12 0
|
3月前
|
Dart Shell 开发工具
解决windows安装Flutter时出现Unknown operating system. Cannot install Dart SDK.问题
解决windows安装Flutter时出现Unknown operating system. Cannot install Dart SDK.问题