飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3042|回复: 1

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

[复制链接]
  • TA的每日心情
    奋斗
    2017-4-20 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-6-5 16:57:25 | 显示全部楼层 |阅读模式
    本来是打算将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时间,而不是等候应用程序时间片的结束。


       好了,初步介绍就到这里了,马上就要下班了,下面再介绍操作系统的应用程序编写框架,以及如何通过注册窗口类来实现一个窗口

    评分

    参与人数 1威望 +8 飘云币 +8 收起 理由
    whypro + 8 + 8 您的贴子很精彩,希望能再次分享!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-6-6 00:50:34 | 显示全部楼层
    期待你的文章!/:good
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表