4.1 Windows编程基础 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM WParam LPARAM IParam) switch(message) case WM create ∥/窗口创建产生的消 return o case WM LBUTTONdOWN MessageBox(NUL,"你好,我的 Visual c++世界!","问候",0) return o case WM destroy ∥/当窗口关闭时产生的消息 PostQuitMessage(0)i return 0 return defwindow proc( hwnd, message, pAran, IParam);∥/执行默认的消息 处理
4.1Windows编程基础 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: // 窗口创建产生的消息 return 0 ; case WM_LBUTTONDOWN: MessageBox (NULL, "你好,我的Visual C++世界!", "问候", 0) ; return 0 ; case WM_DESTROY: // 当窗口关闭时产生的消息 PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; // 执行默认的消息 处理 }
4.1 Windows编程基础 程序运行,单击鼠标左键,如图。 窗口过程函数 WndProc用来接收和处理各种不同的消息, WinMain函数通常 要完成 >调用API函数 Register Classi注册应用程序的窗口类 调用相关API函数创建和显示窗口,并进行必要的初始化。 Create Window 创建已注册窗口类的窗口。 Windows每一个窗口都有一些基本属性。窗口 类就是充当这些属性的模板。 创建和启动应用程序的消息循环。 Windows应用程序接受各种不同的消息。 Windows系统首先将消息放入消息队列中,应用程序的消息循环就是从 用程序的消息队列中检取消息,并将消息发送相应的窗口过程函数中作进 步处理 如果接收到 WM QUT消息,则退出应用程序 我的窗口 你好,我的vsua1c+世界 图42 Ex Hellowin运行结果
4.1Windows编程基础 程序运行,单击鼠标左键,如图。 窗口过程函数WndProc用来接收和处理各种不同的消息,WinMain函数通常 要完成: ➢ 调用API函数RegisterClass注册应用程序的窗口类。 ➢ 调用相关API函数创建和显示窗口,并进行必要的初始化。CreateWindow 创建已注册窗口类的窗口。Windows每一个窗口都有一些基本属性。窗口 类就是充当这些属性的模板。 ➢ 创建和启动应用程序的消息循环。Windows应用程序接受各种不同的消息。 Windows系统首先将消息放入消息队列中,应用程序的消息循环就是从应 用程序的消息队列中检取消息,并将消息发送相应的窗口过程函数中作进 一步处理。 ➢ 如果接收到WM_QUIT消息,则退出应用程序 图4.2 Ex_HelloWin运行结果
4.1 Windows编程基础 应用程序的基本流程,如图 图43 Windows应用程序的基本流程
4.1Windows编程基础 应用程序的基本流程,如图。 图4.3 Windows应用程序的基本流程
4.1 Windows编程基础 412 Windows编程特点 >消息驱动机制 DOS程序是通过调用系统的函数来获得用户输入的, Windows程序则是通 过操作系统发送的消息来处理用户输入的 无论是系统产生的动作或是运行应用程序产生的动作,都称为事件( Events) 生的消息( Message)。在应用程序中,通过接收消息、分发消息、处理消 息来和用户进行交互。许多消息都经过了严格的定义,并且适用于所有的 应用程序。 图形设备接口(GDI) DOS环境中,要在打印机上打印一幅图形是非常复杂的事件。 Windows则 提供了一个抽象的接口,称为图形设备接口( Graphical Device Interface, 简称GDI),使得用户直接利用系统的GDI函数就能方便实现输入或输出,而 不必关心与系统相连的外部设备的类型 基于资源的程序设计 Windows应用程序常常包含众多图形元素,每一个这样的元素都作为一种 可以装入应用程序的资源来存放。这些资源可以被编辑、修改,也可以被 其他应用程序所共享。VC中提供的许多编辑器能“所见即所得”地进行不 同类型资源的设计、编辑等
4.1Windows编程基础 4.1.2Windows编程特点 ➢ 消息驱动机制 DOS程序是通过调用系统的函数来获得用户输入的,Windows程序则是通 过操作系统发送的消息来处理用户输入的。 无论是系统产生的动作或是运行应用程序产生的动作,都称为事件(Events) 产生的消息(Message)。在应用程序中,通过接收消息、分发消息、处理消 息来和用户进行交互。许多消息都经过了严格的定义,并且适用于所有的 应用程序。 ➢ 图形设备接口(GDI ) DOS环境中,要在打印机上打印一幅图形是非常复杂的事件。Windows则 提供了一个抽象的接口,称为图形设备接口(Graphical Device Interface, 简称GDI),使得用户直接利用系统的GDI函数就能方便实现输入或输出,而 不必关心与系统相连的外部设备的类型。 ➢ 基于资源的程序设计 Windows应用程序常常包含众多图形元素,每一个这样的元素都作为一种 可以装入应用程序的资源来存放。这些资源可以被编辑、修改,也可以被 其他应用程序所共享。VC中提供的许多编辑器能“所见即所得”地进行不 同类型资源的设计、编辑等
4.1 Windows编程基础 >动态链接库 提供一些特定结构的函数,能被应用程序在运行过程中装入和连接,多个 程序可以共享同一个动态链接库。从编程角度,动态链接库可以提高程序 模块的灵活性,它本身是可以单独设计、编译和调试的 Windows提供了应用程序可利用的丰富的函数调用,大多数用于实现其用 户界面和在显示器上显示的文本和图形,都是通过动态链接库来实现的 Windows中, KERNEL32用来处理存储器低层功能、任务和资源管理等核心 服务;GDI32用来提供图形设备接口,管理用户界面和图形绘制;USER32 负责窗口的管理 进程和线程 Windows是一个32位多任务操作系统,采用进程和线程的管理模式 进程是装入内存中正在执行的应用程序。进程包括私有的虚拟地址空间 代码、数据及其它操作系统资源。进程包括了一个或多个在进程上下文内 运行的线程。 线程是操作系统分配CPU时间的基本实体。线程可以执行应用程序代码的任 何部分,包括当前正在被其它线程执行的那些部分。同一进程的所有线程 共享同样的虚拟地址空间、全局变量和操作系统资源 个应用程序,包括一个或多个进程,每个进程由一个或多个线程构成
4.1Windows编程基础 ➢ 动态链接库 ◆ 提供一些特定结构的函数,能被应用程序在运行过程中装入和连接,多个 程序可以共享同一个动态链接库。从编程角度,动态链接库可以提高程序 模块的灵活性,它本身是可以单独设计、编译和调试的。 ◆ Windows提供了应用程序可利用的丰富的函数调用,大多数用于实现其用 户界面和在显示器上显示的文本和图形,都是通过动态链接库来实现的。 ◆ Windows中,KERNEL32用来处理存储器低层功能、任务和资源管理等核心 服务; GDI32用来提供图形设备接口,管理用户界面和图形绘制;USER32 负责窗口的管理。 ➢ 进程和线程 ◆ Windows是一个32位多任务操作系统,采用进程和线程的管理模式。 ◆ 进程是装入内存中正在执行的应用程序。进程包括私有的虚拟地址空间、 代码、数据及其它操作系统资源。进程包括了一个或多个在进程上下文内 运行的线程。 ◆ 线程是操作系统分配CPU时间的基本实体。线程可以执行应用程序代码的任 何部分,包括当前正在被其它线程执行的那些部分。同一进程的所有线程 共享同样的虚拟地址空间、全局变量和操作系统资源。 ◆ 一个应用程序,包括一个或多个进程,每个进程由一个或多个线程构成