《windows程序设计1.ppt》由会员分享,可在线阅读,更多相关《windows程序设计1.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Windows程序设计基础程序设计基础主要内容主要内容Windows编程基础知编程基础知识识Win32程序运行原理程序运行原理用用AppWizard生成生成MFC应用程序应用程序用实例剖析用实例剖析Windows高级特性高级特性第一章第一章windows程序设计基础知识程序设计基础知识1.1 必备知识必备知识Windows的操作系统的操作系统:Windows95 Windows98 Windows Me Windows2000 Windows XP Windows2003 (32)Vista(64)开发工具开发工具VB、Visual FoxPro、VC+、Delphi、C#。TC是是16位位D
2、OS程序编译器程序编译器 VC+是是Windows环境下最优秀的环境下最优秀的c+编译器之一编译器之一VC+是基于是基于c+的可视化集成开发环境,拥有的可视化集成开发环境,拥有C+编译器和编译器和MFC(微软基础类库)等。微软基础类库)等。VC+.NETMFCc+编译器C+CVisual C+简介简介Windows 资料来源资料来源MSDNMSDN 的全称是的全称是 Microsoft Developer Network。这是微软公司面向软件开发者的一种信息服务。这是微软公司面向软件开发者的一种信息服务。一般情况下,很多人误认为一般情况下,很多人误认为 MSDN 为联机帮助文件为联机帮助文件和
3、技术文献的集合。但事实上,这两者只占和技术文献的集合。但事实上,这两者只占 MSDN 庞大庞大计划的一小部分。计划的一小部分。MSDN 实际上是一个以实际上是一个以 Visual Studio 和和 Windows 平台为核心整合的开发虚拟社区,平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的操作系统、服务器程序、应用程产品下载(几乎全部的操作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、开发包和软件开
4、发包)、Blog、BBS、MSDN WebCast、与、与 CMP 合作的合作的 MSDN 杂志等等一系列服杂志等等一系列服务。务。Win32 API(APPlication Programming Interface)Win32 API可认为是一个程序库,提供各式各样的与可认为是一个程序库,提供各式各样的与windows系统服务有关的函数。系统服务有关的函数。Win32 API是最底层的服务。是最底层的服务。调用调用windows的各种服的各种服务。务。通常所说的通常所说的sdk编程就是直接调用编程就是直接调用API函数进行编程。函数进行编程。Win32 API是指编制是指编制32位应用程序
5、时用的一组函数、位应用程序时用的一组函数、结构、宏定义。在结构、宏定义。在win32的环境下,任何语言都是建立的环境下,任何语言都是建立在在Win32 API基础上的。基础上的。Visual FoxPro、VB等软件等软件API隐藏的较深。隐藏的较深。大多数大多数API位于三个核心位于三个核心DLL中:中:user32.dll、GDI32.dll、kernel32.dll 采用其开发采用其开发windows应用程序过于繁琐。应用程序过于繁琐。API&MFC应用程序的类型应用程序的类型 基于图形用户界面基于图形用户界面(GUI)的窗口应用程序的窗口应用程序 基于控制台用户界面基于控制台用户界面(
6、CUI)的应用程序的应用程序控制台应用程序的创建控制台应用程序的创建1.2 VC+的基本用法的基本用法API函数的调用方法函数的调用方法 (1)包含要调用函数的声明文件包含要调用函数的声明文件 windows.h 包含其他头文件包含其他头文件 windef.h 基本类型定义基本类型定义 winnt.h 支持支持Unicode的类型定义的类型定义 winbase.h 内核函数内核函数 winuser.h 用户接口函数用户接口函数 wingdi.h 图形设备接口函数图形设备接口函数 winsock.h 网络编程函数网络编程函数 API函数的调用方法函数的调用方法 (2)连接到指定的库文件连接到指定
7、的库文件 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 显示设置:显示设置:#pragma comment(lib,”w2_32.lib”)(3)在在API函数前加函数前加“:”表示这是一个全局函数,表示这是一个全局函数,以与以与 C+类的成员函数区分。类的成员函数区分。API函数的调用方法函数的调用方法 1、变量的命名、变量的命名 1)变量名应简短且富于描述变
8、量名应简短且富于描述 2)变量的名字应该是非形式的、简单的、容易记忆的变量的名字应该是非形式的、简单的、容易记忆的一般命名规则:一般命名规则:限定范围的前缀限定范围的前缀+数据类型前缀数据类型前缀+有意义的单词有意义的单词#define MAX_BUFFER 256;/定义一个常量,全大写定义一个常量,全大写 char g_szTitleMAX_BUFFER;/g_表示全局变量,表示全局变量,sz表示类型为字符串,表示类型为字符串,Title表示标题的意思表示标题的意思 int m_nErrorCode;/m_表示类的成员变量,表示类的成员变量,n表示为长整型,表示为长整型,ErrorCode
9、表表/示错误代码的意思示错误代码的意思1.3 代码的风格代码的风格3)非明文规定:非明文规定:局部变量小写局部变量小写(i,j),常量大写常量大写(MAX_BUFFER),函数名为动作性函数名为动作性(CreateDirectory),结构名(类名)应有整体性(结构名(类名)应有整体性(class CRaster)。)。1.3 代码的风格代码的风格2、代码的对齐方式、代码的对齐方式“”“”之间表示一个块,是一个相对独立的语义单之间表示一个块,是一个相对独立的语义单元。代码的行行之间按块对齐,各块之间适当缩进。例:元。代码的行行之间按块对齐,各块之间适当缩进。例:Void Alert(int i
10、)while(i0)Beep(1000,1000);/Beep函数使扬声器发出声音函数使扬声器发出声音 i-;1.3 代码的风格代码的风格3、代码的注释、代码的注释 1)短的注释与所描述的代码放在同一行短的注释与所描述的代码放在同一行 2)长的注释就放在所要注释的语句的上面长的注释就放在所要注释的语句的上面 3)有关有关“/*/”的注释方法的注释方法 1.3 代码的风格代码的风格1.VB不能直接调用不能直接调用Win API,要先声明然后再调用。,要先声明然后再调用。2.声明声明 API 过程过程,比如声名,比如声名SetWindowTextA 首先,在模块的声明部分对过程进行声明:首先,在模
11、块的声明部分对过程进行声明:Private Declare Function SetWindowText Lib user32 Alias SetWindowTextA(ByVal hwnd As Long,ByVal lpString As String)As Long 3.调用调用 API 过程过程 在声明了函数之后,调用它的方式与标准的在声明了函数之后,调用它的方式与标准的 Visual Basic 函数相同。在下例中,函数相同。在下例中,Form Load 事件调用了上面声明的过程。事件调用了上面声明的过程。Private Sub Form_Load()SetWindowText Fo
12、rm1.hWnd,Welcome to VB End Sub 调用调用API例子例子调用调用API例子(例子(C#)读写读写INI文件。文件。using System;using System.IO;using System.Text;using System.Runtime.InteropServices;namespace FileIO public class INIFileIO DllImport(kernel32)private static extern long WritePrivateProfileString(string section,string key,string
13、val,string filePath);DllImport(kernel32)private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);调用调用API例子(例子(C#)public INIFileIO()public static void INIWriteValue(string section,string key,string val,string filePath)WritePrivateProfileString(section,key,val,filePath);public static string INIReadValue(string section,string key,string filePath)StringBuilder temp=new StringBuilder(255);int i=GetPrivateProfileString(section,key,temp,255,filePath);return temp.ToString();结结 束束
限制150内