windows程序设计1

上传人:su****e 文档编号:250463214 上传时间:2024-11-02 格式:PPT 页数:25 大小:90KB
收藏 版权申诉 举报 下载
windows程序设计1_第1页
第1页 / 共25页
windows程序设计1_第2页
第2页 / 共25页
windows程序设计1_第3页
第3页 / 共25页
资源描述:

《windows程序设计1》由会员分享,可在线阅读,更多相关《windows程序设计1(25页珍藏版)》请在装配图网上搜索。

1、,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Windows,程序设计基础,主要内容,Windows,编程基础知识,Win32,程序运行原理,用实例剖析,Windows,高级特性,第一章,windows,程序设计基础知识,1.1,必备知识,Windows,的操作系统,:,Windows95 Windows98 Windows Me Windows2000 Windows XP Windows2003,(,32,),Vista,(,64,),开发工具,VB,、,Visual FoxPro,、,VC+,、,Delphi,、,C#,。,TC,是,16,位,

2、DOS,程序编译器,Win32 API,(Application Programming Interface),Win32 API,可认为是一个程序库,提供各式各样的与,windows,系统服务有关的函数。,Win32 API,是最底层的服务。,调用,windows,的各种服务。,通常所说的,sdk,编程就是直接调用,API,函数进行编程。,Win32 API,是指编制,32,位应用程序时用的一组函数、结构、宏定义。在,win32,的环境下,任何语言都是建立在,Win32 API,基础上的。,Visual FoxPro,、,VB,等软件,API,隐藏的较深。,大多数,API,位于三个核心,DL

3、L,中:,kernel32.dll,、,user32.dll、GDI32.dll,采用其开发,windows,应用程序过于繁琐。,API&MFC,1.KERNEL,在,Win32,中库名为,KERNEL32.DLL,主要用于产生与操作系统之间的关联:程序加载 上下文选择,.,文件输入输出,.,内存管理,.,例如:,GlobalMemoryStatus,函数就包括当前物理内存及虚拟内存的使用信息。,2.USER,这个类库在,Win32,中名叫,USER32.DLL,。它允许管理全部的用户接口,比如:窗口 菜单 对话框 图标等,.,例如:,DrawIcon,函数将在指定的设备关联上“画”出图标或者

4、鼠标。,3.GDI(Graphical Device Interface),它在,Win32,中的库名为:,GDI32.dll,,它是图形输出库。使用,GDI Windows“,画”出窗口、菜单以及对话框等:它能创建图形输出,.,它也能保存图形文件,.,例如:,CreateBitmap,函数就能通过指定的长、宽、颜色创建一个位图。,API&MFC,API:,一套用来控制,Windows,的各个部件,(,从桌面的外观到为一个新进程分配的内存,),的外观和行为的一套预先定义的,Windows,函数,.,MFC,是对,WindowsAPI,的封装,是,Win,API,与,C+,的结合,MFC,就是挂

5、在它之上的一个辅助软件开发包,MFC,主包含文件为,“,Afxwin.h,”,。,API,主包含文件为,windows.h,(1),包含要调用函数的声明文件,windows.h,包含其他头文件,windef.h,基本类型定义,winnt.h,支持,Unicode,的类型定义,winbase.h,内核函数,winuser.h,用户接口函数,wingdi.h,图形设备接口函数,winsock.h,网络编程函数,API,函数的调用方法,(2),连接到指定的库文件,kernel32.lib user32.lib gdi32.lib,winspool.lib,comdlg32.lib advapi32.

6、lib shell32.lib ole32.lib oleaut32.lib,uuid.lib,odbc32.lib odbccp32.lib,显示设置:,#,pragma,comment(lib,”w2_32.lib”),(3),在,API,函数前加“,:”,表示这是一个全局函数,以与,C+,类的成员函数区分。,API,函数的调用方法,C#,调用格式,using,System.Runtime.InteropServices,;,/,引用此名称空间,简化后面的代码,./,使用,DllImportAttribute,特性来引入,api,函数,注意声明的是空方法,即方法体为空。,DllImport

7、(user32.dll)public static extern,ReturnType,FunctionName(type,arg1,type arg2,.);/,调用时与调用其他方法并无区别,1.VB,不能直接调用,Win API,,要先声明然后再调用。,2.,声明,API,过程,比如声名,SetWindowTextA,首先,在模块的声明部分对过程进行声明:,Private Declare Function,SetWindowText,Lib user32 Alias,SetWindowTextA,(,ByVal,hwnd,As Long,ByVal,lpString,As String)A

8、s Long 3.,调用,API,过程 在声明了函数之后,调用它的方式与标准的,Visual Basic,函数相同。在下例中,,Form Load,事件调用了上面声明的过程。,Private Sub,Form_Load,(),SetWindowText,Form1.hWnd,Welcome to VB End Sub,在,VB,环境下,涉及到的所有,integer(,整型数,),,都是,16,位,调用,API,例子,(VB),调用,API,例子(,C#,),读写,INI,文件。,using System;using,System.IO,;using,System.Text,;using,Sys

9、tem.Runtime.InteropServices,;namespace,FileIO,public class,INIFileIO,DllImport(kernel32)private static extern long,WritePrivateProfileString(string,section,string,key,string,val,string,filePath,);,DllImport(kernel32)private static extern,int,GetPrivateProfileString(string,section,string,key,string,d

10、ef,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,file

11、Path,),StringBuilder,temp=new StringBuilder(255);,int,i=,GetPrivateProfileString(section,key,temp,255,filePath,);return,temp.ToString,();,#include,就可以使用,API,函数,调用,API,例子,(C+),#include,stdafx.h,/,这是,VC,自动添加的头文件,没有什么用途,#include/,包含,MessageBox,函数声明的头文件,int,main(int,argc,char*,argv,),/,调用,API,函数,Message

12、Box,int,nSelect,=:,MessageBox(NULL,Hello,Windows XP,Greetings,MB_OKCANCEL);,if(nSelect,=IDOK),printf,(,用户选择了“确定”按钮,n);,else,printf,(,用户选择了“取消”按钮,n);,return 0;,回调函数,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针,(,地址,),作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。,某些,API,函数要求以,callback,作为你参数之一。如,SetTimer,,,LineDDA,,,En

13、umObjects,。,UINT_PTR,SetTimer,(,HWND,hWnd,/,窗口句柄,UINT_PTR,nIDEvent,/,定时器,ID,,多个定时器时,可以通过该,ID,判断是哪个定时器,UINT,uElapse,/,时间间隔,单位为毫秒,TIMERPROC,lpTimerFunc,/,回调函数,);,回调函数必须有关键词,CALLBACK,回调函数本身必须是全局函数或者静态函数,不可定义为某个特定的类的成员函数,回调函数并不由开发者直接调用执行,(,只是使用系统接口,API,函数作为起点,),回调函数通常作为参数传递给系统,API,,由该,API,来调用,回调函数可能被系统,

14、API,调用一次,也可能被循环调用多次,int,_,stdcall,CompareInts(const,byte*velem1,constbyte*velem2),int,elem1=*(,int,*)velem1;,int,elem2=*(,int,*)velem2;,if(elem1elem2),return1;,return0;,int,_,stdcall,CompareStrings(const,byte*velem1,constbyte*velem2),constchar*elem1=(char*)velem1;,constchar*elem2=(char*)velem2;,retu

15、rnstrcmp(elem1,elem2);,int,main(int,argc,char*,argv,),int,i;,int,array=5432,4321,3210,2109,1098;,cout,Beforesorting,ints,with,Bubblesortn,;,for(i,=0;i5;i+),cout,arrayi,n;,Bubblesort(byte,*)array,5,sizeof(array0),&,CompareInts,);,cout,Afterthesortingn;,for(i,=0;i5;i+),cout,arrayi,n;,constcharstr510=,estella,danielle,crissy,bo,angie,;,cout,Beforesortingstringswith,Quicksortn,;,for(i,=0;i5;i+),cout,stri,n;,Quicksort(byte,*),str,5,10,&,CompareStrings,);,cout,Afterthesortingn;,for(i,=0;i5;i+),cout,stri,n;,return0;,结 束,

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

相关资源

更多
正为您匹配相似的精品文档

相关搜索

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  sobing.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!