理解窗口与消息

合集下载

Windows编程实验二实验报告

Windows编程实验二实验报告

Windows编程实验二实验报告一、实验目的本次 Windows 编程实验的目的在于深入了解和掌握 Windows 应用程序的开发流程,通过实际编程操作,提高对 Windows 消息机制、窗口处理、图形绘制等方面的理解和应用能力。

二、实验环境操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、窗口创建与消息处理创建一个基本的 Windows 窗口,并实现对窗口消息(如WM_CREATE、WM_PAINT、WM_DESTROY 等)的处理。

通过响应这些消息,完成窗口的初始化、绘制和关闭操作。

2、图形绘制在窗口客户区进行简单的图形绘制,如直线、矩形、圆形等。

掌握GDI(图形设备接口)的基本绘图函数和操作方法。

3、菜单与控件添加菜单到窗口,并处理菜单命令消息。

同时,尝试在窗口中添加一些基本的控件,如按钮、编辑框等,并实现相应的交互功能。

四、实验步骤1、创建项目打开 Visual Studio 2019,创建一个新的 Windows 桌面应用程序项目。

选择 C++作为编程语言,并按照向导进行设置,包括项目名称、存储位置等。

2、窗口类定义定义一个窗口类(WNDCLASS),设置窗口的样式、窗口过程函数指针等属性。

```cppWNDCLASS wndClass ={ 0 };wndClasslpfnWndProc = WndProc;wndClasshInstance = hInstance;wndClasslpszClassName = L"MainWindowClass";RegisterClass(&wndClass);```3、窗口创建与显示使用`CreateWindow` 函数创建窗口,并通过`ShowWindow` 和`UpdateWindow` 函数显示窗口。

```cppHWND hWnd = CreateWindow(L"MainWindowClass",L"Windows Programming Experiment",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL);ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);```4、消息循环在主函数中,通过一个无限循环来获取和分发窗口消息。

关于Windows 消息的wparamh和lparam

关于Windows 消息的wparamh和lparam
WM_CTLCOLOR : 通知父窗口要改变控件的颜色
WM_DRAWITEM,WM_DELETEITEM,WM_MEASUREITEM,WM_CHARTOITEM:
通知父窗口将绘制控件自身窗口
命令消息的lParam为0L,区分于控件消息
3、控件消息:控件通知消息也是以WM_COMMAND为消息名.由编辑框,列表框,子窗口发送给父窗口的
通知消息.
目前控件消息有3种格式:
仿窗口消息格式 -- 如:WM_HSCROLL 或者 WM_VSCROLL : 滚动控件通知父窗口沿水平或者垂直
方向滚动窗口
WM_PARENTNOTIFY: 通知控件窗口建立或销毁其他事件
一、消息的类别
1、窗口消息:即标准的WINDOWS消息,它与创建窗口,绘制窗口,移动窗口和销毁窗口等操作窗口的动
作有关,这类消息是以WM_为前缀,不过WM_COMMAND例外.
例如: WM_CREATE -- 创建窗口后立即发出的一个消息,用于指示窗口初始化
WM_CLOSE -- 通知窗口要将它关闭
WM_PAINT -- 通知窗口绘制自身
WM_LBUTTONDOWN -- 通知窗口在它的客户区中按下了鼠标左键
WM_MOVE、WM_QUIT等等.. 其他的可查看微软发布的技术参考资料 -- 窗口息的类别。
NMHDR 定义如下:
typedef struct tagNMHDR{
HWND hwndFrom ; -- 发出控件消息的控件窗口的句柄
UINT idFrom ; -- 控件的资源ID
UINT code ; -- 控件消息的消息通知码EX_XXX
仿命令消息格式 -- messge为WM_COMMAND;wParam底16位为控件ID,高16位为消息通知码;

mfc课程设计报告模板

mfc课程设计报告模板

mfc课程设计报告模板一、教学目标本课程的教学目标是使学生掌握MFC(Microsoft Foundation Class)的基本概念和编程技巧,培养学生使用MFC进行Windows应用程序开发的能力。

具体目标如下:1.知识目标:(1)理解MFC的基本概念,如窗口、消息、事件等。

(2)掌握MFC的编程步骤,如创建项目、添加类、编写代码等。

(3)熟悉MFC常用的类和函数,如CCmdTarget、CWnd、AfxMessageBox等。

2.技能目标:(1)能够使用MFC编写简单的Windows应用程序。

(2)能够使用MFC进行窗口布局和界面设计。

(3)能够使用MFC处理消息和事件,实现用户交互。

3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和热情。

(2)培养学生解决问题的能力和创新精神。

(3)培养学生团队协作和良好沟通的意识和能力。

二、教学内容本课程的教学内容主要包括MFC的基本概念、编程步骤和常用类及函数。

具体安排如下:1.MFC的基本概念:介绍MFC的起源、发展及其在Windows应用程序开发中的应用。

2.MFC的编程步骤:讲解如何创建MFC项目、添加类、编写代码等。

3.MFC的常用类及函数:介绍MFC的核心类,如CCmdTarget、CWnd等,以及常用的函数,如AfxMessageBox等。

4.窗口布局和界面设计:讲解如何使用MFC进行窗口布局、界面设计以及界面美化。

5.消息和事件处理:讲解MFC如何处理消息和事件,实现用户交互。

6.实战项目:通过实际项目案例,让学生掌握MFC的应用,提高实际编程能力。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师讲解MFC的基本概念、编程步骤和常用类及函数。

2.讨论法:教师引导学生进行问题讨论,巩固所学知识。

3.案例分析法:分析实际项目案例,让学生学会运用MFC解决实际问题。

17信息技术教学——窗口

17信息技术教学——窗口

信息技术教学知识词语之十七窗口每当在视窗操作系统中打开一个程序、文件或文件夹时,在计算机屏幕上就会显示出一个图形结构框架,这个框就称为窗口。

由于人们在操作计算机的视窗操作系统时,窗口会经常出现的,并且还需要对窗口进行各种各样的操作。

人们通过对窗口的操作,从而达到操作控制计算机工作,以及参与计算机网络信息活动的目的。

了解窗口界面的结构,理解窗口的功能和作用,掌握打开、移动、更改和关闭窗口等一些基本操作方法和操作技巧是很重要的。

一、窗口界面虽然打开的每个程序、文件或文件夹窗口的内容各不相同,但是所有的窗口都有一些共同部分:①窗口始终显示在桌面上。

②大多数窗口都具有相同的基本部分。

典型窗口的共性部分:⒈标题栏显示程序、文件或文件夹的名称。

⒉最小化、最大化和关闭按钮这些按钮分别可以最小化(隐藏)窗口、放大窗口使其填充整个屏幕以及关闭窗口。

⒊菜单栏包含程序中可单击进行选择的项目。

⒋滚动条可以滚动窗口的内容以查看当前视图之外的信息。

⒌边框和角可以用鼠标指针拖动这些边框和角以更改窗口的大小。

其他的程序、文件或文件夹窗口,可能会具有各自特性的按钮、框、栏或选项卡和选项卡标签等。

但是,这些有着各自特性的按钮、框、栏或选项卡和选项卡标签等,通常也具有基本相同的部分和共同的操作规范。

二、移动窗口移动鼠标器时,屏幕上的鼠标指针会同步运动。

操作鼠标指针可以用来移动窗口。

当移动鼠标指针指向窗口的标题栏后,按住鼠标器左键不放,将窗口拖动到希望的位置后,释放鼠标器左键。

拖动:指向某一个项目(如:窗口、图标等),用鼠标指针移动项目,然后释放鼠标器左键。

三、调整窗口⒈窗口最大化使窗口填满整个桌面,有两种操作方法:①单击其“最大化”按钮。

(此时,“最大化”按钮的位置,系统立即自动刷新为“还原”按钮。

)②双击该窗口的标题栏。

⒉窗口还原将最大化的窗口还原到以前大小,有两种操作方法:①单击其“还原”按钮。

(此时,“还原”按钮的位置,系统立即自动刷新为“最大化”按钮。

java 弹窗方法

java 弹窗方法

java 弹窗方法在过去的学习和工作中,我们可能会遇到各种各样的弹窗需求,如消息提示、窗口交互等。

Java作为一种广泛应用于企业级开发的编程语言,提供了多种弹窗方法。

本文将为您介绍Java弹窗方法的分类与原理,常见Java弹窗工具箱,并通过实例演示与代码解析,帮助您更好地理解和应用这些弹窗方法。

1.弹窗方法的概述在Java中,弹窗方法主要包括两类:自带弹窗和自定义弹窗。

自带弹窗是由Java自带的Swing组件库提供的,如JOptionPane类的showMessageDialog、showInputDialog等方法。

自定义弹窗则是通过Java 编写界面组件来实现,如使用JavaFX、Swing等框架创建窗口。

2.Java弹窗方法的分类与原理(1)自带弹窗Java自带的弹窗方法主要位于JOptionPane类中,包括以下几种:- showMessageDialog:显示一个包含指定消息的对话框。

- showInputDialog:显示一个包含指定消息和输入框的对话框,用户可以输入内容并确认。

- showConfirmDialog:显示一个包含指定消息的确认对话框,用户可以选择“是”或“否”。

- showOptionDialog:显示一个包含指定消息的选择对话框,用户可以从多个选项中选择一个。

(2)自定义弹窗自定义弹窗主要是通过Java编写界面组件来实现,常见的有以下几种方法:- 使用JavaFX:通过JavaFX框架创建窗口、按钮、文本框等组件,搭建需要的弹窗界面。

- 使用Swing:通过Swing框架创建窗口、按钮、文本框等组件,搭建需要的弹窗界面。

- 使用第三方库:如使用Electron、React Native等库实现跨平台弹窗。

3.常见Java弹窗工具箱介绍在Java中,有一些开源的弹窗工具箱可以帮助我们快速搭建弹窗界面,如下:- Apache APR:一个基于Java的弹窗组件库,提供了丰富的弹窗样式和功能。

WTL 技巧

WTL 技巧

窗口属性
操作系统为一个窗口维护多组命名的属性。属性的名称是程序定义的,属性的值是个HANDLE,通常是指向程序分配并填充的一块内存的指针。
例子-用SDK写窗口
这例子演示了使用纯Win32 API编写窗口的概念。以后当我们使用ATL和WTL时再回头看看当初是如何用SDK调用手工实现的会很有帮助。
捕获和焦点
一般来说,消息被发送到它们所发生的窗口,对于用户输入来说,就是焦点窗口。对鼠标消息来说,如果每个程序都想在收到鼠标按下消息后检测到对应的鼠标抬起消息,可以调用SetCapture来实现。
窗口风格
程序开发者在创建窗口是指定的形形色色的窗口风格会影响窗口的行为和外观。总共有两类窗口风格,标准风格(比如WS_CHILD)和扩展风格(比如WS_EX_PALETEWINDOW)。在WTL/ATL中“窗口风格”有另外一个术语,叫“特征(traits)”。
消息循环
每个拥有消息队列的线程通过消息循环来处理传递过来的消息,这个需要调用GetMessage函数,这个函数是阻塞的,直到有消息进来为止,然后调用DispatchMessage,结果是适当的窗口过程被调用。
MSG msg;
while (GetMessage(&msg, 0, 0, 0))
HINSTANCE hInstance, // 和该窗口相关联的模块(EXE/DLL)句柄
LPVOID lpParam // 自定义数据,将作为WM_CREATE的参数
);
子类
当基于一个窗口类创建了一个窗口后,这个窗口就记录了一个窗口类中的窗口过程的指针。可以用子类(subclass)在不重新编写窗口类的前提下修改窗口的行为。子类通过调用一个函数用新的窗口过程替换原来的,这样就可以在新的窗口过程里收到消息,进行处理然后再传递给原来的窗口过程。这可以用在你自己写的窗口类中或那些系统提供的预定义的控件上。

信息技术四年级上册教案(河大版)

信息技术四年级上册教案(河大版)

信息技术四年级上册教案(河大版)第一篇:信息技术四年级上册教案(河大版)第一课信息与信息技术一、教学目标 1 认知目标:·对信息和信息技术有感性认识·认识常见的信息处理工具·了解计算机的基本应用2 情感目标:·意识到信息和信息技术的重要性·萌发学习、应用计算机的兴趣和意识二、【教学内容】1·信息2信息传递、获取、存储等信息技术及常用工具3·计算机的基本应用4·信息技术课程学习要求三、【教学重点】1·信息技术的表现形式2计算机的基本应用四、【教学难点】·信息和信息技术的含义·计算机与信息技术的关系五、【教材分析与教学建议】本课是信息技术课程的第一课,对于从来没有学过计算机知识的学生来说,上课环境很陌生也很新奇,“信息”及“信息技术”等概念也比较抽象,因此教学中应注意联系学生生活实际,注意从生活素材中进行导入,精心设置疑问,激发学生的学习兴趣。

教材首先从学生生活体验出发引入了信息的含义,然后分别介绍了信息技术和计算机技术的基本应用。

总的来看,本课内容点很多,应在激发学生学习兴趣同时,重点突出信息技术尤其是计算机技术的特点:传递、接收、存储、处理信息。

如果在机房上此课,一定要先讲解上机的基本守则。

这些规定学生无法全部理解,应在后续课程中不断强化或提醒。

“信息的接受和传递”与后面的“信息技术及其应用”、“常用的信息处理工具”密切关联,共同构成了完整系统的“信息技术介绍”模块。

介绍“计算机的应用”时,教材建议了一个学生讨论活动,该活动的实施可以让学生主动参与到教学中来,有助于他们更为清晰地认识计算机在现代社会中的地位和信息处理方面的强大功能。

六【教学方法和手段】综合应用言语讲解和多媒体课件启发学生,通过听案例、说想法、看课件等活动调动学生学习信息技术课程的兴趣,同时初步理解信息技术及其应用。

七【课前准备】多媒体课件、数码照相机八【教学过程】一、新课引入1、什么是信息?你知道吗?(学生回答)简单地说,信息就是指对人么有用的数据、消息。

windows窗口消息回调函数

windows窗口消息回调函数

windows窗口消息回调函数Windows窗口消息回调函数是Windows操作系统中的一个重要概念,它允许我们对窗口消息做出相应的处理。

在本文中,我们将一步一步回答关于窗口消息回调函数的问题,包括什么是窗口消息回调函数,为什么需要使用窗口消息回调函数,以及如何实现窗口消息回调函数。

一、什么是窗口消息回调函数?在Windows操作系统中,窗口是图形用户界面的基本组成部分,它提供了用户与计算机之间的交互界面。

窗口消息回调函数是一种机制,它允许我们对窗口接收到的消息做出相应的处理。

当窗口接收到消息时,操作系统会调用注册的窗口消息回调函数来处理这些消息。

二、为什么需要使用窗口消息回调函数?在一个窗口应用程序中,窗口会接收到各种不同类型的消息,比如鼠标消息、键盘消息、窗口绘制消息等等。

如果没有窗口消息回调函数的机制,我们将无法对这些消息做出相应的处理。

而有了窗口消息回调函数,我们可以根据不同的消息类型,编写相应的处理代码,从而实现对窗口消息的控制和响应。

三、如何实现窗口消息回调函数?在Windows操作系统中,实现窗口消息回调函数需要以下几个步骤:1. 注册窗口类:在创建窗口之前,我们需要先注册一个窗口类。

窗口类是一个结构体,它描述了窗口的一些特性,比如窗口名称、窗口样式等。

在注册窗口类时,我们需要指定一个回调函数,该回调函数将负责处理窗口接收到的消息。

2. 创建窗口:在注册窗口类之后,我们可以使用CreateWindow函数来创建一个窗口。

CreateWindow函数会返回一个窗口句柄,我们可以通过该句柄来操作窗口。

3. 消息循环:创建窗口之后,我们需要进入消息循环。

消息循环是一个无限循环,它负责从消息队列中获取消息并分发给相应的窗口进行处理。

在消息循环中,我们需要调用GetMessage函数来获取消息,并使用TranslateMessage和DispatchMessage函数来将消息传递给窗口消息回调函数进行处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1.1窗口是什么窗口是什么?大家每天在使用Windows,屏幕上的一个个方块就是一个个窗口!那么,窗口为什么是这个样子呢?窗口就是程序吗?1. 使用窗口的原因(窗口是什么呢?看看自家阳台上的窗口就知道了。

windows 操作系统里的窗口就是从那里延伸过来的,要理解也不是那么难的。

)回想一下DOS时代的计算机屏幕,在1990年Windows 3.0推出之前,计算机的屏幕一直使用文本模式,黑洞洞的底色上漂浮着白色的小字,性能不高的图形模式只用于游戏和一些图形软件。

对DOS程序来说,屏幕是惟一的,上面有个光标表示输入字符的位置,程序运行后往屏幕输出一些信息,退出时输出的信息就留在了屏幕上,然后是第二个程序重复这个过程,当屏幕被写满的时候,整个屏幕上卷一行,最上面一行被去掉,然后程序在最底下新空出来的一行上继续输出。

(作者讲这些话时我想应该是假设初学者连什么是DOS程序都不会的,要是那样的话,看这本书是铁定看不懂的。

作者很留恋那个幸福的DOS时代吧。

)对于一个单任务的操作系统,这种方式是很合理的,因为平时使用传真机或打字机就是用上卷的方式来容纳新的内容的。

但是如果是多任务呢?两个程序同时往屏幕上写东西或者两个人同时往打字机上打字,那么谁都看不懂混在一起的是什么。

DOS下的TSR(内存驻留)程序是多个程序同时使用一个屏幕的例子,但实质上这并不是多任务,而是TSR将别的程序暂时挂起,挂起的程序不可能在TSR执行期间再向屏幕输出内容,TSR在输出自己的内容之前必须保存屏幕上显示的内容,并在退出的时候把屏幕恢复原来的样子,否则挂起的程序并不知道屏幕已经被改变,在这个过程中,DOS不会去干预中间发生的一切。

(这里有一句话不甚理解,TSR会输出自己的内容吗?为什么?后面的在TSR输出前将屏幕保存起来,和在使用后将屏幕恢复成原来的样子,这个倒不难理解。

关键是什么是内存驻留程序?它和一般的程序有什么区别?)Windows是多任务的操作系统,可以同时运行多个程序,同样,各个程序在屏幕上的显示不能互相干扰,而且,多个程序可以看成是“同时”运行的,在后台的程序也可能随时向屏幕输出内容,这中间的调度是由Windows完成的。

Windows采用的方法是给程序一块矩形的屏幕空间,这就是窗口。

应用程序通过Windows向属于自己的窗口显示信息,Windows判断该窗口是不是被别的窗口挡住,并把没有挡住的部分输出到屏幕上,这样屏幕上显示的东西就不会互相覆盖而乱套。

对于应用程序来说,它只需认为窗口就是自己拥有的显示空间就可以了。

(这一段话极其重要,尤其是显示为紫色的一段文字,更是重要的没法讲。

它是那么的简约而不简单啊,向我们展示了WINDOWS操作系统的一个深层面的运行原理,而又是其一个非常重要的原理。

)2. 窗口和程序的关系既然不同窗口的内容就是不同程序的输出,那么一个窗口就是一个程序吗?反过来,一个程序就是一个窗口吗?答案是否定的,一个窗口不一定就是一个程序,它可能只是一个程序的一部分。

一个程序可以建立多个顶层窗口,如Windows的桌面和任务栏都是顶层窗口,但它们都属于“文件管理器”进程,所以并不是一个窗口就是一个程序的代表。

Windows的窗口采用层次结构,一个窗口中可以建立多个子窗口,如窗口中的状态栏、工具栏,对话框中的按钮、文本输入框与复选框等都是子窗口。

子窗口中还可以再建立下一级子窗口,如Word工具栏上的字体选择框。

(这里的介绍非常有意义啊,深入的阐述了windows窗口和程序之间的关系。

而这个关系又应该是我们每一个学习WINDOWS编程的人所了解和掌握的。

这一段话,真的非常重要,难以用言语来形容它的重要性。

以后可能还要回来继续看看这段话才行。

真的太重要了。

)反过来,运行的程序并非一定就是窗口,比如悄悄在后台运行的木马程序就不会显示一个窗口向用户报告它在干什么。

在Windows NT下用“任务管理器”查看,进程的数量比屏幕上的窗口多得多,意味着很多的运行程序并没有显示窗口。

如果一个程序不想和用户交互,它可以选择不建立窗口。

(上面显示红色的两句话很好很强大,尤其是最后一句话,更是有意思啊。

老罗真是编程经验丰富的人啊,他已经成为了我奋斗的目标了。

)所以本章的标题“第一个窗口程序”指学习编写第一个以标准的窗口为界面的程序,而不是泛指Windows程序。

如果要写的Win32程序不是以窗口为界面的,如控制台程序等,就不一定采用本章中提及的以消息驱动的程序结构。

(老罗真的太强大了,这两个不同颜色的句子都非常有意义,windows程序并非必须是图形界面的才算是,它也可以是控制台下的程序,真的太有意义的一段话了,标出来以后要回来继续研究。

)虽然以窗口为界面的程序并不是所有Windows程序的必然选择,但绝大部分的应用程序是以这种方式出现的,从操作系统的名称“Windows”就可以看出这一点,了解窗口程序就是相当于在了解Windows工作方式的基础。

(红色的话非常重要,如果不懂WINDOWS工作方式的话,就必须得对这句话高度重视才行。

)4.1.2 窗口界面大部分的窗口看上去都是大同小异的,先来看一个典型的窗口,即Windows 附带的写字板,如图4.1所示。

用它来说明窗口的各个部分。

(说出红色的那句话,说明了老罗把WINDOWS窗口看得有多么的透彻了啊,老罗不亏是大众的偶像和榜样啊。

)4.1 一个典型的窗口图窗口一般由屏幕上的矩形区域组成,不同的窗口可能包括一些相同的组成部分,如标题栏、菜单、工具栏、边框和状态栏等,每个部分都有自己固定的行为模式:(这一句话好有用,标下来在有需要的时候再研究研究。

)●窗口边框——窗口的外沿就是窗口边框,用鼠标按住边框并拖动可以调整窗口的大小。

(老罗太了不起了,给我们下了一个极其准确的窗口边框的定义,即鼠标按住后可以改变窗口大小的窗口部分为窗口边框。

以后不会对这个概念有任何的模糊感了。

)●标题栏——窗口的最上面是标题栏,用鼠标按住标题栏拖动可移动窗口,双击标题栏则将窗口最大化或从最大化的状态恢复。

通过标题栏的颜色可以区分窗口是不是活动窗口,同时标题栏列出了应用程序的名称。

(和上面的句子一样,这里画红色的句子相当有意义啊,老罗又给我们对标题栏下了一个极其准确的定义啊,即双击标题栏窗口将最大化或从最大化的状态恢复。

这句话真的太形象生成了,试一下就可以知道什么是标题栏了。

而不像某些书里面说的太模糊太没感觉了太容易产生歧义了。

)●菜单——标题栏下面是菜单,单击菜单会弹出各种功能选择。

●工具栏——菜单的下面是工具栏,工具栏上用图标的方式列出最常用的功能,相当于菜单的快捷方式。

(对菜单和工具栏的描述非常的形象生动到位啊。

对一些词语用得真的是太好了啊。

)●图标和“最小化”、“最大化”与“关闭”按钮——图标位于标题栏的左边,三个控制按钮则位于标题栏的右边。

单击图标会弹出一个系统菜单,双击图标则相当于按下了“关闭”按钮。

“最小化”、“最大化”按钮用来控制窗口的大小。

(描述得太好了,太准确了,老罗写的这一节真的是太好了啊。

太感动了,@#$%*&^)●状态栏——状态栏位于窗口的最下面,用来显示一些状态信息。

●客户区——窗口中间用来工作或输出的区域,叫做窗口的客户区,把窗口看做是一张白纸的话,客户区就是白纸中真正用来写东西的部分,程序在这里和用户进行交互。

(客户区这个概念极其重要啊,而这里描述得那么的形象,非常容易理解,初学者看到这里都会觉得WIN32汇编不过这么简单而已的。

)●滚动条——如果客户区太小不足于显示全部内容,右边或底部可能还有滚动条,拖动它可以滚动窗口的客户区,以便看到其他的内容。

虽然大部分窗口看上去都差不多,但并不是每个窗口都有这些东西,也许有的窗口就没有图标和最小化、最大化框,有的没有工具栏或状态栏,有的没有标题栏,而有的就干脆是个奇怪的形状,如Office帮助中的助手,那些小狗小猫都是些不折不扣的窗口,Windows的桌面和桌面下面的任务栏也都是窗口,就连屏幕保护的黑屏幕也是一个大小为整个屏幕、没有标题栏和边框的窗口!(太强大了,老罗对WINDOWS下的窗口的了解已经到了一个这么恐怖的境界了啊。

强大的老罗啊。

小狗小猫,任务栏,黑屏幕,这些都是WINDOWS下的窗口啊,太让人意外了。

)一致的窗口形状和行为模式为Windows用户提供了一致的用户界面,几乎所有的窗口程序都在菜单的第一栏设置有关文件的操作和退出功能、最后一栏设置程序的帮助,相同的功能在工具栏上的图标也是大同小异的,用户可以不再像在DOS下那样,对不同的程序需要学习不同的界面,用户自从学会使用第一个软件起,就基本学会了所有Windows软件的使用模式,而且可以通过相似的菜单、工具栏等来发掘程序的新功能。

窗口的菜单和客户区则是最个性化的东西,菜单随程序功能的不同而不同,而客户区则是窗口程序的输出区域,不同的程序在客户区内显示了不同的内容。

(什么是行为模式?窗口形状很容易理解,基本是矩形的。

行为模式呢?菜单功能是一种行为模式吗?在客户区输出内容是一种行为模式吗?)4.1.3 窗口程序是怎么工作的1. 窗口程序的运行模式对程序员来说,要了解的不仅是用户可以看到的部分,还必须了解窗口底下的东西,了解用怎样的程序结构来实现窗口的行为模式。

(这句话说得非常有道理,可以极大的打击一些自以为认识底层没有意义的无知分子。

) DOS程序员熟悉的是顺序化的、按过程驱动的程序设计方法。

程序有明显的开始、明显的过程和明显的结束,由程序运行的阶段来决定用户该做什么。

而窗口程序是事件驱动的(再次提醒:这里是“窗口程序”而不是“Windows程序”,因为和窗口有关的程序才是事件驱动的,其他的Windows可能并不这样工作,如控制台程序的结构还是同DOS程序一样是顺序化的,但与窗口相关的Windows程序占了绝大多数,所以大部分的书籍中讲到Windows程序就认为是事件驱动的程序),用户可能随时发出各种消息,如操作的过程中觉得窗口不够大了,就马上会拖动边框,程序必须马上调整客户区的内容以适应新的窗口大小;用户觉得想先干别的事情,可能会把窗口最小化,关闭按钮也有可能随时被按下,这意味着程序要随时可以处理退出的请求。

如果非要规定干活的时候不能移动窗口与调整大小,那么这些窗口就会呆在桌面上一动不动。

(这里非常细致到位的介绍了DOS程序和WINDOWS程序的区别啊,尤其是对WINDOWS或窗口程序的描述非常有用。

让我们对过程驱动和消息驱动的程序有了更加清晰的认识。

)1.队列消息和非队列消息从消息的发送途径上看,消息分两种:队列消息和非队列消息。

队列消息送到系统消息队列,然后到线程消息队列;非队列消息直接送给目的窗口过程。

相关文档
最新文档