开始

第一章  开始
    首先,一开头就给出了本书要介绍的内容--当然是Windows下编写程序的方法。其次,程序用C语言编写,并且使用API。
明白了做什么的目标后,接着就对使用本书的读者提出了三个先决条件。
1. 从用户角度熟悉Windows。
2. 了解C语言。
3. 安装适用进行Windows编程的32位的C语言编译器和开发环境。(书中提到的是Microsoft Visual C++ 6.0)
          1.1  Windows环境
Windows98和Windows NT是32位抢占式多任务及多线程图形操作系统。

Windows中使用Windows函数的方式与使用C库函数的方式相同。区别在于C库函数的机器代码链接到程序的代码中,而Windows函数的代码位于程序之外的DLL中。
          1.2  Windows编程选项
"经典的" Windows编程方法:C语言+Windows API。
          1.3  编写第一个Windows程序
#include

int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hPrevinstance,
PSTR szCmdLine,int iCmdShow)
{
 MessageBox(NULL,TEXT("Hello,Windows 98!"),TEXT("HelloMsg"),0);

 return 0;
}

每个用C编写的Windows程序头部都可以看到:#include
Windows.h是主要的包含文件,它包含了其他的Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是:
1. WINDEF.H  基本类型定义;
2. WINNT.H   支持Unicode的类型定义;
3. WINBASE.H 内核函数;
4. WINUSER.H 用户接口函数;
5. WINGDI.H   图形设备接口函数。

Windows程序的入口点是WinMain。
int WINAPI WinMain(HINSTANCE Hinstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
它在WINBASE.H中声明:
Int
WINAPI
WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR szCmdLine,
int iCmdShow
);
第三个参数在WINBASE.H中定义为LPSTR,将它改为PSTR。这两种数据类型都定义在WINNT.H中,作为指向字符串的指针。LP前缀代表"长指针",这是16位的Windows的一个创造。sz表示"以零结束的字符串"。
WinMain函数声明为返回一个int值。WINAPI标识符在WINDEF.H定义,语句如下:
#define WINAPI _stdcall
该语句指定了一个调用约定,包括如何生成机器代码以在堆栈中放置函数调用的参数。许多Windows函数调用声明为WINAPI。
 WinMain的第一个参数被称为"实例句柄"。
句柄:应用程序用来识别某些事情的数字。
WinMain的第二个参数总是NULL(定义为0)。
WinMain的第三个参数是用于运行程序的命令行。某些Windows应用程序使用这个参数以在程序启动时将文件加载到内存。WinMain的第四个参数指出程序初始显示的方式。

MessageBox函数用于显示短信息。它被认为是一个对话框。MessageBox的第一个参数通常是窗口的句柄;第二个参数是在消息框主体中显示的字符串,第三个参数是出现在消息框标题栏上的字符串。
MessageBox的第四个参数可以是在WINUSER.H中定义的一组以前缀MB_开始的常数的组合。
以下常数以指出希望在对话框中显示的按钮:
#define MB_OK                       0x00000000L
#define MB_OKCANCEL               0x00000001L
#define MB_ABORTRETRYIGNORE    0x00000002L
#define MB_YESNOCANCEL           0x00000003L
#define MB_YESNO                   0x00000004L
#define MB_RETRYCANCEL           0x00000005L
使用C语言的"或"(|)运算符将上面显示的一个常数与代表默认按钮的常数组合:
#define MB_DEFBUTTON1      0x00000000L
#define MB_DEFBUTTON2      0x00000100L
#define MB_DEFBUTTON3      0x00000200L
#define MB_DEFBUTTON4      0x00000300L
还可以使用一个常数指出消息框中图标的外观:
 #define MB_ICONHAND          0x00000010L
 #define MB_ICONQUESTION      0x00000020L
 #define MB_ICONEXCLAMATION 0x00000030L
 #define MB_ICONASTERISK      0x00000040L
其中某些图标有代替名称:
 #define MB_ICONWARNING          MB_ICONEXCLAMATION
 #define MB_ICONERROG             MB_ICONHAND
 #define MB_ICONINFORMATION      MB_ICONASTERISK
 #define MB_ICONSTOP               MB_ICONHAND
在上面程序中,MessageBox返回数值1,但更严格地说,它返回IDOK,IDOK在WINUSER.H中定义,等于1。根据在消息框中显示的其他按钮,MessageBox函数还可以返回其他值。

你可能感兴趣的:(windows,winapi,microsoft,语言,编程,图形)