本周开始自学windows编程,选的教材是《windows程序设计第五版》(珍藏版),没钱买书,只能下了pdf的书籍来看。 《windows程序设计第五版》(珍藏版)共分3个大部分,分别是:1)基础知识[1-12章] 2)关于图的那些事[13-18章] 3)高级主题[19-23章]。本笔记主要基于32位系统
第一章 起步
1.1widows环境
1.1.1 windows简史
主要介绍了MS-DOS至windows98的发展史。(略过)
1.1.2 windows的方方面面
windows操作系统的任务管理系统。(略过)
1.1.3 动态链接
Windows 运作机制的核心是一个称作“动态链接”的概念。Windows 提供了应用程序丰富的函数,大多数用于用来实现用户界面和在屏幕上显示文字和图形。这些函数都是在动态链接库(Dynamic Linking Library,DLL)里实现的。这些动态链接库都带有.DLL后缀或者有时是带有.EXE 后缀的文件,在 Windows 98 中通常放在\WINDOWS\SYSTEM 子目录下,在 Windows NT中通常於\WINNT\SYSTEM 和\WINNT\SYSTEM32 子目录下。
windows编程主要涉及3个动态链接库,分别代表了windows的3个主要的子系统,分别是内核(kernel)、用户(user)以及GDI(Graphics Device Interface,图形设备接口)。内核对应的动态连接库是kernel32.dll ,主要负责操作系统的传统工作,包括内存管理,文件管理等;用户对应的动态链接库为user32.dll,主要负责所用的窗口管理;GDI对应的动态连接库是gdi32.dll,负责在屏幕或打印机上显示文本和图形。
1.2 windows编程选项
1.2.1 API及内存管理模式
核心就是Win32支持Win32 API并向下兼容Win16API。
1.2.2 语言选择
C语言和基本API不是编写windows程序的唯一方式,但这一方式可以为windows程序提供最佳的性能、最强的功能和最大的多样性。(我一直在学C,所以这一次无可厚非的选择C)
1.2.3 编程环境
这个可以自己选择,不过我推荐Visual C++系列IDE。
1.2.4 API文档
这个你懂的,你所需要的所有API函数的用法都在这个文档,在哪找?去MSDN。
1.3 你的第一个windows程序
1.3.1 字符模式
这个模式相信大家都很清楚吧。。。
#include <stdio.h>
int main()
{
printf("hello,world!\n");
return 0;
}
这个程序大家应该也很清楚吧。
1.3.2 windows对应程序
跟学C一样,第一个不外乎是HelloWorld的程序,可以和上面的代码对比看一下:
/*--------------------------------------------------------------
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 ;
}
在你将代码copy到你编译器之前,先声明一下,我们写的是windows程序,所以在新建项目是请选择win32项目(Win32 Application)而不是win32控制台程序(Win32 Console Application)!!!
1.3.3 头文件
几乎所有的C语言编写的window程序都有这个预处理器(preprocessor)指令,也就头文件:
#include <windows.h>
windows.h是一个重要的头文件,在这个头文件中包含了若干其他头文件,其中包含的头文件又包含了另外的一些头文件。 其中有几个是最重要也是最基本的头文件:
1) windef.h 基本数据类型定义
2) winnt.h 支持Unicode的类型定义
3) winbase.h 内核函数
4) winuser.h 用户界面函数
5) wingdi.h 图形设备接口函数
这些头文件定义了Windows的所有数据类型、函数调用、数据结构和常量标识符,它们是Windows文档中的一个重要部分。
1.3.4 程序入口
和C语言一样,windows程序也有一个 入口函数,而这个入口不是C语言中的main函数,而是 int WINAPI WinMain函数,它的形式总是下面这个样子:
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdline, int iCmdshow)
第一个参数一般叫“实例句柄”(Instance Handle),该句柄实际是一个数值,用来唯一标识我们的这个程序;第三个参数用来运行程序的命令行(Command Line),有些windows程序在启动时用它来把文件调入内存;第四个参数用来指出windows的最初显示方式:正常显示,或者最大化全屏显示,或者最小化显示到任务栏上;第二个参数是Win16的产物,此处不做说明,在Win32中其值一直为NULL。
1.3.5 MessageBox函数
MessageBox函数用来显示短消息。MessageBox函数的第一个参数是一个窗口句柄,具体意思不清,后面要说。。。第二个参数是在对话框中显示的文本字符串;第三个参数是对话框的标题文本字符串;第四个参数是消息格式控制常量,通常以MB_打头。
MessageBox函数的第四个参数,即消息控制常量在winuser.h中定义了,这些常量可以用‘ | ’运算(C语言或运算 )组合使用。
*
* MessageBox() Flags
*/
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_YESNOCANCEL 0x00000003L
#define MB_YESNO 0x00000004L
#define MB_RETRYCANCEL 0x00000005L
下面的是含图标的
#define MB_ICONHAND 0x00000010L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONASTERISK 0x00000040L
#define MB_USERICON 0x00000080L
#define MB_ICONWARNING MB_ICONEXCLAMATION
#define MB_ICONERROR MB_ICONHAND
#define MB_ICONINFORMATION MB_ICONASTERISK
#define MB_ICONSTOP MB_ICONHAND
其他的_MB常量自己到winuser.h中查找。
1.3.6 编译、链接及运行
这部基本与C语言的方法相同(在Visual C++6.0,2008,2010,2012中)。
第一章结束。
来源:oschina
链接:https://my.oschina.net/u/255789/blog/95716