window程序设计
windows程序设计概论
windows程序设计概论Windows程序设计概论Windows程序设计是指在Windows操作系统上开发应用程序的过程。
Windows操作系统是目前全球使用最广泛的操作系统之一,因此Windows程序设计也是非常重要的一项技能。
Windows程序设计的基础是掌握Windows操作系统的基本知识,包括Windows操作系统的架构、文件系统、进程管理、内存管理、网络通信等方面的知识。
此外,还需要掌握Windows API的使用方法,Windows API是Windows操作系统提供的一组函数和数据结构,可以用来访问操作系统的各种功能。
在Windows程序设计中,常用的编程语言包括C++、C#、Visual Basic等。
其中,C++是一种面向对象的编程语言,可以使用Windows API和MFC(Microsoft Foundation Classes)等框架进行Windows程序设计;C#是一种基于.NET框架的编程语言,可以使用Windows Forms和WPF(Windows Presentation Foundation)等框架进行Windows程序设计;Visual Basic是一种基于COM (Component Object Model)的编程语言,可以使用Windows Forms和WPF等框架进行Windows程序设计。
在Windows程序设计中,常见的应用程序包括桌面应用程序、游戏、多媒体应用程序、网络应用程序等。
桌面应用程序是指在Windows桌面上运行的应用程序,如文本编辑器、图像处理软件、办公软件等;游戏是指在Windows上运行的各种游戏,如角色扮演游戏、射击游戏、赛车游戏等;多媒体应用程序是指在Windows上播放音频和视频的应用程序,如音乐播放器、视频播放器等;网络应用程序是指在Windows上进行网络通信的应用程序,如浏览器、邮件客户端等。
Windows程序设计的开发工具包括Visual Studio、Code::Blocks、Dev-C++等。
mfc windows程序设计pdf
mfc windows程序设计pdf在MFC Windows程序设计方面,一本广为人知的经典教材便是《MFC Windows程序设计》(第二版)(英文名:Programming Windows with MFC,2nd Edition),作者是美国著名计算机科学家、程序员Jeff Prosise。
1. 书籍简介本书提供了最新的关于 MFC 的开发信息,包括类概述、实用性示例和大量的代码。
这本书是关于使用 Microsoft Foundation Classes (MFC) 的高质量 C++ 编程的经典读物,是学习 Windows 编程的好帮手。
本书涵盖的主题包括:• 应用程序设计的基础知识;• 对基本 GUI 元素的快速介绍(即窗口、控件和对话框);• 框架、对象模型、消息、应用程序类等 MFC 概念。
• 最具实用性的 MFC 标准和扩展类。
• 如何使用典型的 MFC 应用程序来编写自己的应用程序,例如,SDI、MDI、 CFormView 和 CScrollView 应用程序。
2. 书籍收获通过阅读《MFC Windows程序设计》,你将学习到:• 如何使用 Microsoft Foundation Classes 开发 Windows 应用程序;• 构建Microsoft Windows应用程序所需的 MFC 编程技能;• MFC 的内部原理;• 可以在 MFC 库中找到的最常用的 Windows 控件;• 用于创建自定义 Windows 控件的 MFC 类;• 如何用 C++ 编写面向对象的 Windows 应用程序;• 如何使用 Microsoft Foundation Classes 创建常见的面向Windows 和 Internet 的应用程序。
3. 书籍价值这本书不仅对MFC的使用者有价值,也对任何Windows程序员有价值。
尽管这是一本 MFC 专注的书籍,但是它还是会对学习 Windows 程序设计的读者产生巨大的指导和启示。
WINDOWS程序设计
WINDOWS程序设计Windows程序设计是一门非常重要的计算机科学领域,用于开发运行在Windows操作系统上的应用程序。
它可以涵盖从简单的桌面应用程序到复杂的企业级应用程序的开发。
在过去的几十年中,Windows程序设计已经取得了巨大的发展和进步,为我们的日常生活和工作提供了方便和便利。
首先,我们来了解一些Windows程序设计的基本概念和原理。
Windows操作系统提供了一系列的应用程序编程接口(API),开发者可以通过这些API来获取操作系统的功能和资源。
这些API包括图形用户界面(GUI)API、文件和存储管理API、网络通信API等。
通过使用这些API,开发者可以实现用户界面的设计、文件的读写、数据库的操作、网络通信等功能。
在进行Windows程序设计时,开发者需要了解Windows操作系统的基本架构和工作原理。
Windows操作系统由内核(Kernel)和系统服务(System Services)组成。
内核负责管理计算机硬件和操作系统的核心功能,而系统服务则提供了更高级的功能,如内存管理、进程管理、文件系统等。
开发者可以通过使用Windows API来与内核和系统服务进行交互,实现自己的应用程序需求。
Windows程序设计的开发过程通常包括需求分析、系统设计、编码实现和测试等阶段。
需求分析阶段是在与用户和项目相关人员交流的基础上,明确应用程序的功能和需求。
系统设计阶段则是根据需求分析的结果来设计应用程序的结构和模块。
编码实现阶段是将设计的方案转化为实际的源代码,即编写程序。
测试阶段是通过对程序进行测试,验证其功能和性能是否符合预期。
除了以上的基本概念和原理之外,Windows程序设计还涉及到一些高级的技术和概念。
例如,多线程编程可以提高程序的并发性和响应能力。
用户界面设计可以提升应用程序的易用性和用户体验。
网络编程可以实现应用程序之间的通信和数据交换。
安全编程可以确保应用程序的安全性和可靠性。
windows程序设计 (2)
Windows程序设计简介Windows程序设计是指在Windows操作系统上开发和设计应用程序。
Windows操作系统提供了丰富的应用程序开发工具和API,使开发者能够利用各种编程语言(如C++、C#、等)开发功能强大、丰富多样的应用程序。
在Windows上进行程序设计可以涵盖很多方面,包括图形用户界面(GUI)设计、操作系统交互、网络通信、以及与硬件设备的交互等。
本文将重点介绍Windows程序设计的基本概念和一些常用的开发工具和技术。
开发工具在Windows上进行程序设计,可以使用各种开发工具和集成开发环境(IDE)来简化开发过程。
以下是一些常用的Windows程序设计开发工具:1.Visual Studio:Visual Studio是一套功能强大的集成开发环境,由Microsoft开发和维护。
它支持多种编程语言,包括C++、C#、Visual Basic等,并且提供了丰富的开发工具和调试功能。
2.Dev-C++:Dev-C++是一个免费开源的C++编程环境,它提供了一个简单易用的集成开发环境,并且可以方便地编译和调试C++程序。
3.Code::Blocks:Code::Blocks是一个开源的跨平台集成开发环境,支持多种编程语言,包括C++、C等。
它提供了丰富的插件和功能,可以方便地进行Windows程序设计。
除了以上列举的开发工具,还有其他一些可供选择的开发工具,开发者可以根据自己的需求和喜好来选择合适的工具。
Windows程序设计基础在进行Windows程序设计之前,了解Windows操作系统的基本概念和原理是非常重要的。
以下是一些Windows程序设计中常用的基础知识:1.Windows窗口:Windows窗口是Windows程序的基本界面单元。
每个窗口都有自己的窗口过程(WindowProcedure),用于处理窗口消息和事件。
2.控件和对话框:Windows程序中常用的GUI元素称为控件,如按钮、文本框、列表框等。
windows程序设计实验报告
Windows程序设计实验报告姓名:学号:030940125学科:计算机科学与技术指导老师:试验分数:实用文档实验一错误处理 (5)一、实验目的: (5)二、实验过程: (5)1、实验环境设置: (5)2、实验实现过程: (6)(a) 在对话框中建立如下控件: (6)(b) 响应“查询”按钮函数: (6)(c) 新建类class GetErrorInformation (6)(d) 新建成员函数:TCHAR *GetErrorInformation::GetErrorString() (7)三、实验核心代码: (7)1、类class GetErrorInformation成员函数代码: (7)2、查询函数: (10)四、实验结果: (11)实验二unicode实验 (12)一、实验目的 (12)二、实验过程 (12)实用文档三、实验核心代码 (14)1、Uchar类成员函数的实现: (14)2、入口函数的实现: (19)四、实验结果: (20)实验三内核对象 (11)一、实验目的 (21)二、实验过程 (21)三、实验核心代码 (22)四、实验结果 (24)实验四系统进程控制 (26)一、实验目的 (26)二、实验过程 (26)三、实验核心代码 (27)1、启动进程 (27)2、退出进程 (28)3、进程目录 (29)四、实验结果 (29)实用文档实验五线程实现 (31)一、实验目的 (31)二、实验过程 (31)三、实验核心代码 (33)四、实验结果 (36)实用文档实验一错误处理一.实验目的:通过对windows代码的纠错处理,达到能检测所写代码的错误,以及系统运行的要求。
熟悉纠错功能的运行过程。
学会运用纠错功能。
二,实验过程:1,实验环境设置:在visual C++ 6.0 中新建mfc工程,命名为dlgerror,完成进入编辑状态。
实用文档2,实验实现过程:a ,在对话框中建立如下控件:b ,响应“查询”按钮函数:void CDlgErrorDlg::OnButtonLookup() 。
mfc windows程序设计pdf
mfc windows程序设计pdf
请注意,我的编程能力无法判断某个PDF文档是否存在或者其内容是否涉及版权问题,请您自行查询和判断相关内容的合法性。
参考内容:
1. 《Windows程序设计(第5版)》PDF,作者:Charles Petzold
2. 《深入浅出MFC》PDF,作者:侯捷
3. 《MFC程序设计基础》PDF,作者:熊安泉
4. 《Windows编程从入门到精通》PDF,作者:王道培
5. 《Visual C++ GUI编程基础》PDF,作者:罗远航
6. 《MFC程序设计实例解析》PDF,作者:朱睿
7. 《MFC程序设计教程》PDF,作者:谢彬彬
8. 《Windows图形界面程序设计》PDF,作者:王绍琛
9. 《Visual C++ MFC程序设计技巧与实例》PDF,作者:Geoffrey T. LeBlond
10. 《MFC程序设计指南》PDF,作者:周邦新
11. 《MFC程序设计高级技巧与例解》PDF,作者:孙加帆
12. 《Windows程序开发实战》PDF,作者:何应钦
以上仅供参考,如有需要请自行搜索下载。
windows程序设计概论
windows程序设计概论Windows程序设计概论Windows程序设计是指在Windows操作系统上开发和编写应用程序的过程。
随着计算机技术的不断发展,Windows操作系统成为了世界上最流行的操作系统之一,因此掌握Windows程序设计的基本知识成为了程序员的必备技能之一。
本文将从基本概念、开发工具、编程语言以及常用技术等方面介绍Windows程序设计的相关内容。
一、基本概念1.1 Windows操作系统Windows操作系统是由美国微软公司开发的一款图形化操作系统,具有用户友好的界面和丰富的功能。
它提供了一种便捷的平台,使得开发者可以利用其强大的功能来创建各种应用程序。
1.2 Windows应用程序Windows应用程序是在Windows操作系统上运行的软件程序,可以实现各种功能,如文档处理、图形处理、多媒体播放等。
通过编写代码和使用开发工具,开发者可以将自己的想法转化为实际的应用程序。
二、开发工具2.1 Visual StudioVisual Studio是微软公司推出的一款集成开发环境(IDE),提供了丰富的开发工具和功能,如代码编辑器、调试器、编译器等。
它支持多种编程语言,如C++、C#等,可以帮助开发者高效地编写和调试Windows应用程序。
2.2 .NET Framework.NET Framework是一个应用程序开发平台,提供了一系列的类库和工具,用于简化Windows应用程序的开发过程。
它支持多种编程语言,并提供了丰富的API,使得开发者可以轻松地访问操作系统的功能和资源。
三、编程语言3.1 C++C++是一种通用的编程语言,广泛用于系统级编程和高性能应用程序的开发。
它在Windows程序设计中被广泛使用,可以直接访问操作系统的底层功能,并提供了丰富的类库和工具,使得开发者可以灵活地控制和管理应用程序。
3.2 C#C#是一种面向对象的编程语言,专门用于Windows应用程序的开发。
Windows程序设计
• 实质:在显示程序窗口之前,创建窗口显示位图,经过适当 延时后,关闭位图窗口,继续程序运行
• 矢量图:采用数学方法来描述构成图像的一系列形状和线段 2. 位图的彩色模式
• 颜色深度:描述每个像素占用的二进制位数 • 彩色模式:在描述颜色时,需要对颜色数字化,在显示颜色时,
需要解析描述颜色的数据并将颜色信息恢复到输出设备上,这 种描述颜色的数值化方法称为彩色模式,RGB、CMYK 3. Windows中的位图 • DDB位图:依赖与显示设备的位图 • DIB位图:设备无关位图
息映射接替按钮类的消息映射 6. 更简洁的方法:
• 添加按钮控件,制作位图并插入位图资源中 • 设置按钮的Caption属性(英文不重复),设置字符串标识符为
对应按钮的Caption(转换为大写)加上表示状态的大写字母 (U、D、F、X) • 定义CBitmapButton成员变量,在构造函数中调用AutoLoad成 员,自动实现按钮与位图资源的关联
位图的结构与表示
1. DDB位图的结构与表示 • 与设备相关位图只能存在于内存中 • 结构信息由结构体BITMAP描述,说明位图类型、尺寸、 颜色格式、位数等信息
• CBitmap类封装了对DDB位图的操作 2. DIB位图:可以以磁盘文件的形式存在,描述信息由以下四个
部分构成
• 文件头:BITMAPFILEHEADER结构体描述,说明类型、 文件大小(字节)及图形数据的起始位置
1. 位图的基本概念 • 位图基础知识 • 位图的结构与表示
Windows程序设计-大学模拟题(附答案)
《Windows程序设计》模拟题一,单选题1.所有的Windows应用程序都是由()驱动的.A.事件B.消息C.命令D.菜单[答案]:B2.一般应用程序不会派生自己的()类.A.主框架B.视图C.菜单D.文档[答案]:C3.MessageBox不能完成()功能.A.接收用户输入B.显示消息C.改变对话框标题D.显示问号图标[答案]:A4.Windows系统中的消息不包括().A.标准Windows消息B.控件消息C.命令消息D.视图消息[答案]:D5.()函数是从CView继承来的成员函数,用于刷新整个视图窗口屏幕.A.InvalidateB.MouseMoveC.PaintD.Brush[答案]:A6.菜单()消息,处理菜单状态的动态变化.A.UPDA TE_UIB.UPDATEMANDD.UPDA TE_COMMAND_UI[答案]:DmdUI类的常用成员函数()使菜单项前增加或清除√标志.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:A8.编辑菜单时为使字母下带下划线,应使用助记符().A.@B.#C.&D.$[答案]:CmdUI类的常用成员函数()使菜单项前增加或清除圆点标志.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:BmdUI类的常用成员函数()设置菜单项有效或无效.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:DmdUI类的常用成员函数()改变菜单项文本.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:C12.CDC的常用函数()可以绘制矩形.A.EllipseB.RectangleC.ArcD.Circle[答案]:B13.应用程序可以使用GDI创建3种类型的图形输出,不包括().A.矢量图形C.光栅图形D.文本[答案]:B14.CDC的常用函数()可以绘制内接矩形的圆.A.EllipseB.RectangleC.ArcD.Circle[答案]:A15.()函数用于在指定位置输出字符串.A.PrintB.TextOutC.ScanfD.Write[答案]:B16.在View的在普通成员函数体内用()获得设备环境.A.CDCB.CWindowDClientDClassDC[答案]:C17.创建画笔不需要给出()参数.A.风格B.宽度C.颜色D.长度[答案]:D18.实线画笔的风格应用()宏.A.PS_SOLIDB.PS_DASHC.PS_DOTD.PS_DASHDOT[答案]:A19.实心画刷只需要定义().A.填充样式B.填充颜色C.填充模式[答案]:B20.对话框()描述对话框的外观和控件布局,在资源描述文件中有对话框的定义.A.资源B.类C.模板D.数据[答案]:A21.调用对话框类的对象的方法,创建并显示模态对话框.A.Print()B.Create()C.DoModal()D.Show()[答案]:C22.CDialog中的()成员函数用于成员变量和控件之间的数据传递.A.ExchangeB.ToDoC.EXTD.UpdateData[答案]:D23.静态控件不包括().A.静态文本B.按钮C.静态图片D.组框[答案]:B24.()不是编辑框的消息.A.BN_CLICKEDB.EN_CHANGEC.EN_KILLFOCUSD.EN_SETFOCUS[答案]:A25.()设置进度条的当前位置.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:C26.()设置进度条范围.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:A27.()设置进度条填充步长.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:B28.()让进度条前进一个步长.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:D29.文档和视图的关系是().A.一对一B.一对多C.多对一D.多对多[答案]:B30.在视图类中获得文档类对象指针用函数().A.GetDocumentB.UpdateAllViewsC.OnUpdateD.SetModifiedFlag[答案]:A31.Win32应用程序入口函数是().A.MainB.EntranceC.WinMainD.Inlet[答案]:C32.创建窗口工作()不在WinMain中完成.A.设计窗口类B.注册窗口类C.创建窗口D.窗口过程[答案]:D33.项目文件的扩展名是().A.exeB.dspC.dswD.cpp[答案]:B34.利用ClassWizard不能().A.建立新类B.进行消息映射C.增加类的成员变量D.插入资源[答案]:D35.下列()不是MFC消息映射机制有关的宏.A.DECLARE_MESSAGE_MAPB.BEGIN_MESSAGE_MAPC.DECLARE_SERIALD.END_MESSAGE_MAP[答案]:C36.要使鼠标箭头在按钮上暂停时能显示工具栏按钮提示,必须设置工具栏的风格为().A.CBRS_TOOLTIPSB.CBRS_FL YBYC.CBRS_NOALIGND.WS_VISIBLE[答案]:B37.当滑块滑动时,滑块条控件将发送滚动消息来通知父窗口,水平滑动条发送()消息.A.WM_CHARB.WM_HSCROLLC.WM_VSCROLLD.WM_CHANGE[答案]:B38.要将模式对话框在屏幕上显示需要用到().A.CreateB.DoModalC.OnOKD.构造函数[答案]:B39.当滑块滑动时,滑块条控件将发送滚动消息来通知父窗口,垂直滑动条发送()消息.A.WM_CHARB.WM_HSCROLLC.WM_VSCROLLD.WM_CHANGE[答案]:C40.以下控件中,()没有Caption属性.A.按钮B.组框C.编辑框D.静态文本框[答案]:C41.关于工具栏,菜单和加速键的关系,正确的说法是().A.工具按钮与菜单必须一一对应B.工具栏与加速键一一对应C.工具按钮不必与菜单一一对应D.菜单与加速键一一对应[答案]:C42.使用GetDC()获取的设备上下文在退出时,必须调用()释放设备上下文.A.ReleaseDC()B.deleteC.DeleteDC()D.Detach()[答案]:A43.列表框CListBox类的成员函数()用来向列表框增加列表项.A.AddString()B.DeleteString()C.ResetContent()D.FindString()E.GetCount()[答案]:A44.列表框CListBox类的成员函数()用来清除列表项所有项目.A.AddString()B.DeleteString()C.ResetContent()D.FindString()E.GetCount()[答案]:C45.下面()不是MFC设备环境类CDC类的派生类.A.GDIB.CPaintDClientDCD.CWindowDC[答案]:A46.()是非模态对话框.A.查找对话框B.字体对话框C.段落对话框D.颜色对话框[答案]:A47.使用()通用对话框类可用打开文件.A.CFileDialogolorDialogC.CPrintDialogD.CFontDialog[答案]:A48.常见的菜单类型不包括().A.自动菜单B.主菜单C.弹出菜单D.快捷菜单[答案]:A49.下列()不是MFCCDC类中常用的函数.A.TextOutB.EllipseC.RectangleD.CreateRedText[答案]:D50.对话框的功能被封装在()类中.A.CWndB.CDialogC.CObjectmdTarget[答案]:B51.Windows标准控件的属性设置通常由三个选项卡构成,不包括()A.ColorB.GeneralC.StyleD.ExtendStyles[答案]:A52.菜单项助记符前用()引导.A.%B.&C.#D.$[答案]:B53.更新菜单状态的消息是().MANDB.UPDATEC.UPDATE_COMMAND_UID.INV ALIDATE[答案]:C54.能间接调用视图类的OnDraw函数的是()A.OnTimerB.LButtonDownC.SerializeD.Invalidate[答案]:D55.下列()不是MFC消息映射机制有关的宏.A.DECLARE_MESSAGE_MAPB.BEGIN_MESSAGE_MAPC.DECLARE_SERIALD.END_MESSAGE_MAP[答案]:C56.下面()不是GDI对象.A.CFontB.CPalettelientDCD.CBitmap[答案]:C57.列表框的类型不包括()A.SimpleB.DropdownC.DropListD.Scroll[答案]:D58.设置编辑框控件的文本内容,可使用函数()A.SetWindowTextB.SetSelC.ReplaceSelD.GetWindowText[答案]:A59.使用()函数获取的设备上下文在退出时必须调用ReleaseDC释放.A.GetWindowsDCB.GetDCC.GetDesktopDCD.GetClientDC[答案]:B60.类CButton不是下列()控件对应的类.A.命令按钮B.单选按钮C.复选框D.静态文本框[答案]:D61.列表框CListBox类的成员函数()用来返回列表框的列表项总数.A.AddString()B.DeleteString()C.ResetContent()D.FindString()E.GetCount()[答案]:F62.滑动条是由滑动块和刻度线构成,按指定增量移动,CSliderCtrl类的成员函数()代表设置滑动块位置.A.SetRange()B.SetPos()C.SetTic()D.SetPoint()E.SetTicFreq()[答案]:B63.滑动条是由滑动块和刻度线构成,按指定增量移动,CSliderCtrl类的成员函数()代表设置刻度线位置,一次只能设置一个刻度线,用于手动设置刻度线.A.SetRange()B.SetPos()C.SetTic()D.SetPoint()E.SetTicFreq()[答案]:C64.滑动条是由滑动块和刻度线构成,按指定增量移动,CSliderCtrl类的成员函数()代表设置刻度线的疏密程度,配合Autoticks属性使用,每隔一定单位自动显示一条刻度线.A.SetRange()B.SetPos()C.SetTic()D.SetPoint()E.SetTicFreq()[答案]:F二,判断题1.UpdateData(true)函数完成成员变量的值传递给控件的操作.[答案]:F2.基于对话框的应用程序,也有文档类和视图类.[答案]:F3.调用DestroyWindow函数完成非模态对话框的销毁工作.[答案]:T4.每个对话框资源都会关联一个对话框类,常派生于CDialog,通过该类对象间接操纵对话框. [答案]:T5.基于对话框的应用程序在运行时也有菜单栏.[答案]:F6.对话框的功能被封装在CDialog类中.[答案]:T7.使用CColorDialog通过对话框类可以显示颜色对话框.[答案]:T8.DDX为对话框数据交换用.[答案]:T9.DDV完成成员变量和控件之间的交换.[答案]:F10.OnOK函数中进行对话框的初始化工作.[答案]:F11.对话框只由对话框类组成.[答案]:F12.从对话框的工作方式看,对话框可分为模式对话框和非模式对话框.[答案]:T13.查找对话框是模式对话框.[答案]:F14.颜色对话框是非模式对话框.[答案]:F15.每一个单选按钮在对话框类中都可以映射一个int类型值变量.[答案]:F16.当编辑框中的文本已被改变,在新的文本显示之后发送EN_CHANGE通知消息.[答案]:T17.CButton类控件只有按键按钮一种类型.[答案]:F18.一组单选按钮在组中的序号从1开始.[答案]:F19.向列表框增加列表项只能使用CListBox类成员的AddString函数.[答案]:F20.一个旋转按钮控件与一个相伴的控件一起使用时,该控件的Tab键次序必须大于旋转按钮. [答案]:F21.进度条控件的操作封装在CProgressCtrl类.[答案]:T22.多个静态文本控件必须有不同的ID号.[答案]:F23.调用Create成员函数创建动态分割窗口.[答案]:T24.调用Create成员函数创建静态分割窗口.[答案]:F25.视图派生类的成员函数通过调用GetDocument函数得到当前文档对象的指针.[答案]:T26.用户可以通过项目工作区窗口的ResourceView视图来查看资源.[答案]:T27.利用MFC编程时,所有的消息与消息处理函数的添加都必须采用ClassWizard类向导来完成.[答案]:F28.窗口是Windows应用程序的基本操作单元,是应用程序与用户之间交互的接口环境,也是系统管理应用程序的基本单位.[答案]:T29.Windows应用程序的入口也是main函数.[答案]:F30.键盘鼠标消息都是命令消息.[答案]:F31.使用MFCAppWizard[exe]向导创建应用程序框架时,向导生成的文件名和类名是不可以更改的.[答案]:F32.消息映射是将消息处理函数与要处理的特定消息连接起来的一种机制.[答案]:T33.命令消息是由菜单项,工具栏按钮和快捷键等用户界面对象发出的WM_COMMAND消息.[答案]:T34.用快捷键F9既可设置断点,又可取消断点.[答案]:T35.调试程序时,会同时出现Variable窗口和Watch窗口.[答案]:T36.Windows是一个基于事件的消息驱动系统.[答案]:T37.MFC采用消息映射来处理消息.[答案]:T38.WM_RBUTTONDOWN是鼠标右键按下时产生的消息.[答案]:T39.给菜单项定义快捷键,只需在菜单项属性设置对话框的Caption文本框中说明即可. [答案]:F40.快捷菜单一般出现在鼠标箭头的位置.[答案]:T41.UPDATE_COMMAND是更新命令用户接口消息.[答案]:F42.工具栏停靠特性只能设置一次.[答案]:T43.状态栏的功能由CToolBar类实现.[答案]:F44.CMenu类,CToolBar类和CStatusBar类的根基类是相同的.[答案]:T45.菜单选择只可以通过鼠标操作来完成.[答案]:F46.状态栏可以通过资源编辑器来编辑.[答案]:F47.MFC应用程序框架为状态栏定义的静态数组indicators放在MainFrm.h文件中. [答案]:F48.在菜单设计时,&字符的作用是使其后的字符加下划线.[答案]:TlientDC代表整个窗口的设备环境.[答案]:F50.删除CPen对象可调用CPen对象的DeleteObject函数.[答案]:F51.DDB又称GDI位图,它依赖于具体设备,只能存在于内存中.[答案]:T52.创建阴影画刷函数是CreateHatchBrush.[答案]:T53.深绿色RGB值为(0,128,0).[答案]:T54.Windows引入GDI的主要目的是为了实现设备相关性.[答案]:F55.Windows用COLORREF类型的数据存放颜色.[答案]:T56.Windows是按图形方式输出字符的.[答案]:T57.TextOut是CDC类中常用的文本输出函数.[答案]:T58.创建画笔后必须调用CDC类的成员函数SelectObject将画笔选人当前设备环境. [答案]:T59.对话框创建后,发送WM_CREATE消息,在该消息处理代码中创建各控件.[答案]:T60.通过AppWizard建立的程序不能被立即执行.[答案]:F61.打开一个项目,只需打开对应的项目工作区文件.[答案]:T62.在同一项目中,VisualC++在内部用来标识资源的资源符号不能重复.[答案]:T63.在Windows环境下,资源与程序源代码紧密相关.[答案]:F64.用户可以通过选择Tools|Customize菜单命令设置集成开发环境的工具栏.[答案]:T65.项目工作区文件的扩展名为dwp.[答案]:F66.Ctrl+F5是编辑程序的快捷键.[答案]:F67.F7是运行程序的快捷键.[答案]:F三,填空题1.项目工作区文件的扩展名是###.[答案]:dsw2.修改公司,描述等信息需用###编辑器.[答案]:Version3.利用###可以快速创建各种风格的应用程序框架,并可自动生成程序通用的源代码.[答案]:应用程序向导4.启动VisualC++,进入VisualC++IDE,从###菜单上选择New菜单项,此时将弹出New对话框[答案]:应用程序向导5.利用###可以快速创建各种风格的应用程序框架,并可自动生成程序通用的源代码[答案]:File6.句柄是Windows使用的一种无重复整数,主要用来###.[答案]:标识应用程序中的一个对象7.一个单文档的MFC应用程序框架一般包括5个类:应用程序类,框架窗口类,###,文档类和文档模板类.[答案]:视图类8.用户点击菜单项后,会产生###消息.[答案]:WM_COMMAND9.改变菜单项文本是使用CCmdUI类的###成员函数.[答案]:SetText10.处理菜单命令消息首先会在###类中.[答案]:视图11.弹出快捷菜单使用的是CMenu类的###函数.[答案]:TrackPopupMenu12.在状态栏中添加文本使用的是CStatusBar类的###函数.[答案]:SetPaneText13.与DOS字符方式下的输出不同,Windows是按###方式输出的.[答案]:图形14.为了体系Windows的设备无关性,应用程序的输出面向一个称为###的虚拟逻辑设备. [答案]:设备环境15.可以利用CGdiObject类的成员函数###将GDI对象设置成指定的库存对象.[答案]:CreateStockObject16.对话框的主要功能是###和输出信息.[答案]:接收用户输入17.使用###函数可用创建非模式对话框.[答案]:Create18.每个控件最多只能关联Control和Value类型成员变量各###个.[答案]:119.一组单选按钮在对话框类中只能映射一个###类型值变量,对应单选按钮在组中的序号,序号从0开始.[答案]:int。
windows程序设计实验报告
windows程序设计实验报告《Windows程序设计》实验报告实验室: S306(308)学院:计算机科学与技术专业:计算机科学与技术⽬录实验⼀、熟悉visual c++的编程环境 (3)⼀、实验⽬的和要求: (3)⼆、实验内容、程序清单及运⾏结果: (3)1.编辑第⼀个C++程序 (3)2. ⽤AppWizard建⽴⼀个MFC Windows应⽤ (3)3. 编写简单的计算程序 (4)运⾏结果: (4)三、⼼得体会: (4)实验⼆、对话框的使⽤ (5)⼀、实验⽬的和要求: (5)⼆、实验内容、程序清单及运⾏结果 (5)实验步骤: (5)实验结果: (7)三、⼼得体会: (7)实验三、创建⼀个进程来运⾏⼀个应⽤程序 (8)⼀、实验要求和⽬的 (8)⼆、实验内容、程序清单及运⾏结果 (8)实验步骤: (8)实验结果: (9)三、实验⼼得 (9)实验四、调整线程优先级 (10)⼀、实验要求和⽬的 (10)⼆、实验内容、程序清单及运⾏结果 (10)实验步骤: (10)实验结果: (11)三、实验⼼得 (11)实验⼀、熟悉visual c++的编程环境⼀、实验⽬的和要求:1.了解和使⽤VC集成开发环境2.熟悉VC环境的基本命令和功能键,3.熟悉常⽤的功能菜单命令4.学习使⽤VC++环境的帮助5.学习完整的C++程序开发过程6.理解简单的C++程序结构7.了解⽤Visual C++开发Windows MFC应⽤程序的过程⼆、实验内容、程序清单及运⾏结果:1.编辑第⼀个C++程序源程序代码://hello world example#includeint main() {cout << "hello!"<< endl ;return 0; //正常返回}运⾏结果:2. ⽤AppWizard建⽴⼀个MFC Windows应⽤在窗⼝中输出"Hello,World!",修改OnDraw函数的定义,在最后⼀⾏加⼀句:pDC->TextOut(50,50,"Hello, World");运⾏结果:3. 编写简单的计算程序输⼊圆的半径,计算圆的周长和⾯积并输出。
Windows程序设计-第02章-Win32编程基础知识
在C语言的世界里,所有的程序都是用函数来装配的,main称之为主函数,是所有程序运行的入口。main函数可以无参,也可以有参,但标准的C语言,main函数是有参函数,其形式如下所示:
int main(int argc, char* argv[])
{
printf("Hello World!\n");
第2章
Windows编程,大家也通常称为win32编程,或win32 SDK编程,其含义是针对32位Windows操作系统。本章节回顾了C语言的入口函数,再引入Win32入口函数,通过win32开发所需要的相关知识,巩固对Win32编程的理解。
Win32编程具体的功能是什么?它是为Windows系统编写应用程序的工具或手段,目的是为了服务于系统用户。当然,Win32程序就是所有可以在Windows系统下运行的程序的统称。因为Windows是由很多窗口组成,所以这里所指的Windows程序,即为窗口程序。
char *
LPSTR, PSTR
const char *
LPCSTR, PCSTR
void
VOID
void *
LPVOID
Win32的数据类型众多,有上百个,记忆时可以使用一些技巧,切勿死记硬背,拿“LPCSTR、PCSTR”为例:
“LP”与“P”代表同一含义,即指针;
“C”代表“const”;
“STR”则代表字符串。
2.2
C语言有入口函数,当然Win32编程也有入口函数,虽然它们的写法有所不同,但同为入口函数,基本功能是一样的。不一样的是Win32的入口函数相对来说更为复杂,它为窗口应用程序提供相应的参数。为了让大家更好的了解Win32入口函数的参数,先来了解一下C语言的一些参数,表2.1描述了常用的数据类型。
Windows程序设计案例教程习题解答
Windows程序设计案例教程习题解答《Windows程序设计案例教程》习题解答第1章1.1 选择题 Framework是一种(B )。
A、编程语言B、程序运行平台C、操作系统D、数据库管理系统2.用Visual 编写的程序被编译成中间语言(MSIL)后,运行时还要再一次被编译,这种编译被称为( B )。
A、CLRB、JITC、GCD、GDIing namespace的作用是表示( A )。
A、引入名字空间B、使用数据库C、使用一个文件D、使用一段程序4.要使程序运行,需要按( B )键。
A、F5B、Ctrl+F5C、F10D、F115.C#中的数据类型有( A )和( C)两种。
A.值类型 B.调用类型 C.引用类型 D.关系类型 6.以下运算符中,(A )是三目运算符。
A.?: B.―― C.= D.<= 7.下列不能为类的成员的是(D)。
A、属性B、方法C、索引器D、接口8.下列哪一个不是类的成员的访问修饰符( B )A、privateB、baseC、publicD、protected 9. 调用构造函数创建对象时,通常使用(B )关键字。
A.typeofB.newC.asD.is10.关键字virtual只能用来修饰类的( B )成员。
A.字段B.方法C.属性D.常量11.用( B)关键字定义的方法,属于整个类而不属于类的某一个具体实例。
A.publicB.staticC.protectedD.private12.在属性的访问声明中,对属性的读操作用( B )关键字标出,表明属性的值是只读的,不能改写。
A.setB.getC.privateD.public13.声明了一个数组Array[13],则Array[3]表示第( B )个元素。
A.3B.4C.5D.无法知道14.在C#中,多继承通过( B )来实现A.属性 B.接口 C.索引器 D.方法15.采用异常处理格式编写程序的目的在于使程序( D )。
Windows程序设计复习资料(完整答案)
Windows程序设计复习资料(完整答案)⼀、单项选择题:1.WinMain()函数的⼯作。
WinMain()函数是Windows程序的⼊⼝点在WinMain中进⾏:注册窗体类、建⽴窗体、显⽰窗体、更新窗体、建⽴消息循环2.⾮MFC的Windows程序中,不是处理WM_PAINT消息的时候怎样获得客户区的设备环境句柄。
BeginPaint ----------EndPaintGetDC---------------ReleaseDC(成对出现)利⽤GetDC()函数获取设备环境句柄3.句柄的含义。
句柄是⼀个(通常为32位的)⽆符号整数(unsigned int),它代表⼀个内核对象内核对象在应⽤层的表⽰4.在MM_TEXT映射模式下,什么情况下客户坐标和逻辑坐标可能不同。
当窗⼝客户区有滚动条时客户坐标和逻辑坐标可能不同5.Windows程序的控制流程。
Windows程序没有固定的控制流程,事件驱动程序控制流程6.事件驱动、消息驱动的概念。
事件驱动程序设计是⼀种全新的程序设计⽅法,它不是由事件的顺序来控制,⽽是由事件的发⽣来控制,⽽这种事件的发⽣是随机的、不确定的,并没有预定的顺序,这样就允许程序的的⽤户⽤各种合理的顺序来安排程序的流程。
消息是事件到达Windows内部后的称呼7.对话框、控件的作⽤。
对话框是程序与⽤户之间进⾏交互,接收⽤户输⼊、并把数据显⽰出来的⼀个窗⼝;控件是⽤户可与之交互以输⼊或操作数据的对象。
控件通常出现在对话框中或⼯具栏上。
8.MFC中怎样处理WM_PAINT消息。
在OnDraw()函数中处理该消息9.GetMessage()函数在什么情况下返回0,从⽽导致消息循环终⽌,程序结束。
在接收到WM_QUIT消息时返回010.Windows中,应⽤程序的输出是怎样进⾏的。
通过设备描述表DC(Device Context)来进⾏应⽤程序与物理设备之间的交互11.MFC中,⼤多数类的基类都是什么。
第9章Windows程序的界面设计
第9章Windows程序的界⾯设计总体要求 1、掌握Windows窗体和控件的常⽤属性和事件 2、掌握常⽤控件的使⽤⽅法,包括按钮Button、⽂本框Textbox、标签Label、单选按钮RadioButton、复选框CheckBox、组合框ComboBox、图⽚框PictureBox、分组框GroupBox、⾯板Panel、选项卡TabControl等控件。
3、了解窗体与对话框的区别,模态对话框与⾮模态对话框的区别,熟悉消息框和通⽤对话框的使⽤⽅法。
4、了解菜单、⼯具栏、状态栏的作⽤,掌握MenuStrip、ContextMenuStrip、TooStrip和StatusStrip等控件的使⽤⽅法。
5、理解SDI应⽤程序和MDI应⽤程序的区别,学会创建较为复杂的Windows应⽤程序。
相关知识点 1、熟悉Windows操作系统有关窗⼝和对话框的知识。
2、熟悉Windows应⽤程序的基于事件的运⾏机制。
学习重点 1、常⽤Windows窗体控件及其使⽤⽅法。
2、对话框、菜单、⼯具栏等控件在Windows应⽤程序中的应⽤。
学习难点 1、Windows窗体的设计和创建。
2、各种窗体控件的综合应⽤。
在Windows应⽤程序中,经常会接触到窗体,例如资源管理器、Word、Excel、记事本等许多应⽤程序都是由窗体组成的。
Windows应⽤程序的产⽣使应⽤程序的设计更为简单,功能更加强⼤,使⽤更⽅便灵活。
.NET Framework的⼀个优点就是提供了许多窗体控件,通过它们可以快速创建应⽤程序的⽤户界⾯。
创建⽤户界⾯时,把控件从⼯具箱拖放到窗体上,把它们放在应⽤程序运⾏时需要的地⽅,再添加控件的事件处理程序,即可完成⼀个功能强⼤、界⾯美观的Windows应⽤程序。
本章主要介绍⼀些最常⽤的Windows窗体控件。
通过本章的学习,读者可以掌握Windows应⽤程序开发的基本流程和技巧,掌握常⽤控件的使⽤。
王艳平的《windows程序设计》
王艳平的《windows程序设计》《Windows程序设计》是王艳平所著的一本专业书籍,它为读者提供了深入了解Windows操作系统编程的基础知识和高级技术。
这本书不仅适合初学者学习,也适合有一定基础的开发者进行深入研究。
全书内容丰富,覆盖了从Windows编程的基本概念到复杂的系统级编程技巧。
第一章:Windows编程基础本章介绍了Windows操作系统的基本概念,包括操作系统的发展历程、Windows的架构以及Windows编程的特点。
此外,还详细讲解了Windows编程环境的搭建,包括开发工具的选择、SDK的安装和配置等。
第二章:Windows API概述Windows API是Windows编程的核心,本章对Windows API进行了全面的介绍。
包括API的分类、调用方式、参数传递机制等。
同时,还介绍了如何使用API来实现窗口的创建、消息的发送和接收等基本操作。
第三章:窗口与消息处理窗口是Windows应用程序的基本组成元素。
本章详细讲解了窗口的创建过程、窗口的属性设置、窗口的显示与隐藏等。
同时,还深入探讨了消息循环的概念,以及如何通过消息循环来处理用户输入和系统事件。
第四章:图形与文本绘制图形和文本是用户界面的重要组成部分。
本章介绍了Windows GDI(图形设备接口)的基本概念和使用方法,包括如何使用GDI进行图形绘制、文本输出以及字体和颜色的设置等。
第五章:动态链接库与资源动态链接库(DLL)和资源是Windows编程中常用的技术。
本章讲解了DLL的基本概念、创建和使用,以及资源文件的创建和管理。
通过本章的学习,读者可以掌握如何在应用程序中使用DLL和资源来增强程序的功能和可扩展性。
第六章:多线程编程多线程是提高程序性能的重要手段。
本章详细介绍了Windows多线程编程的基本概念和实现方法,包括线程的创建、同步、通信以及线程池的使用等。
通过本章的学习,读者可以掌握如何编写高效的多线程应用程序。
Windows程序设计-第01章-Windows程序设计简介
本章主要从Windows发展史、开发工具、开发框架的组成以及应用范围四个方面讲述。其中,Windows发展史,主要讲述了从DOS操作系统发展到Windows操作系统的历史过程,重点讲述了Windows操作系统的几个发展时期;开发工具,主要简述了开发工具的基本应用,以及工程的创建方法;应用程序开发框架组成部分,简述了Win32应用程序的开发框架,即项目文件的组成。
Windows98 SE(第二版)发行于1999年6月10日。它包括了一系列的改进,例如Internet Explorer 5、WindowsNetmeeting 3、Internet Connection Sharing、对DVD-ROM和对USB的支持。
Windows98被人批评为没有足够的革新。即使这样,它仍然是一个成功的产品。第二版也被批评不能在第一版的基础上自由升级。
图1.4
1994年,Windows3.2中文版本发布,国内有很多Windows的先驱用户就是从这个版本开始接触Windows系统的。由于消除了语言障碍,降低了学习门槛,因此Windows3.2在国内很快流行起来。
图1.5
1995年8月24日Windows95发布,这个操作系统开创了Windows的新纪元。新的操作系统发生了质的变化,具有全新的界面和强大的功能,这在某种程度上也宣告了DOS时代的结束。Windows95的销售量在短短4天内就超过了一百万份,出色的多媒体特性、人性化的操作、美观的界面使Windows95获得空前成功。业界也将Windows95的推出看作是微软发展的一个重要里程碑。
图1.1
1981年Xerox(施乐)公司开发了第一个商用图形操作系统。1983年苹果公司开发了第一个基于图形界面的操作系统。1985年微软公司推出了自己的Windows操作系统,即为Windows1.0版本,最初售价为100美元。Windows1.0是微软第一次对个人电脑操作平台,进行了用户图形界面的尝试。Windows1.0从本质上宣告了MS-DOS操作系统的终结。由于Windows1.0仅仅是由字符堆砌,界面非常简陋,所以后来有人将其评价为最不成功的作品。
Windows程序设计
第9章 GDI编程2—文字、位图与图标与DOS等传统字符界面用点阵模板显示文字不同,GUI中的文字一般是利用轮廓字体中的控制点数据经计算后再绘制出来的。
Windows中的文字,采用的是基于二次贝塞尔曲线的TrueType轮廓字体(字体文件为*.TTF)。
MFC中的字体类为CFont,在字体对象选入DC 后,可用TextOut等函数进行文字的绘制输出。
位图是指由像素阵列组成的数字化点阵图像,是GUI的基本元素。
位图可分成与设备相关和无关的两类,分别用于图像的显示和存储,对应的MFC类分别为CBitmap和CImage。
图标是一类大小固定的方型小位图,用于代表应用程序或文档子窗口。
为了满足不同显示设备和不同使用目的的需要,在一个程序的图标资源中,一般包含多个不同大小和颜色位数的图像。
MFC为应用程序提供了默认的图标,可用资源编辑器对其进行修改。
9.1 输出文本一般使用CDC类的TextOut等函数,采用DC中的当前字体和文本颜色等来输出文本。
还可用SetTextAlign函数来设置文本的对齐方式,并分别用SetTextColor和SetBkColor函数来设置文本的前景和背景颜色。
9.1.1 文本输出函数在CDC类中,封装了多种文本输出函数,它们都是使用当前的字体、文本颜色和背景颜色,在屏幕或打印机上输出文本(绘制文字)。
常用的文本输出函数有基本的TextOut、限定矩形区域的DrawText和可裁减与调字间距之扩展的ExtTextOut,其中最常用的是TextOut函数。
1.TextOutTextOut的函数原型为:virtual BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount );BOOL TextOut( int x, int y, const CString& str );其中,x与y为显示串的左上角坐标,lpszString或str为要显示的文本串,nCount为串lpszString中的字符数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vv window 程序设计>>电子书,这是本书的第二章,讲得还不错,有谁要的, 留下E-Mail :在前两章,程序使用了同一个函数MessageBox 来向使用者输出文字。
MessageBox 函数会建立一个「窗口」。
在Windows 中,「窗口」一词有确切的含义。
一个窗口就是屏幕上的一个矩形区域,它接收使用者的输入并以文字或图形的格式显示输出内容。
MessageBox 函数建立一个窗口,但这只是一个功能有限的特殊窗口。
消息窗口有一个带关闭按钮的标题列、一个选项图标、一行或多行文字,以及最多四个按钮。
当然,必须选择Windows 提供给您的图标与按钮。
MessageBox 函数非常有用,但下面不会过多地使用它。
我们不能在消息框中显示图形,而且也不能在消息框中添加菜单。
要添加这些对象,就需要建立自己的窗口,现在就开始。
自己的窗口建立窗口很简单,只需呼叫CreateWindow 函数即可。
好啦,虽然建立窗口的函数的确名为CreateWindow ,而且您也能在/PlatformSDK/User Interface Services/Windowing/Windows/WindowReference/Window Functions 找到此文件,但您将发现CreateWindow 的第一个参数就是所谓的「窗口类别名称」,并且该窗口类别连接所谓的「窗口消息处理程序」。
在我们呼叫CreateWindow 之前,有一点背景知识会对您大有帮助。
总体结构进行Windows 程序设计,实际上是在进行一种对象导向的程序设计(OOP )。
这一点在Windows 中使用得最多的对象上表现最为明显。
这种对象正是Windows 之所以命名为「Windows 」的原因,它具有人格化的特征,甚至可能会在您的梦中出现,这就是那个叫做「窗口」的东西。
桌面上最明显的窗口就是应用程序窗口。
这些窗口含有显示程序名称的标题列、菜单甚至可能还有工具列和滚动条。
另一类窗口是对话框,它可以有标题列也可以没有标题列。
装饰对话框表面的还有各式各样的按键、单选按钮、复选框、清单方块、滚动条和文字输入区域。
其中每一个小的视觉对象都是一个窗口。
更确切地说,这些都称为「子窗口」或「控件窗口」或「子窗口控件」。
作为对象,使用者会在屏幕上看到这些窗口,并通过键盘和鼠标直接与它们进行交互操作。
更有趣的是,程序写作者的观点与使用者的观点极其类似。
窗口以「消息」的形式接收窗口的输入,窗口也用消息与其它窗口通讯。
对讯息的理解将是学习如何写作Windows 程序所必须越过的障碍之一。
这有一个Windows 的消息范例:我们知道,大多数的Windows 程序都有大小合适的应用程序窗口。
也就是说,您能够通过鼠标拖动窗口的边框来改变窗口的大小。
通常,程序将通过改变窗口中的内容来响应这种大小的变化。
您可能会猜测(并且您也是正确的),是Windows 本身而不是应用程序在处理与使用者重新调整窗口大小相关的全部杂乱程序。
由于应用程序能改变其显示的样子,所以它也「知道」窗口大小改变了。
应用程序是如何知道使用者改变了窗口的大小的呢?由于程序写作者习惯了往常的文字模式程序,操作系统没有设置将此类消息通知给使用者的机制。
问题的关键在于理解Windows 所使用的架构。
当使用者改变窗口的大小时,Window 给程序发送一个消息指出新窗口的大小。
然后程序就可以调整窗口中的内容,以响应大小的变化。
「Windows 给程序发送消息。
」我们希望读者不要对这句话视而不见。
它到底表达了什么意思呢?我们在这里讨论的是程序代码,而不是一个电子邮件系统。
操作系统怎么给程序发送消息呢?其实,所谓「Windows 给程序发送消息」,是指Windows 呼叫程序中的一个函数,该函数的参数描述了这个特定消息。
这种位于Windows 程序中的函数称为「窗口消息处理程序」。
无疑,读者对程序呼叫操作系统的做法是很熟悉的。
例如,程序在打开磁盘文件时就要使用有关的系统呼叫。
读者所不习惯的,可能是操作系统呼叫程序,而这正是Windows 对象导向架构的基础。
程序建立的每一个窗口都有相关的窗口消息处理程序。
这个窗口消息处理程序是一个函数,既可以在程序中,也可以在动态链接库中。
Windows 通过呼叫窗口消息处理程序来给窗口发送消息。
窗口消息处理程序根据此消息进行处理,然后将控制传回给Windows 。
更确切地说,窗口通常是在「窗口类别」的基础上建立的。
窗口类别标识了处理窗口消息的窗口消息处理程序。
使用窗口类别使多个窗口能够属于同一个窗口类别,并使用同一个窗口消息处理程序。
例如,所有Windows 程序中的所有按钮均依据同一个窗口类别。
这个窗口类别与一个处理所有按钮消息的窗口消息处理程序(位于Windows 的动态链接库中)联结。
在对象导向的程序设计中,对象是程序与数据的组合。
窗口是一种对象,其程序是窗口消息处理程序。
数据是窗口消息处理程序保存的信息和Windows 为每个窗口以及系统中那个窗口类别保存的信息。
窗口消息处理程序处理给窗口发送消息。
这些消息经常是告知窗口,使用者正使用键盘或者鼠标进行输入。
这正是按键窗口知道它被「按下」的奥妙所在。
在窗口大小改变,或者窗口表面需要重画时,由其它消息通知窗口。
Windows 程序开始执行后,Windows 为该程序建立一个「消息队列」。
这个消息队列用来存放该程序可能建立的各种不同窗口的消息。
程序中有一小段程序代码,叫做「消息循环」,用来从队列中取出消息,并且将它们发送给相应的窗口消息处理程序。
有些消息直接发送给窗口消息处理程序,不用放入消息队列中。
如果您对这段Windows 架构过于简略的描述将信将疑,就让我们去看看在实际的程序中,窗口、窗口类别、窗口消息处理程序、消息队列、消息循环和窗口消息是如何相互配合的。
这或许会对您有些帮助。
HELLOWIN 程序建立一个窗口首先需要注册一个窗口类别,那需要一个窗口消息处理程序来处理窗口消息。
处理窗口消息对每个Windows 程序都带来了些负担。
程序3-1 所示的HELLOWIN 程序中整个做的事情差不多就是料理这些事情。
程序3-1 HELLOWINHELLOWIN.C/* -------------------------------------------------HELLOWIN.C -- Displays "Hello, Windows 98!" in client area(c) Charles Petzold, 1998------------------------------------------------- */#include <windows.h>LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)static TCHAR szAppName[] = TEXT ("HelloWin") ;HWND hwnd ;MSG msg ;WNDCLASwndclass ;wndclass.style = CS_HREDRAW | CS_VREDRAW ;wndclass.lpfnWndProc = WndProc ;wndclass.cbClsExtra = 0 ;wndclass.cbWndExtra = 0 ;wndclass.hInstance = hInstance ;wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;wndclass.hbrBackground= (HBRUSH) GetStockObject(WHITE_BRUSH) ;wndclass.lpszMenuNam = NULL ;wndclass.lpszClassName= szAppName ;if (!RegisterClass (&wndclass))MessageBox ( NULL, TEXT ("This program requires Windows NT!"),szAppName, MB_ICONERROR) ;return 0 ;hwnd = CreateWindow( szAppName, // window class nameTEXT ("The Hello Program"), // window captionWS_OVERLAPPEDWINDOW, // window styleCW_USEDEFAULT,// initial x positionCW_USEDEFAULT,// initial y positionCW_USEDEFAULT,// initial x sizeCW_USEDEFAULT,// initial y sizeNULL, // parent window handleNULL, // window menu handle hInstance, // program instancehandleNULL) ; // creation parametersShowWindow (hwnd, iCmdShow) ;UpdateWindow (hwnd) ;while (GetMessage (&msg, NULL, 0, 0))TranslateMessage (&msg) ;DispatchMessage (&msg) ;return msg.wParam ;LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {HDC hdc ;PAINTSTRUCT ps ;RECT rect ;switch (message){case WM_CREATE:PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME |SND_ASYNC) ;return 0 ;case WM_PAINT:hdc = BeginPaint (hwnd, &ps) ;GetClientRect (hwnd, &rect) ;DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;EndPaint (hwnd, &ps) ;return 0 ;case WM_DESTROY:PostQuitMessage (0) ;return 0 ;return DefWindowProc (hwnd, message, wParam, lParam) ;程序建立一个普通的应用程序窗口,如图3-1 所示。