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:   ,如需转载请自行联系原作者

相关文章
|
存储 人工智能 监控
大牛直播SDK在四足机器人和无人机巡检中的创新应用方案
在工业4.0和智能化浪潮下,传统巡检方式正经历深刻变革。四足机器人与无人机凭借灵活机动性和高效巡检能力崭露头角,而大牛直播SDK则赋予其实时直播与智能互动功能。本文介绍大牛直播SDK的核心优势、在四足机器人和无人机巡检中的应用方案,以及技术实现要点和未来展望,展示智能巡检的广阔前景。
543 6
|
10月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
344 11
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1147 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
监控 开发工具 Android开发
ARMS 用户体验监控正式发布原生鸿蒙应用 SDK
阿里云 ARMS 用户体验监控(RUM)推出了针对原生鸿蒙应用的 SDK。SDK 使用 ArkTS 语言开发,支持页面采集、资源加载采集、异常采集及自定义采集等功能,能够全面监控鸿蒙应用的表现。集成简单,只需几步即可将 SDK 接入项目中,为鸿蒙应用的开发者提供了强有力的支持。
954 126
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1050 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
705 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
API 开发工具 C#
神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
本文将介绍,ClkLog针对神策不支持全埋点的客户端实现用户访问基础统计分析 1。
神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
|
网络协议 API Windows
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
[原创]用MASM32编程获取windows类型
[原创]用MASM32编程获取windows类型
|
JavaScript 前端开发 API
MASM32编程通过WMI获取Windows计划任务
MASM32编程通过WMI获取Windows计划任务