WindowsSDK入门浅谈—写给初学者

WindowsSDK入门浅谈—写给初学者,第1张

WindowsSDK入门浅谈—写给初学者,第2张

如果你是编程初学者,如果你刚学完一门C语言的课程。你可能会有点失望和怀疑:这是C语言吗?可以用它做软件?我无法想象Windows桌面上一个普通的窗口是如何出现在我眼前的。C语言的计算机操作和Windows编程确实差距很大。你可能读过《编程视窗》的前三章,但是你对hellowin程序非常困惑。希望hfire的这篇文章可以帮助你填补这个空白,提供一些学习经验。为什么要说呢?因为hfire了解不够,肯定会有错误。请批评指正。

程序运行时环境和操作系统

当你用Turbo C写一个C程序,然后编译链接,就得到一个可执行文件。在Dos的命令提示符下键入这个exe文件的文件名,然后就会被执行。表面上如此,仅此而已。作为一个应用程序员,我们不用去想背后是什么,但是有一个简单的事实我们必须要清楚:程序不只是自己运行,它需要运行时环境的配合。考虑用printf函数显示字符串的过程。很明显,这个函数不是你自己写的。也许你听说过C运行时库,C运行时库。没错,你的程序只能在上面运行。printf的代码在C运行时库中,所以无论它是如何实现的,你都可以很容易地调用它。但是C运行时库也会调用一些其他的函数,这些函数是操作系统提供的,被调用的中断服务程序,操作系统的中断服务程序会进一步调用BIOS的中断服务程序。可以看出,程序的运行是由层层服务支撑的。在这里,操作系统起着非常重要的作用。它提供了程序员可以直接使用的例程,也可以称为应用编程接口(API)。Dos一般没有API,Dos的编程接口由中断服务程序服务。在Windows中编程经常涉及到处理API。32位Windows有2000多个API。一方面,它提供了强大的编程接口;另一方面也让新手望而却步。

Windows操作系统的基本知识

Windows是一个单用户多任务图形操作系统。所谓单用户,是指同一时间只有一个用户(一个人)可以通过Windows系统操作电脑;多任务意味着多个进程可以同时执行。既然Windows系统有这些特点,那么Windows编程也会体现这些特点。为了多任务,Windows程序使用消息机制。只有有我消息的时候我才工作,没有我消息的时候我把CPU让给别人。为了图形化,Windows程序必须显示窗口并绘制自己的客户区,甚至显示字符串也必须绘制在客户区上。还有一点,Windows广泛使用动态链接。Windows API放在动态链接库中,程序运行时可以调用。在Windows 98中,有32位的gdi32.dll、user32.dll、kernel32.dll和16位的gdi.exe、user.exe和krnl386.exe,API存在于这些动态链接库中。

什么是Windows SDK

也就是SDK software develope kit,里面包含了Windows软件开发的文档和API函数的输入库和头文件(因为API在动态链接库里面,这些动态链接库是系统的一部分,所以不再需要提供,但是输入库和头文件是必须的,这样API函数才能在你的程序中使用)。早期的SDK是一个单独分发的包,现在已经包含在Visual C++等开发环境中。如果安装了VC++,就可以开始写Windows程序了。随着Windows系统的发展,SDK的内容越来越多,我们只要掌握最基础的方面就可以了。至于其他的专业课题,我会根据自己的兴趣和技术方向进一步研究。

不要被第一个Windows程序吓到

如果你已经开始,你的教科书应该是经典编程窗口(petzold)或类似的书。但不管是哪本书,一开始你都会面对一个基本的Windows SDK程序,有几十行。虽然不长,但比C版的hello world长多了。更糟糕的是,它充满了奇怪的变量类型和常量定义,但先不要被它吓到,让我们看看里面有什么。首先会有一个#include。这并不奇怪。和#inclde没什么区别。然后是函数声明:lresult回调wndproc (hwnd,uint,wparam,lparam);我有点疑惑,几个“新词”一下子就出来了,而且函数名前面还有两个修饰语,以前没遇到过。幸运的是,我们也可以认识到这是一个函数声明。往下看,是WinMain函数和一堆生词。我猜你已经抑郁了。这个节目真的很难再看懂了,看不懂也没关系。如果看不下去了,可以看看书上的解释。本文并不打算完整地分析这个程序。hfire不可能有petzold的好。在这里,hfire会帮你分析一些奇怪的事情。
先说Windows的数据类型。虽然这些数据类型看起来很奇怪,但实际上是由c的基本数据类型定义的,比如UINT表示无符号INT,PSTR表示指向字符串的指针。估计是char *。Windows中有很多系统定义的结构,比如WNDCLASS,MSG等。这些东西看多了,自然就明白了。Windows还有一个重要的概念,句柄。可以通过句柄操纵窗口对象。HWND、HINSTANCE、HDC等。都是把手。
告诉我更多关于Windows程序结构的信息。一般有一个WinMain函数作为程序的入口点,在WinMain中定义窗口类来循环消息。消息循环是普通的while循环,在其中接收和分发消息。然后是窗口函数WndProc,名字可以自己设置。其中使用一个大的开关结构来检索消息,并在每种情况下编写处理消息的代码。最简单的Windows SDK程序只需要写这两个函数。当您的程序很长时,您应该编写一个特定的消息处理代码,作为处理消息时调用的函数。你甚至可以用C++写程序。当你熟悉了这个结构,你就可以随意弹奏了。
其他的我不想说太多。学习SDK很重要,不要期望一开始就弄清楚每一行代码。

学习方法

当然更多的是编程。每个题目写一个。从窗口开始,文本显示到图形显示、控件和对话框。多写点就能理解Windows编程的内涵。当你学会了第一部分,你就可以写一个综合程序了。最后你会发现你可以写一个很长的程序。1000多行不算太长,但在当时学C的时候是不可想象的。去一些专门的网站也很重要,比如VC知识库(www.vckbase.com)和VC之路(有很好的教程,但是现在网站上的东西都没了,正在恢复),www.csdn.net也是个不错的地方。

几种Windows编程方法的辨析及其他

很多初学者容易把Windows编程和VC++混淆。打开VC++的新项目,可以看到VC++支持多种项目。包括命令行、MFC和Win32应用程序,即SDK程序。用VC++不一定是写SDK程序,也不一定是用VC++写SDK程序。不仅有写Windows程序的SDK方法,还有MFC、OWL等类库和VB、VB、Delphi等快速开发工具。这些方法各有各的用途。毫无疑问,使用SDK是最麻烦的事情。我们不学SDK是为了用它来编程软件,虽然可以,主要是为了对Windows编程有一个清晰的认识,让你在使用MFC的时候,能有一个“胸中有隙”。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » WindowsSDK入门浅谈—写给初学者

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情