windows程序设计自学笔记(一)

半世苍凉 提交于 2020-02-28 21:51:47

    本周开始自学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中)。


    第一章结束。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!