window程序设计第一章.ppt_第1页
window程序设计第一章.ppt_第2页
window程序设计第一章.ppt_第3页
window程序设计第一章.ppt_第4页
window程序设计第一章.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows程序设计 第一讲 概述,教师:代美,主要内容,前言 Windows程序概述 Windows程序工作原理 课程主要内容 示例程序,前言,Windows操作系统是当今世界上最为流行的操作系统。 刺激了开发Windows应用软件的程序员队伍不断壮大 Windows操作系统同时也是一个大的函数库,其中包含了数以千计的函数,这些函数都被封装在一个接口中,这个接口就是Windows应用程序编程接口,简称Windows API。,前言,Windows API也是认识Windows操作系统的一面镜子,通过它,用户可以深入系统地掌握Windows的方方面面。很难想象,一个程序员在没有掌握Windows API的情况下,能编制出很好的基于Windows的应用程序来。,学习Windows程序的意义,很多开发人员由于缺少对API函数的理解,造成无用的现象,从而阻碍了它的推广。类库和控件使应用程序的开发简单很多,但是对于比较复杂和特殊的功能,使用类库和控件使难以实现的,就需要采用API函数来实现。,课程学习的主要内容,主要讲授Windows程序的工作原理、以及windows环境下基于消息机制的程序设计的思想、方法和技巧。通过具体程序讲述Windows环境下对话框及常用控件、菜单、加速键等知识。并且还讲述基于文档视图程序、DLL动态链接库等程序的设计和实现。,Windows程序概述,Windows和Windows应用程序最大的优点就是用户界面的一致性。 对用户的另一个好处是使用了基于图形的图标来代表应用程序和数据。 Windows操作系统提供的“所见即所得”也是一个非常友好的特点。 Windows操作系统还提供了多任务功能。 Windows提供了开发独立于设备的图形的能力。,Windows 程序工作原理,Windows 程序设计是一种完全不同于传统的DOS方式的程序设计方法,它是一种事件驱动方式的程序设计模式。 从上面的讨论中可以看出,Windows应用程序在本质上是面向对象的。程序提供给用户界面的可视对象在程序的内部一般也是一个对象,用户对可视对象的操作通过事件驱动模式触发相应对象的可用方法。程序的运行过程就是用户的外部操作不断产生事件,这些事件又被相应的对象的过程处理。 一般的程序流程如图ll所示。,Windows API和 SDK,一、Windows API 它是所有 Windows应用程序的根本之所在。简单地说,API就是一系列的例程,应用程序通过调用这些例程来请求操作系统完成一些低级服务。在Windows这样的图形用户界面中,应用程序的窗口、图标、菜单和对话框等就是由API来管理和维护的。,Windows API,(1)在DOS应用程序下,可以通过getchar ()等函数直接等待键盘输入,并直接向屏幕输出。 (2)而在Windows下,由于允许多个任务同时运行,应用程序的输入输出是由Windows来统一管理的。 Windows 操作系统包括 3个内核基本元件: GDI,KERNEL,USER。,Windows API具有两种基本类型: Winl6 API和Win32 API。但是Win32 API除了几乎包括了Winl6 API中的所有内容以外,还包括很多的其他内容。Windows API依靠 3个主要的核心组件提供 Windows的大部分函数,在Winl6和 Win32中,它们具有不同的名称,如表l一1所示。,二、Windows SDK Windows SDK(Windows Software Development Kit, Windows软件开发工具包)和Windows API紧密联系,它是一套帮助 C语言程序员创建Windows应用程序的工具,在Windows SDK中包括了以下几个组成部分: 大量的在线帮助,这些帮助描述了Windows编程所可能用到的函数、消息、结构、宏及其他资源。 各种编程工具,如对话框编辑器及图像编辑器等。,预习指导认识Windows程序,首先回忆一下原先学的C语言 Windows程序引入 两者对比 分析Windows程序,原先用c语言编写的程序,#include main () printf (“hello, worldn“) ; ,用Windows SDK环境编写程序,#include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) MessageBox (NULL, TEXT (“Hello, Windows 98!“), TEXT (“HelloMsg“), 0); return 0 ; ,分析后一个程序,Windows关于hello, world程序的等价程序有和文字模式版本完全相同的组件。它有一个include声明、一个程序进入点、一个函数呼叫和一个return语句。,分析后一个程序,传统的DOS程序以main() 函数作为进入程序的初始人口点,在Windows应用程序中,main函数被WinMain函数取而代之,WinMain函数的原型如下: int WINAPI WinMain(HINSTANCE hInstance, / 当前实例句柄; HINSTANCE hPrevInstance, / 前一实例句柄; LPSTR lpCmdLine, / 指向命令行参数的指针; int nCmdshow) / 窗口的显示状态。 所谓的句柄是一个标识对象的变量,或者是一个对操作系统资源的间接引用。句柄是指向一个“无类型对象”(Void*)的指针,也就是一个4字节长的数据。其声明是这样的: typedef void *HANDLE Windows是一个多任务操作系统,它可以同时运行多个程序或一个程序的多个副本。为了对同一程序的多个副本进行管理,Windows引入了实例句柄。Windows为每个应用程序建立一张表,实例句柄就好像是这张表的一个索引。Windows不仅使用句柄来管理实例,也用它来管理窗口、位图、字体、元文件、图标等系统资源。,分析后一个程序,MessageBox函数可以建立、现实和操作消息框。这个消息框包括一个定义消息和标题、以及包括图标、按钮等附加选项。构造参数如下所示 int MessageBox( HWND hWnd, /指向消息对话框建立窗体句柄 LPCTSTR lpText, /指定显示消息内容 LPCTSTR lpCaption, /指定显示对话框标题 UINT uType /附加参数); 所有附加参数都是由MB_打头的。包括三类: (1)显示按钮:MB_OK、MB_OKCANCEL、MB_ABORTRETRYIGNORE、MB_YESNOCANCEL、MB_YESNO、MB_RETRYCANCEL (2)指定按钮默认 MB_DEFBUTTON1、MB_DEFBUTTON2、MB_DEFBUTTON3、MB_DEFBUTTON4 (3)指定外观图标 MB_ICONHAND、MB_ICONQUESTION、MB_ICONEXCLAMATION、MB_ICONASTERISK,Windows API程序的开发步骤,首先,从File菜单中选New。在 New对话框中,单击Projects页面标签,选择 Win32 Application。在Location栏中,选择一个子目录,在 Project Name栏中,输入该项目的名称,此时该名称是HelloMsg,Create New Workspace复选框应该勾起来,Platforms部分应该显示 Win32,选择OK。 将会出现一个标题为Win32 Application - Step 1 Of 1的对话框,指出要建立一个Empty Project,并按下Finish按钮。 从File菜单中再次选择New。在 New对话框中,选择Files页面标签,选择 C+ Source File。Add To Project复选框应被选中,并应显示HelloMsg。在 File Name栏中输入HelloMsg.c,选中OK。,一些建议,首先需要明确一点Windows API不是开发Windows的唯一方法。 下面是我对于开发Windows应用程序的语言选择简单分类 (1)对于开发效率要求非常高、功能非常强大的程序 建议考虑使用 C 语言和Windows APIs 开发Win32 API应用程序 (2)对于一些要求效率高的、专业商业应用程序 建议考试使用通过C+封装过的Windows APIs 开发MFC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论