欢迎来到天天文库
浏览记录
ID:41033436
大小:137.50 KB
页数:15页
时间:2019-08-14
《Win32编程(1)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Win32编程C/C++/VC/MFC技术交流群:95453496一、Win32编程基本概念1、消息驱动在介绍Windows消息驱动概念之前,我们首先来回顾面向过程的程序结构:main()程序有明显的开始、中间过程和结束点,程序是围绕这个过程编写好相关的子过程,再把这些子过程串联在一起。程序编好以后,该过程也就确定了,程序必须按照规定好的顺序执行:是否需要用户的输入、输入什么、程序取得用户输入以后做什么处理,处理完毕将结果显示给用户。该过程一旦确定,程序的执行过程也是固定的,用户不能干预。而Windows编程所采用设计思想是:消息驱动,又叫做事件驱动。在这种程序结
2、构中,程序没有明显的开始、结束,程序流程的控制由各种随机发生、不确定、没有预先设定顺序的事件的发生来触发。是一个不断产生消息和处理消息的过程。也就是说程序一运行开始处于等待消息状态,取得消息以后,就对该消息做出相应的处理,完成处理以后又进入等待消息的状态。这种程序结构与Windows操作系统结合非常紧密,最明显一点就是消息的管理是由操作系统完成的。应用程序从操作系统获得消息有两种方式:一种就是应用程序调用Windows提供的消息获取函数;另外一种就是回调函数,由操作系统自己调用。这种消息驱动机制,有点像银行的柜台业务:早上八点,银行开门(Windows应用程序开始
3、运行),每个营业员(Windwows线程)回到自己的柜台开始办公。如果有顾客来办理相关业务(相当于Windows消息),那么对应的业务员就进行处理。顾客来办理业务的时间以及业务类型都是随机的,如果某一时刻没有顾客办理业务并且没有到下班时间(Windows应用程序退出)的话,那么相关的业务员进入等待状态。所有的业务员不断重复该过程,直到下班(Windows应用程序退出)。2、应用程序、操作系统、IO设备之间的相互关系3、窗口元素窗口:是Windows操作系统最重要最基本的一个概念。它是一个正在运行的应用程序相对应的矩形区域,通过它用户可以和应用程序进行交互。客户区:
4、是窗口中最大的一块空白的矩形区域,是用户和系统进行交互的主要区域,一般用于显示应用程序的输出。标题栏:位于窗口顶部,用于显示应用程序名称的。菜单栏:位于标题栏下方,菜单栏列出了应用程序支持的大部分功能。图标:适用于提醒用户的一个小图像,代表一个应用程序。光标:Windows光标显示在屏幕上的一个小位图。工具栏:一般位于菜单栏下方,上面有一些位图按钮,代表一些常用功能。状态栏:位于这个窗口底端,用于输出菜单提示信息和一些其他详细信息。对话框:一种特殊的窗口,用于接受用户的输入输出。控件:对话框上的许多小窗口都是控件。如按钮,编辑框等都是控件。4、编程术语窗口:是应用
5、程序操作的基本单元,是用户可以通过它和应用程序进行交互的接口环境,也是系统管理应用程序的基本单位。从程序运行的内存组织结构看,窗口对应一个数据结构WNDCLASS。实例:实际上实例就是一个可执行程序在内存中的拷贝。一个可执行程序运行多次,在内存中就有多个内存拷贝。系统是通过实例句柄来识别一个可执行程序的拷贝。句柄:系统用来识别不同对象或者同类对象的不同实例的"编号"。它是一个无符号整数。几乎所有对对象的引用都是通过句柄来进行的。如使用HINSTANCE、HWND、HCURSOR、HICON、HDC、HBRUSH、HPEN等。资源:构成应用程序的元素称为资源:菜单、
6、工具条、位图、字符串等。窗口函数:用户通过窗口和应用程序交互时产生的消息,送给一个函数进行处理。该函数体结构大致由一个Switch结构组成,是消息驱动机制的发动机。图形设备接口:GDI(GraphicDeviceInterface)是Windows系统的重要组成部分。负责系统和用户或者绘图程序之间的信息交换,并控制输出设备上图形和文字的输出。最大的优点就是设备无关性:将程序员和设备相隔离,程序员不必关心物理设备的细节,直接调用相关的API函数就可以在输出设备上显示图形或者文字。回调函数:写好了等系统进行调用的函数。只能由系统自动调用。前面所说的窗口函数就是一个典型
7、的回调函数。二、第一个Win32程序Win32程序的入口为WinMain`函数,是由操作系统调用的。和main()函数不同,WinMain有严格的原型定义,不能改变。其原型如下:intWINAPIWinMain(HINSTANCEhInstance,//当前实例句柄HINSTANCEhPrevInstance,//前一个实例句柄LPSTRlpCmdLine,//命令行参数intnCmdShow//窗口显示方式,如SW_SHOWNORMAL等);这里我们看到了一些不认识的大写字符,在此后的学习中,我们还会大量遇到这种情况。稍后我们会专门讲解。Windows编程和DO
8、S编程最大
此文档下载收益归作者所有