白手起家Win32SDK应用程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《白手起家Win32SDK应用程序》(1-4篇)-[※文章学习区]
2007年10月10日
1说在前面
由于VC6及MFC的特点,我们许多人从标准C++学习到VC6MFC应用程序的编程学习的过度会有一个很大的夸跃,从而感到非常的吃力。
究其原因之一:MFC类库设计虽然精巧,但我们在使用MFC设计程序时,会发现MFC到处是API 函数的影子。MFC并没有象Delphi的VCL类库,VB的控件库一样封装得让人几乎完全不用知道还有Win32API函数及其操作原理,所以要想利用VC6的MFC编程,我认为就一定要先学习如何直接用Win32API函数来编程。对API编程中的一些关键的概念和原理要有一定认识,这样才会有一个比较平滑的过渡。以上就是我写这个系列的初衷。
2我假设你已有的知识:
这里我假设你已经掌握了如下的知识,如果你在如下方面知识有点不太清楚,那要去补一补罗,否则你看到相关的内容时会有麻烦的。
下面说是我对你知识的假设:
2.1Windows系统的文件、文件夹、路径的概念
2.2C语言的基本知识(基本以等级考试二级C语言为准,还要有所扩充)
2.2.1指针的概念。
2.2.2函数指针概念。
2.2.3各种自定义类型(最重要的是struct类型)的概念。
2.2.4要知道函数的各种参数传递形式(值、地址、引用传递)。
2.2.5typedef及其应用。
2.2.6#include及其应用。
2.2.7十进制、二进制、十六进制。
2.2.8按位与、或、非运算的实质。
2.2.9宏定义概念、使用及意义。
(每个人总是学完了C或C++语法后才会开始用VC6进行Windows编程学习的。但是你的基础又是如何呢?这是一个关键。因此我对你的C知识做了具体的假设。)
2.3会安装VC6.0并安装到一台机上
2.4VC6编译界面的各组成部分及基本操作(至少会用VC6写控制台程序)。
2.5VC6调试中至少要会设置断点哦。
(呵呵!我的要求不过份吧!)
3还必须预备的知识:
以上知识是你看本系列的前提,不过我还要给你预备一下我们再这个阶段学习中会遇到的新东西。
3.1你将会接触到的Win32API函数库:
以前的DOS下或Windows的控制台程序下,你要在显示器上输出文字,要用printf(),或cout 的函数对象来完。但如果你要显示一个图形或图象或为你的程序设计一个图形化的操作界面等等的,那可就惨了,一切都要你自已完成。复杂得很了!(唉!谁叫DOS是字符界面的操作系统呢!)
现在好了,在Windows下编程你可就轻松得多了。因为Windows操作系统都为我们准备好了,它提供给我们多达数千个函数(啊!我要昏倒了。这么多的函数要学。),我们通过这些函数来操作Windows 系统提供给我们的各种功能。比如我要在桌面上创建并显示一个窗口。就只要调用几个相关的被称为API 的函数,让Windows来帮助我们完成这些事。我们是通过这些函数与Windows系统交互的,所以这些函数被称作Win32应用程序接口函数,简称Win32API函数。
请不用害怕哟!其实,这么多的函数我们不必都马上一一学过,只要掌握了不多的具有代表性的函数的使用方法,并知道大体API函数都提供了哪些功能就可以了。以后要用时再去查。
Window拥有现成的各种各样的系统功能,供我们的程序调用。那么又是通过什么方式来调用这些系统功能呢?原来,Window还现成提供一个接口,好让我们的程序来使用这些系统功能,这个结口就是Win32API函数了(注:API是应用程序接口的英文缩写)。Win32API函数是我们的应用程序与Windows 系统交互的唯一途径。
我并不打算这时就介绍任何一个具体的API函数。你现在只要知道你又要接触一个函数库了——被称为Win32API的函数库,如同你以前所学的C/C++函数库。
哈哈,这真是太好了,我们不用再象DOS一样,自已来完成程序界面的绘制了。我们现在又增加一个全新的函数库,只要调用几个相关API函数,剩下的一切由Windows来完成就可以啦!(当然还有很多其它功能。)
3.2“新”的数据类型:
学完C、C++之后,我们就可以开始进入VC6的Windows编程学习了。但是在接下来的学习中我们会发现在Windows编程中有许多“新”的数据类型。看下面:
BOOL、BYTE、INT、UINT、WORD、DWORD、FLOAT、CHAR、LPSTR、HINSTANCE、HWND、HMENU、HICON等等。
你看这些大写的数据类型,你以前有见过吗?还有很多哦!我们以后的学习过程中还会见到的。(呵
呵!你可要有思想准备了!)
这真是让我们初学者迷惑呀!难道VC6中对C/C++的基本数据类型又有重大的扩充了吗?
其实不用害怕,只是用新瓶装旧酒而已了。在VC6的windef.h头文件中已有这些定义:
typedef int BOOL;
typedef unsigned char BYTE;
typedef int INT;
typedef unsigned int UINT;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef float FLOAT;
在winnt.h中有
typedef long LONG;
typedef char CHAR;
typedef CHAR*LPSTR,*PSTR;
你看其中(粗体字)CHAR只不过是char的别名而已,也就是说它们是等价的。只要你包含了相关的头文件,然后你就可以这样申明一个变量:
INT i;//等同于int i;
CHAR a;//等同于char a;