第二章 编写第一个WINDOWS程式
编写第一个WINDOWS程式
现在是开始写些程式的时候了。为了便於对比,让我们以一个非常短的Windows程式和一个简短的文字模式程式开始。这会帮助我们找到使用开发环境并感受建立和编译程式机制的正确方向。
文字模式(Character-Mode)模型
程式写作者们喜爱的一本书是《The C Programming Language》(Prentice Hall,1978年和1988年),由Brian W. Kernighan和Dennis M. Ritchie(亲切地称为K&R)编著。该书的第一章以一个显示「hello, world」的C语言程式开始。
这里是在《The C Programming Language》第一版第6页中出现的程式:
| main () { printf ("hello, world\n") ; } |
以前C程式写作者在使用printf等C执行期程式库函式时,无需先宣告它们。但这是90年代,我们愿意给编译器一个在我们的程式中标出错误的机会。这里是在K&R第二版中修正的程式:
| #include <stdio.h> main () { printf ("hello, world\n") ; } |
该程式仍然是那么短。但它可通过编译并执行得很好,但当今许多程式写作者更愿意清楚地说明main函式的返回值,在这种情况下ANSI C规定该函式必须返回一个值:
| #include <stdio.h> int main () { printf ("hello, world\n") ; return 0 ; } |
我们还可以包括main的参数,把程式弄得更长一些,但让我们暂且这样就好了-包括一个include宣告、程式的进入点、一个对执行期程式库函式的呼叫和一个return语句。
同样效果的Windows程式
Windows关於「hello, world」程式的等价程式有和文字模式版本完全相同的元件。它有一个include宣告、一个程式进入点、一个函式呼叫和一个return语句。下面便是该程式:
| /*------------------------------------------------------------------ HelloMsg.c -- Displays "Hello, Windows 98!" in a message box (c) Charles Petzold, 1998 --------------------------------------------------------------------*/ #include <windows.h> int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0); return 0 ; } |
在剖析该程式之前,让我们看一下在Visual C++ Developer Studio中建立新程式的方式。
首先,从 File 功能表中选 New 。在 New 对话方块中,单击 Projects 页面标签,选择 Win32 Application 。在 Location 栏中,选择一个子目录,在 Project Name 栏中,输入该专案的名称,此时该名称是 HelloMsg ,这便是在 Location 栏中显示的目录的子目录。 Create New Workspace 核取方块应该勾起来, Platforms 部分应该显示 Win32 ,选择 OK 。
将会出现一个标题为 Win32 Application - Step 1 Of 1 的对话方块,指出要建立一个 Empty Project ,并按下 Finish 按钮。
从 File 功能表中再次选择 New 。在 New 对话方块中,选择 Files 页面标签,选择 C++ Source File 。 Add To Project 核取方块应被选中,并应显示 HelloMsg 。在 File Name 栏中输入 HelloMsg.c ,选中 OK 。
现在您可输入上面所示的HELLOMSG.C档案,您也可以选择 Insert 功能表和 File As Text 选项从本书附带的CD-ROM上复制HELLOMSG.C的内容。
从结构上说,HELLOMSG.C与K&R的「hello,world」程式是相同的。表头档案STDIO.H已被WINDOWS.H所代替,进入点main被WinMain所代替,而且C语言执行时期程式库函式printf被Windows API函式MessageBox所代替。然而,在程式中有许多新东西,包括几个陌生的大写识别字。
让我们从头开始。
表头档案
HELLOMSG.C以一个前置处理器指示命令开始,实际上在每个用C编写的Windows程式的开头都可看到:
#include <windows.h>
WINDOWS.H是主要的含入档案,它包含了其他Windows表头档案,这些表头档案的某些也包含了其他表头档案。这些表头档案中最重要的和最基本的是:
WINDEF.H 基本型态定义。
WINNT.H 支援Unicode的型态定义。
WINBASE.H Kernel函式。
WINUSER.H 使用者介面函式。
WINGDI.H 图形装置介面函式。
这些表头档案定义了Windows的所有资料型态、函式呼叫、资料结构和常数识别字,它们是Windows文件中的一个重要部分。使用Visual C++ Developer Studio的 Edit 功能表中的 Find in Files 搜索这些表头档案非常方便。您还可以在Developer Studio中打开这些表头档案并直接阅读它们。











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面