第二章 Windows窗口设计
- 格式:doc
- 大小:127.51 KB
- 文档页数:24
认识《WINDOWS窗口》教学设计一、学习者分析目前的三年级学生已经接触计算机,对windows窗口已经有朦胧的认识,并有一定的电脑的操作能力。
他们的求知欲强,对学习计算机具有浓厚的兴趣。
二、教学内容分析本节课主要内容是“windows窗口”含义、组成部分以及窗口的基本操作。
介绍了切换窗口、移动窗口和改变窗口大小的方法,为以后进一步学习其它应用软件打下良好的基础。
教学重点:学会窗口的基本操作。
教学难点:1、拖动鼠标改变窗口的大小;2、按要求操作解决实际问题。
三、教学目标1、知识与技能(1)了解windows窗口的含义、各部分名称以及作用。
(2)掌握窗口的基本操作。
(3)会运用窗口基本操作的知识解决实际问题。
2、过程与方法(l)学生先看书或课件学习窗口的组成以及最大化最小化窗口,然后通过“小竞赛”检测自己的学习效果,再多次竞赛巩固已学的知识。
(2)通过学习探究老师给出的学习任务“找不同”,学会移动窗口、切换窗口、任意改变窗口的大小。
当真正完成以上学习的重难点才能顺利完成“找不同”的任务。
(3)完成“小测试”,学生根据电脑给出的评价,找出自己的不足之处并马上重测改正。
(4)学生按照自己的能力选择不同的锦囊完成“小探究”。
3、情感态度与价值观(l)培养合作交流的能力。
(2)培养主动探究、善于归纳的良好学习习惯。
(3)培养每次学习后都进行自我评价的良好习习惯。
四、教学媒体l、教师机、学生机、服务器以及局域网络。
2、自制网络课件。
五、教学理念与方法以学生自学、教师讲解、上机操作、竞赛、游戏、测试、任务驱动、讨论、探究等有机结合,从而引导学生掌握窗口的基本操作。
采用任务驱动法,将知识技能融合于任务之中,创设激发学生兴趣的任务情境;采用分组合作方法,在任务操作中融入合作交流的因子,倡导合作探究式学习。
六、教学过程设计1、教学内容的组织与呈现方式把学习内容分为两大部分:第一部分:窗口的组成和最大化最小化窗口。
本部分学生自学书本或课件,通过小竞赛进行检测。
windows窗体程序教程Windows窗体程序是一种用于开发图形用户界面(GUI)应用程序的技术。
这种技术使用Windows操作系统提供的窗体控件,允许开发人员创建各种各样的交互式应用程序。
本文将向您介绍Windows窗体程序的基本概念和创建过程。
首先,我们需要了解几个概念。
Windows窗体是一个可视化的区域,用于显示应用程序的用户界面。
它可以包含按钮、文本框、标签等各种控件,以及用于布局和组织控件的容器,如面板和表格布局。
通过使用这些控件和布局容器,开发人员可以创建出具有各种功能和交互性的窗体应用程序。
在创建Windows窗体应用程序之前,我们需要安装并配置开发环境。
通常,Windows窗体应用程序是使用Visual Studio IDE来开发的。
Visual Studio是一个强大的集成开发环境,可以提供可视化的设计和调试功能,以及许多其他有用的工具和功能。
在Visual Studio中创建Windows窗体应用程序非常简单。
我们只需要打开Visual Studio,选择“新建项目”选项,在“Visual C#”或“Visual Basic”类别下选择“Windows Forms应用程序”,然后按照向导的指导完成项目的创建。
在创建过程中,我们可以选择项目的名称和位置,以及其他一些项目设置。
创建项目后,Visual Studio将自动生成一个默认的窗体文件,其中包含应用程序的初始窗体。
我们可以通过在窗体设计器中对窗体进行布局和设计,添加所需的控件和组件。
VisualStudio提供了可视化的设计界面,可以轻松拖放和调整控件的位置和大小。
通过使用工具箱中的控件,我们可以快速创建出各种各样的用户界面。
一旦窗体的布局和设计完成,我们就可以开始编写窗体的逻辑代码了。
Windows窗体程序使用事件驱动的编程模型,即通过处理控件的事件来响应用户的操作。
我们可以为控件的各种事件(如点击按钮、文本框内容更改等)编写自定义的事件处理方法,用于执行相应的功能操作和逻辑处理。
windows窗口的认识教案
以下是一个关于Windows 窗口的认识教案的简要概述:
一、课程目标:
1. 了解Windows 窗口的基本结构和元素。
2. 掌握Windows 窗口的基本操作方法,如移动、缩放、最小化、最大化和关闭等。
3. 理解多窗口操作和窗口间的切换。
二、课程内容:
1. Windows 窗口的基本结构:介绍窗口的标题栏、菜单栏、工具栏、工作区、状态栏等元素。
2. Windows 窗口的基本操作:讲解如何移动、缩放、最小化、最大化和关闭窗口。
3. 多窗口操作:介绍如何同时打开多个窗口,以及如何在窗口间进行切换。
4. 调整窗口大小和位置:演示如何通过拖动窗口边框来调整窗口大小,以及如何将窗口拖动到屏幕上的不同位置。
5. 总结:总结Windows 窗口的基本结构和操作方法,强调窗口操作在日常计算机使用中的重要性。
三、教学方法:
1. 演示讲解:通过实际操作演示Windows 窗口的基本操作和多窗口操作。
2. 课堂练习:让学生在计算机上进行实际操作,练习窗口的基本操作和多窗口操作。
3. 问题解答:解答学生在操作过程中遇到的问题,帮助他们更好地理解Windows 窗口的操作方法。
四、课程评价:
1. 学生课堂表现:观察学生在课堂练习中的表现,评估他们对Windows 窗口操作的掌握程度。
2. 课后作业:布置一些与Windows 窗口操作相关的作业,检验学生的学习效果。
3. 期末考试:在期末考试中设置与Windows 窗口操作相关的题目,考察学生对这部分知识的掌握情况。
课题:Windows窗口的组成及操作教学目的:1、使学生掌握Windows窗口的操作的有关知识。
2、培养学生学习计算机的兴趣。
3、培养学生主动发现问题及解决问题的能力。
教学重点:窗口的组成及其基本操作。
教学过程:引言:上一节课我们学习了Windows的基本组成,认识了它的桌面上的有关内容。
这一节课我们按下去学习,我们知道,上一节课我们学习了Windows,那么Windows的中文意思是什么呢?回答:窗口本节课我们就来学习窗口的组成。
讲解:Windows中的所有操作都是通过窗口来完成的。
所以我们首先来学习窗口的有关知识,了解窗口的组成及其本的操作。
在Windows中几乎打开任一个程序都有一个窗口,请大家打开以下三个窗口:(1)双击“我的电脑”图标(2)单击“开始”“程序”“附件”“写字板”(3)单击“开始”“程序”“Microsoft Word ”[板书]一、窗口的组成[板书]1、标题栏:位于窗口第一行,用来显示应用程序或文档的名称。
我们把标题栏左边的小图标称之为控制菜单框。
[板书]2、控制菜单框:位于窗口左上角,根据不同的应用程序显示不同的图标。
讲解:在控制菜单框右边都有一段中文或英文文字或英文文字,如“我的电脑”[板书]3、窗口的标题:在标题栏上显示的名称。
讲解:通常我们把窗口最右上角的三个小按钮分别为“最小化”“最大化”“关闭”按钮。
[板书]4、“最大化”“最小化”“关闭”按钮:可对窗口进行最大化、最小化、关闭操作。
讲解:这些文字所在的位置称为菜单栏,这些文字称为菜单,下拉条目称为下拉菜单元,条目中的选项称为菜单项。
它可以对当前窗口进行各种操作的命令。
首先选到需要进行哪一类操作,再在其下拉菜单中选择具体所需的操作命令。
[板书]5、菜单栏:我们通过观察可以发现窗口四周是由四条边线组成,这四条边线通常称为窗口边框,相邻两边线的交点称为窗口角。
[板书]6、窗口边框:可对窗口进行放大和缩小的操作。
7、窗口角:可以同时改变两面三刀条边框图的长短。
Windows窗口程序设计技术是计算机编程领域中非常重要的一部分,它主要涉及到基于Windows系统的应用程序开发。
在本篇文章中,我们将介绍的基础知识、相关工具以及一些技巧。
一、概述主要是需要掌握一些特定的技能,包括一些基础的编程语言知识、Windows API的使用以及本地窗口和控件的创建和管理等。
Windows API提供了编程所需的各种函数和结构,程序员可以使用它来创建和管理本地窗口,以及进行文件操作、内存管理和网络编程等。
二、Windows API的使用Windows API是的核心,它负责提供访问Windows系统的基本接口,使开发人员能够轻松地创建和管理本地窗口和控件。
以下是一些常用的Windows API函数,它们在程序开发过程中应用广泛:1. CreateWindow: 用于创建一个新的本地窗口。
2. ShowWindow: 控制和显示指定的窗口。
3. UpdateWindow: 立即更新指定的窗口,强制将绘图操作刷到屏幕上。
4. SendMessage: 发送消息给窗口。
5. SetWindowText: 设置窗口的标题。
三、相关工具除了Windows API,开发人员还需要了解一些必要的工具,以提高编程效率和准确性。
以下是一些常用的工具:1. Visual Studio: Visual Studio是Windows平台上的一款集成开发环境,它提供了丰富的工具和功能,帮助程序员创建各种类型的Windows应用程序。
2. MFC: Microsoft Foundation Classes,是一组C++类,用于简化Windows窗口程序设计,MFC的一大优点是能够自动生成代码,提高工作效率。
3. Win32 SDK: Windows API开发工具,提供了编程所需的各种函数、结构和其他相关信息。
四、一些技巧除了基本知识和必要工具,还有一些技巧可以帮助开发人员更好地解决问题,提高程序的可读性和可维护性。
WINDOWS程序设计之窗口过程创建一个窗口的过程1:创建一个窗口首先要注册一个窗口类,用一个窗口过程处理窗口消息;2:windows的程序调用LoadIcon:加载图标LoadCursor:加载鼠标指针GetStockObject:获取图形对象RigisterClass:为程序窗口注册窗口类MessageBox:显示消息框CreateWindow:根据窗口类创建一个窗口ShowWindow:在屏幕上显示窗口UpdateWindow:指示窗口刷新自身GetMessage:从消息队列中获取消息TranslateMessage:转换某些键盘信息DispatchMessage:将消息发送给窗口过程PlaySound:播放一个声音文件BeginPaint:开始窗口绘制GetClientRect:获取窗口客户区的尺寸DrawText:显示文本串EndPaint:结束窗口绘制;PostQuitMessage:消息队列中插入一条退出信息DefWindowProc:执行默认的消息处理3:大写标识符的前缀表示的含义CS:类风格选项CW:创建窗口选项DT:绘制文本选项IDI:图标ID号IDC:光标ID号MB:消息框选项SND声音选项WM:窗口消息WS:窗口风格4:新的数据类型在源程序中的其他标识符是新的数据类型,在Windows头文件中使用typedef语句加以定义;UINT:一个unsigned int(无符号整数)32位PSTR:指向一个字符串的指针(char*)WPARAM:定义成一个UINT(32位无符号整数)LPARAM:定义成一个LONG(32位有符号整数)LRESULT:是WndProc函数的返回值,定义成一个LONGWINAPI:WinMain函数的类型,头文件中的所有Windows函数都被指定成这个类型CLASSBACK:WndProc指定为该类型(WINAPI和CLASSBACK均为__stdcall类型,指在Windows本身和用户的应用程序之间发生的函数调用的特殊调用序列)5:Windows头文件定义的四种数据结构MSG:消息结构WNDCLASS:窗口类结构PAINTSTRUCT:绘图结构RECT:矩形结构6:三个句柄句柄是一个32位的数,代表一个对象;程序通过调用Windows 函数获取句柄,在Windows函数中引用句柄,以引用它所代表的对象,句柄的实际值对程序无关紧要,但Windows模块知道如何使用它来引用相应的对象。
windows窗口课程设计一、课程目标知识目标:1. 学生能够理解Windows操作系统的基本概念,掌握窗口的组成元素及功能。
2. 学生能够掌握窗口的打开、关闭、最小化、最大化、还原等基本操作。
3. 学生能够了解并运用任务栏、开始菜单等系统工具进行窗口管理。
技能目标:1. 学生能够熟练使用鼠标和键盘进行窗口操作,提高操作效率。
2. 学生能够运用多窗口切换、层叠、并排等技巧,提升多任务处理能力。
3. 学生能够解决在窗口操作过程中遇到的问题,具备一定的故障排除能力。
情感态度价值观目标:1. 学生能够认识到操作系统在日常生活和学习中的重要性,增强信息意识。
2. 学生在学习和操作过程中,培养耐心、细致的良好习惯,提高自主学习能力。
3. 学生能够遵循网络道德规范,爱护公共设备,树立正确的价值观。
课程性质:本课程为信息技术课程,旨在帮助学生掌握Windows操作系统的基本使用方法,提高学生在信息时代的生存能力和竞争力。
学生特点:本课程针对的学生群体为小学高年级学生,他们对计算机操作有一定的兴趣,但操作技能和知识储备有限。
教学要求:课程设计要注重实践操作,结合实际生活案例,让学生在动手操作中掌握知识,培养技能。
同时,关注学生个体差异,给予个性化指导,确保每位学生都能达到课程目标。
通过课程学习,使学生能够独立完成日常计算机操作,为后续学习打下坚实基础。
二、教学内容1. 窗口的基本概念与组成元素:窗口的定义、标题栏、菜单栏、工具栏、状态栏等。
2. 窗口的基本操作:打开、关闭、最小化、最大化、还原等操作方法。
3. 窗口管理:多窗口切换、层叠、并排等技巧,任务栏的使用与设置。
4. 系统工具的应用:开始菜单、控制面板等系统工具的使用方法。
5. 常见问题与故障排除:窗口操作中遇到的常见问题及解决方法。
教学大纲安排:第一课时:窗口的基本概念与组成元素第二课时:窗口的基本操作第三课时:窗口管理第四课时:系统工具的应用第五课时:常见问题与故障排除教材章节关联:《信息技术》教材第四章第二节:认识Windows操作系统内容列举:1. Windows操作系统的基本概念2. 窗口的组成元素与功能3. 窗口的基本操作与管理技巧4. 系统工具的使用方法5. 常见问题与解决策略教学内容遵循科学性和系统性原则,结合课程目标,确保学生在掌握基本知识的同时,培养实际操作技能,提高解决问题的能力。
窗口教案设计范文第一章:窗口基础概念1.1 窗口的定义与作用1.2 窗口的组成元素1.3 窗口的创建与关闭1.4 窗口的属性设置第二章:窗口布局与设计2.1 窗口布局的原则与方法2.2 常用的窗口布局方式2.3 窗口设计的要点与技巧2.4 窗口设计的实例分析第三章:窗口交互与用户体验3.1 窗口交互的基本概念3.2 窗口交互的设计原则3.3 窗口交互元素的设计与实现3.4 用户体验在窗口设计中的应用第四章:窗口动画与过渡效果4.1 窗口动画的基本概念4.2 窗口过渡效果的实现方法4.3 窗口动画与过渡效果的设计原则4.4 窗口动画与过渡效果的实例分析第五章:窗口响应式设计5.1 响应式设计的概念与重要性5.2 窗口响应式设计的原则与方法5.3 窗口响应式设计的实现技术5.4 窗口响应式设计的实例分析第六章:窗口组件与控件设计6.1 窗口组件的分类与功能6.2 常用控件的属性与使用方法6.3 控件布局与界面美观性6.4 窗口组件与控件设计的实例分析第七章:窗口事件处理7.1 窗口事件的类型与作用7.2 事件处理的基本概念与方法7.3 事件冒泡与事件捕获7.4 窗口事件处理的实例分析第八章:窗口数据绑定与处理8.1 数据绑定的概念与作用8.2 数据绑定技术及其实现方法8.3 窗口数据处理与更新8.4 窗口数据绑定与处理的实例分析第九章:窗口状态管理9.1 窗口状态的概念与重要性9.2 窗口状态的类型与表示方法9.3 窗口状态管理的技术与策略9.4 窗口状态管理的实例分析第十章:窗口安全与性能优化10.1 窗口安全的基本概念与措施10.2 窗口性能优化的方法与技巧10.3 窗口安全与性能优化的实例分析10.4 窗口安全与性能优化的最佳实践重点和难点解析一、窗口基础概念重点关注章节:1.3 窗口的创建与关闭;1.4 窗口的属性设置补充说明:窗口的创建与关闭是窗口操作的基础,理解不同方法及其适用场景对于操作窗口至关重要。
第二章:WIN32 窗体程序设计学习目标⏹Win32编程中需要掌握的一些重要概念⏹详解Win32程序⏹理解Win32程序的消息机制⏹Win32程序对鼠标和键盘的控制Win32编程中需要掌握的一些重要概念学习windows编程是一个比较难的过程,主要的障碍是因为windows程序中很多新的东西,我们一下子不能适应,下面我们就来扫清这些障碍:我们在上一章中看到了一个简单的windows程序,大家会发现windows 程序中有很多全大写定义的东西,这就是我们的障碍之一,因为,太多的东西我们以前没有见过,windows程序中全大写的东西可以分为这样三种:第一种是:windows定义的变量比如这句:LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )这是一个方法的定义,这和我们以前的程序就有太多的不同。
下面的列表是从相应windows的头文件中摘下来的,看完这个后,你是否可以理解上面这句话的意思。
#define FAR far#define NEAR near#define CONST const#define CALLBACK __stdcall#define WINAPI __stdcall#define WINAPIV __cdecl#define APIENTRY WINAPI#define APIPRIVATE __stdcall#define PASCAL __stdcalltypedef unsigned long DWORD;typedef int BOOL;typedef unsigned char BYTE;typedef unsigned short WORD;typedef float FLOAT;typedef FLOAT *PFLOAT;typedef BOOL near *PBOOL;typedef BOOL far *LPBOOL;typedef BYTE near *PBYTE;typedef BYTE far *LPBYTE;typedef int near *PINT;typedef int far *LPINT;typedef WORD near *PWORD;typedef WORD far *LPWORD;typedef long far *LPLONG;typedef DWORD near *PDWORD;typedef DWORD far *LPDWORD;typedef void far *LPVOID;typedef CONST void far *LPCVOID;typedef int INT;typedef unsigned int UINT;typedef unsigned int *PUINT;typedef UINT WPARAM;typedef LONG LPARAM;typedef LONG LRESULT;其实,windows程序把很多变量进行了重新定义,还记得typedef这个类型定义关键字吧!其实上面的UINT、WPARAM、LPARAM,其实都是unsigned int(无符号整数),其实HWND也是无符号整数,后面我们详细介绍HWND,今后,如果大家见到了一个类型是全大写的,那么它一定是在windows的头文件中重新定义了。
windows的标准窗口Windows的标准窗口。
Windows操作系统是目前世界上最流行的操作系统之一,其用户界面设计简洁、清晰,其中的标准窗口是我们日常使用中最为常见的界面元素之一。
本文将对Windows的标准窗口进行详细介绍,帮助大家更好地理解和使用这一重要的界面元素。
首先,我们来了解一下Windows标准窗口的基本结构。
标准窗口通常由标题栏、菜单栏、工具栏、状态栏和客户区组成。
其中,标题栏位于窗口的顶部,用于显示窗口的标题和控制按钮,如最小化、最大化和关闭按钮。
菜单栏通常位于标题栏下方,包含了各种功能菜单,可以通过点击菜单项来执行相应的操作。
工具栏通常位于菜单栏下方,包含了一些常用的工具按钮,方便用户快速执行一些操作。
状态栏位于窗口的底部,用于显示一些状态信息,如文件大小、缩放比例等。
客户区则是窗口中除去标题栏、菜单栏、工具栏和状态栏之外的区域,用于显示具体的内容。
在Windows标准窗口中,我们可以进行各种操作,如打开、关闭、最小化、最大化和调整窗口大小等。
通过点击窗口右上角的控制按钮,我们可以实现这些操作。
另外,我们还可以通过拖动窗口边框来调整窗口的大小,通过双击窗口标题栏来实现最大化和还原操作,通过双击窗口的左上角图标来实现最小化操作。
除了基本的操作外,Windows标准窗口还支持各种高级功能,如多窗口管理、窗口布局、窗口切换等。
通过使用快捷键或者鼠标操作,我们可以快速实现多个窗口之间的切换和管理,提高工作效率。
另外,Windows还支持将窗口分割成多个区域,方便用户同时查看多个窗口的内容,提高多任务处理能力。
对于开发人员来说,Windows标准窗口也提供了丰富的API接口,可以实现各种自定义的窗口效果和交互功能。
通过调用系统提供的窗口管理函数,开发人员可以实现窗口的创建、显示、隐藏、关闭等操作,还可以实现窗口的拖动、缩放、透明等效果,极大地丰富了窗口的表现形式。
总的来说,Windows的标准窗口是我们日常使用中不可或缺的界面元素,其简洁、清晰的设计和丰富的功能为我们的工作和生活带来了极大的便利。
学号:xxxxxxxxx登录窗口程序设计说明班级:xxxxxxxxxxxxxxx姓名:xxx一、概述为了考察我们这学期的C语言编程能力和对课程的考察,老师通过考察课的形式检验我们.此次考察课老师让我们编写程序并上交程序设计说明.我所抽到的事四个程序当中的登陆窗口.以下是我的这个程序的设计说明.二、设计目的本程序主要训练编写程序的基本技能,掌握基于对话框程序的基本设计方法和技巧。
基于对话框程序,练习编辑框、按钮、静态框的使用,提高程序编写能力。
三、功能描述本程序最重要的就是界面模块——对话框。
这个窗口界面包括4个按键控件和2个显示控件。
按键控件里有2个静态文本框和2个按钮,用来接收数据。
显示控件是编辑框。
显示模块:显示用户名和密码。
四、总体设计1、界面规划2、数据设计本程序是基于对话框的,界面设计就是画框的设计。
在工作区种打开资源视图,并添加一个对话框,向对话框中添加控件,如下图。
资源ID 列入表格:3 、3、函数功能1.主函数WinMain :将原有的窗口程序替换掉,换成新建的对话框程序。
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){return DialogBox(hInst, (LPCTSTR)IDD_DIALOG1, NULL, (DLGPROC)About); }2.窗口处理函数WndProc接收来自窗口的各类消息,分拣处理。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam){int wmId, wmEvent;PAINTSTRUCT ps;HDC hdc;TCHAR szHello[MAX_LOADSTRING];LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);switch (message){case WM_COMMAND:wmId = LOWORD(wParam);wmEvent = HIWORD(wParam);// Parse the menu selections:switch (wmId){case IDM_ABOUT:DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd,(DLGPROC)About);名称 ID 标题 样式对话框 IDD_DIALOG_LOGIN 登录窗口 DS_CENTER按钮 IDOK 确定 默认按钮 IDCANCEL 取消 默认静态框 IDC_STATIC 密码 默认静态框 IDC_STATIC 账号 默认编辑框 IDC_ZHANGHAO编辑框 IDC_MIMA ES_PASSWORDbreak;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}break;case WM_PAINT:hdc = BeginPaint(hWnd, &ps);// TODO: Add any drawing code here...RECT rt;GetClientRect(hWnd, &rt);DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);EndPaint(hWnd, &ps);break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;}3.登录函数,将用户名和密码编写在登录函数中。
第二章:WIN32 窗体程序设计学习目标⏹Win32编程中需要掌握的一些重要概念⏹详解Win32程序⏹理解Win32程序的消息机制⏹Win32程序对鼠标和键盘的控制Win32编程中需要掌握的一些重要概念学习windows编程是一个比较难的过程,主要的障碍是因为windows程序中很多新的东西,我们一下子不能适应,下面我们就来扫清这些障碍:我们在上一章中看到了一个简单的windows程序,大家会发现windows 程序中有很多全大写定义的东西,这就是我们的障碍之一,因为,太多的东西我们以前没有见过,windows程序中全大写的东西可以分为这样三种:第一种是:windows定义的变量比如这句:LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )这是一个方法的定义,这和我们以前的程序就有太多的不同。
下面的列表是从相应windows的头文件中摘下来的,看完这个后,你是否可以理解上面这句话的意思。
#define FAR far#define NEAR near#define CONST const#define CALLBACK __stdcall#define WINAPI __stdcall#define WINAPIV __cdecl#define APIENTRY WINAPI#define APIPRIVATE __stdcall#define PASCAL __stdcalltypedef unsigned long DWORD;typedef int BOOL;typedef unsigned char BYTE;typedef unsigned short WORD;typedef float FLOAT;typedef FLOAT *PFLOAT;typedef BOOL near *PBOOL;typedef BOOL far *LPBOOL;typedef BYTE near *PBYTE;typedef BYTE far *LPBYTE;typedef int near *PINT;typedef int far *LPINT;typedef WORD near *PWORD;typedef WORD far *LPWORD;typedef long far *LPLONG;typedef DWORD near *PDWORD;typedef DWORD far *LPDWORD;typedef void far *LPVOID;typedef CONST void far *LPCVOID;typedef int INT;typedef unsigned int UINT;typedef unsigned int *PUINT;typedef UINT WPARAM;typedef LONG LPARAM;typedef LONG LRESULT;其实,windows程序把很多变量进行了重新定义,还记得typedef这个类型定义关键字吧!其实上面的UINT、WPARAM、LPARAM,其实都是unsigned int(无符号整数),其实HWND也是无符号整数,后面我们详细介绍HWND,今后,如果大家见到了一个类型是全大写的,那么它一定是在windows的头文件中重新定义了。
还有就是:LRESULT CALLBACK,从上面的表中,大家可以看到他们是返回类型和宏定义,其中,LRESULT是long,而CALLBACK是函数的调用方式__stdcall。
第二种是windows的宏定义:在前面,大家看到了__stdcall是一个宏定义,在windows程序中有大量的宏定义,宏定义用于这样几个地方:◆常量所有的消息都是常量,比如前面看到的 WM_KEYDOWN、WM_PAINT等,所有的键盘标识,如VK_ESCAPE,还有就是我们在函数调用中用到的一些参数:如WS_OVERLAPPEDWINDOW, WHITE_BRUSH、IDI_APPLICATION等都是常量◆简单函数用宏如:#define MAKEWORD(a, b)((WORD)(((BYTE)(a)) | ((WORD)((BYTE)(b))) << 8))#define MAKELONG(a,b)((LONG)(((WORD)(a)) | ((DWORD)((WORD)(b))) << 16))#define LOWORD(l) ((WORD)(l))#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF)) #define LOBYTE(w) ((BYTE)(w))#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF)) 以上的都是简单的函数,如LOWORD是表示取一个DWORD(32位整数)的低16位,而HIWORD取高16位◆程序结构中用到宏,今后,我们要学习的消息映射中的BEGIN_MESSAGE_MAP、DECLARE_MESSAGE_MAP等就是在程序结构中用到的宏。
第三中是windows中的结构:windows程序中大量使用结构,对这些结构的掌握程度,可以作为衡量一个程序员对windows程序的熟悉程度,windows程序的结构难,而且结构中的成员非常多,是我们学习的难点。
在上一章的程序中,我们看到的结构有:WNDCLASS、MSG等,学习中,大家应该掌握这些常用结构的常用成员的用法,我们来看看这两个结构typedef struct tagWNDCLASSA {UINT style;WNDPROC lpfnWndProc;int cbClsExtra;int cbWndExtra;HINSTANCE hInstance;HICON hIcon;HCURSOR hCursor;HBRUSH hbrBackground;LPCSTR lpszMenuName;LPCSTR lpszClassName;} WNDCLASSA;typedef struct tagMSG {HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;} MSG;结构中成员的具体含义请看后面的说明。
理解句柄上一章的程序中,我们看到了这样的类型定义HINSTANCE 执行实体(程序自身)句柄HWND 窗口句柄在windows程序中,以H定义开始的变量类型,这个H,我们叫HANDLE(句柄)。
handle的本意是把柄,把手的意思。
是你与操作系统打交道的东西。
举个例子:比如你做了亏心事(我说的是比如,呵呵),不幸让我抓住了把柄,那么我让你做什么你就得做什么,因为你的把柄在我这。
我们编程的时候也是这样,比如我们要想操纵一个窗口,那我们就必须"抓住它的把柄",只有这样,我们才能改变它的属性,改变它的式样,甚至销毁它。
句柄在Windows中使用非常频繁。
句柄是一个,句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数。
(通常为32位的)整数,这就和我们每个人都会有一个身份证编号,我们用这个编号区分不同的人,同样windows用不同的句柄来区分和使用各种各样的应用程序实例,窗口,控制,位图,GDI对象等,如:HWND 窗口HINSTANCE 执行程序实体HMENU 菜单HDC 图形设备HBITMAP 位图HICON 图标HCURSOR 鼠标游标HBRUSH 画刷我们也可以把Windows中的句柄看成传统C或者MS-DOS程序设计中使用的文件句柄。
应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。
句柄的实际值对程序来说是无关紧要的。
只是,我们要知道在程序中间怎样去使用这个句柄,以后,在很多的函数中,第一个参数就会是该对象句柄,如:ShowWindow,UpdateWindow等函数的第一个参数都是窗口句柄。
如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。
我们知道,所谓指针是一种内存地址。
应用程序启动后,组成这个程序的各对象是住留在内存的。
如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。
但是,如果您真的这样认为,那么您就大错特错了。
我们知道,Windows是一个以虚拟内存为基础的操作系统。
在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。
对象被移动意味着它的地址变化了。
如果地址总是如此变化,我们该到哪里去找该对象呢?为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。
Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。
这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。
这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。
句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。
但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。
假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。
详解Win32程序一个典型的windows程序结构是这样的:WinMain部分:填充窗口结构 --> 注册窗口信息 --> 建立窗口 --> 显示窗口 --> 消息循环消息处理部分:是一个大的switch case 结构,根据不同的消息类型,进行不同的处理。
对于WinMain部分,一般都是固定不变的,我们不需要做太多的变动,只是,我们想改变窗口的一些特性时才需要修改,比如,我们想改变窗口的大小、背景色、图标等,我们就需要更改相应的部分,下面我们看看改动的两个主要地方:窗体结构WNDCLASStypedef struct tagWNDCLASSA{UINT style ;WNDPROC lpfnWndProc ;int cbClsExtra ;int cbWndExtra ;HINSTANCE hInstance ;HICON hIcon ;HCURSOR hCursor ;HBRUSH hbrBackground ;LPCSTR lpszMenuName ;LPCSTR lpszClassName ;}WNDCLASSA, * PWNDCLASSA, NEAR * NPWNDCLASSA, FAR * LPWNDCLASSA ;在这里提示一下资料型态和匈牙利表示法:其中的lpfn字首代表「指向函数的长指针」。