您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > WINDOWS程序设计教程(1章).
WINDOWS程序设计本课程特点:•实用性强•难度较大•需要前序课程的基础(C/C++、数据结构、操作系统、数据库系统等)•信息量大•课时少如何学好这门课程:1.一定不要忽视Windows的基本概念:消息驱动、消息循环、代号(句柄)、设备环境(DC)等。2.打好C/C++基础。正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符界面程序的编写。这样做的目的主要是增加对语言的熟悉程度,同时也训练自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助。•面对庞大Win32API函数,不要初学就去记忆函数的参数,而应该重在函数的用途。•多看书,多看例程。对于初学者:应该选择一些内容比较全面的书籍,并且书籍中的内容应该以合理的方式安排,在使用该书时可以达到循序渐进的效果,书中的代码要有详细的讲解。尽量买翻译的书,因为这些书一般都比较易懂,而且语言比较轻松。买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生打击。•《Windows程序设计》微软出版社•《MFCWindows程序设计》微软出版社•《VisualC++6.0类参考详解》清华大学出版社或MSDN(微软开发者网络)光盘•《深入浅出MFC》华中理工大学出版社•《Windows核心编程》微软出版社(初学可暂时不看)参考资料学习中的常见问题:•觉得迷茫,无从入手办法:看书的同时要多练手,对照书上的步骤一步一步进行操作和输入•函数太多,不知道该用什么办法:准备个小册子,遇到新函数就记录下函数名和出处,平时拿出来多看,如此积累函数你能够使用的函数(不考虑第三方)•C语言运行时刻库函数如strcpy(…)•Win32API函数如StrCpy(…)本课程内容:•Windows操作系统的基本原理•Windows程序的基本框架•使用VisualC++6.0进行Windows程序设计1.1WINDOWS的发展历史•上世纪60年代就开始从事系统软件的研究与开发,但直到1981年MS-DOS才正真成为PC上的主流操作系统。MS-DOS是一个单用户单任务操作系统,它提供给用户的是一种命令界面,它为编程人员提供输入输出(I/O)函数供编程人员调用。为了将文字或图形写到显示器上,应用程序可以直接存取PC机的硬件。第1章概述图形操作环境的发展历程•由于存贮器和硬件的限制,直到1983年1月,苹果计算机公司才发表Lisa计算机,在Lisa计算机中提出了不同于字符模式环境的另一种环境---图形操作环境。并在1984年1月成为Macintosh上图形环境的一种标准。Windows图形操作环境的发展历史。发行日期编码API应用程序•Windows1.01985年11月16位Win1616位•Windows/3861987年9月16位/32位Win1616位•Windows2.x1987年12月16位Win1616位•Windows3.01990年5月16位/32位Win1616位•Windows3.11992年4月16位/32位Win1616位•WindowsforWorkgroup3.11992年11月16位/32位Win1616位•WindowsforWorkgroup3.111993年11月16位/32位Win1616位•Windows3.111993年12月16位/32位Win1616位•WindowsNT3.11993年8月32位Win3232位/16位•WindowsNTAS3.11993年8月32位Win3232位/16位•WindowsNTworkstation3.51994年10月32位Win3232位/16位•WindowsNTsever3.51994年10月32位Win3232位/16位•WindowsNTworkstation3.511995年7月32位Win3232位/16位•WindowsNTsever3.511995年7月32位Win3232位/16位•Windows951995年8月32位/16位Win3232位/16位•Windows981998年6月32位Win3232位/16位•Windows20002000年xx月32位Win3232位/16位•WindowsXP2002年xx月32位Win3232位/16位本表中的编码--16位/32位,API--Win16/Win32,应用程序的位数--32位/16位这三个项目的意义由下面各节介绍。1.232位Windows操作系统的基本性质和用途•32位优先权式多工多线程图形操作系统。•“所见即所得”的图形信息显示,以及格式化的内容输出。•屏幕显示器被称作“显示多个程序的桌面”。•为了实现多工必须对存贮器进行管理。•不要求应用程序自行开发驱动程序。1.3API的基本特征及其发展历程•什么是API?API是”应用程序接口”的缩写(ApplicationProgrammingInterface),API包含了所有应用程序能够使用,操作系统能够执行的函数调用。•API的特点:发展保持一致和兼容。•API的最大发展是16位变成32位。•API的分类:Win16API,Win32API。1.4编程工具•VisualBasic编程工具简介。•VisualC++编程工具简介。,•MFC编程简介。,•BorlandDelphi编程工具简介。1.5集成开发环境1.6C程序和windows程序的比较用C语言编出的hello,world程序#includestdio.hintmain(){printf(hello,world\n);return0;}1.6C程序和windows程序的比较同样效果的Windows程序HelloMsg.c#includewindows.hintWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){MessageBox(NULL,TEXT(Hello,Windows98!),TEXT(HelloMsg),0);return0;}1.7.1#include申明和包含文件•包含文件的作用:用于前置处理。定义了Windows程序中的数据类型、函数原型、数据结构和常数,•#includewindows.h中最重要最基本的包含文件是:WINDEF.h文件中有基本数据类型定义。WINNT.h文件中有支援Unicode的类型定义。WINBASE.h文件中有Kernel函数的有关定义。WINUSER.h文件中有用户界面函数的有关定义。WINGDI.h文件中有图形界面函数的有关定义。1.7HelloMsg.C的三个组成部分1.7.2程序进入点•Windows程序的进入点是WinMain。•WinMain函数如下:intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd);匈牙利命名方法intWINAPI识别字•int是WinMain函数返回值的类型。•WINAPI识别字是函数调用规范,定义如下:#defineWINAPI__stdcall。__stdcall是指示编译工作的识别字,它告诉编译系统如何产生机器码,函数调用参数在堆栈中是如何放置的以及函数调用时参数取出的的顺序。故而该识别字指定了一个调用约定。WinMain函数申明为WINAPI,这也是说,WinMain函数的调用也遵循__stdcall约定。WinMain的四个参数•hInstance:操作系统为该应用程序创建的“执行实例。•hPrevInstance:控制标识。如果是(null),表示在此之前,此应用程序还没有建立过任何实例,如果非0,说明已经建立过应用程序的实例。在win32中总是为空。•lpCmdLine:指向命令序列的长指针。•nShowCmd:程序的显示方式。1.7.3MessageBox函数•MessageBox函数用于显示短信息。•MessageBoxW(•HWNDhWnd,•LPCWSTRlpText,•LPCWSTRlpCaption,•UINTuType);•MessageBox函数的四个参数的解释:参数1指示在那个窗口中显示。参数2是在窗口中显示的字符串。参数3是在窗口标题行上显示的字符串。参数4指示在显示窗口中生成按钮MB_常数的解释•MB_常数指示在显示窗口中生成按钮。•MB_表示此常数是MessageBox函数的专用常数(为函数定义常数在其他函数中也能见到)。•MB_××实际上是表示一个代码。例如MB_OK就是0x00000000L。•更多的MB_代码查看MSDN•返回值:•IDABORTAbortbuttonwasselected.•IDCANCELCancelbuttonwasselected.•IDIGNOREIgnorebuttonwasselected.•IDNONobuttonwasselected.•IDOKOKbuttonwasselected.•IDRETRYRetrybuttonwasselected.•IDYESYesbuttonwasselected.1.8字符编码及Unicode初介•1.8.1字符集编码的发展简史电报码,盲人阅读码,Telex代码,BCDIC码,ASCII,内码表。.1.8.2双字节字符集(DBCS)•DBCS中的0到256编码,它就像内码表一样,前128个代码是ASCII,用1个字节定义。后128个代码“中的”某些用2个字节定义,某些仍然是用1个字节来定义。•虽然中文汉字、日文和韩文共享许多相同的象形文字,但显然这些语言是不同的,往往同样的象形文字在三种语言中代表着不同的东西。Windows支持四种不同的双字节字符集:代码页932(日文)、936(简体中文)、949(韩文)以及950(繁体中文)。DBCS只有在为这些国家制造的Windows版本上才被支持。•双字节编码会引起附加的程序设计问题,例如,字符串的长度计算。1.8.3Unicode字符集•Unicode是统一的16位(两个字节)表示一个字符的编码系统。•Unicode编码:前128个Unicode字符(16位代码从0x0000到0x007F)就是ASCII字符,而接下来的128个字符(代码从0x0080到0x00FF)是ISO8859-1对ASCII的扩展。希腊字母表使用从0x0370到0x03FF的代码,斯拉夫语使用从0x0400到0x04FF的代码,美国使用从0x0530到0x058F的代码,希伯来语使用从0x0590到0x05FF的代码。中国、日本和韩国的象形文字(总称为CJK)占用了从0x3000到0x9FFF的代码。1.9.1操作系统中基本数据类型的确定•int,char是最基本的数据类型。int取决于CPU的位数,即操作系统的位数。Char取决于操作系统所采用的编码。•如果char用8位二进制进行编码,那就是ASCII码字符集。•如果char用16位二进制进行编码,那就是Unicode码字符集。1.9字符的数据类型char和宽字符数据类型wchar1.9.2单字节字符数据类型(char)。•字节和字符是两个既有联系又有差别的概念。字节是………,字符是……………。•一个字节是8位二进制。•解释:charc='A';char*p;char*p=Hello!;chara[10];chara[]=Hello!;staticchara[]=Hello!;1.9.3宽字符数据类型(wchar)。•用多个字节存贮一个字符称为宽字符,C中用wchar_t表示宽字符数据类型。•wchar_t和无符号短整数类型相同。#typedefunsignedshortwchar_t•定义宽字符数据类型的方法:例如wchar_tc=‘A’;//c中存放A的宽字符。wchar_t*p=L“Hello!”//L不
本文标题:WINDOWS程序设计教程(1章).
链接地址:https://www.777doc.com/doc-2867660 .html