首页 VF中控制EXCEL的常用操作

VF中控制EXCEL的常用操作

举报
开通vip

VF中控制EXCEL的常用操作VF中控制EXCEL的常用操作 myexcel=createobject('excel.application') &&创建一个对象 myexcel.visible=.t.&&可见 &&bookexcel=myexcel.workbooks.add bookexcel=myexcel.workbooks.open("C:\Documents and Settings\Administrator\桌面\学习\dd.xls") &&打开指定文件 nrows=bookexcel.worksheets('sh...

VF中控制EXCEL的常用操作
VF中控制EXCEL的常用操作 myexcel=createobject('excel.application') &&创建一个对象 myexcel.visible=.t.&&可见 &&bookexcel=myexcel.workbooks.add bookexcel=myexcel.workbooks.open("C:\Documents and Settings\Administrator\桌面\学习\dd.xls") &&打开指定文件 nrows=bookexcel.worksheets('sheet1')&&打开工作表 UsedRange =nrows.UsedRange&&返回工作表中可使用的区域,UsedRange表的属性 usedrange.columns.count&&计算共几列 r=usedrange.rows.count&&汇总行 c=usedrange.columns.count&&汇总列 with myexcel.application .sheets('sheet3').select .sheets.add&&添加一个工作表 .ActiveSheet.Name = 'ddddd'&&重命名表 endwith myexcel.Worksheets('sheet1').Activate&&选择表为当前工作表 myexcel.cells(1,1).value='sss'&&1,1处的值为 myexcel.activesheet.columns(2).columnwidth=15&&第2列的列宽设 myexcel.activesheet.rows(2).rowheight=50&&设第2行的行高 myexcel.activesheet.rows(2).insert&&第2行前插入一行 myexcel.activesheet.columns(2).insert&&第2列前插入一列 myexcel.activesheet.Cells(1,1).Font.size=25&&设置1,1的字体大小 myexcel.activesheet.Cells(1,1).Font.name='黑体'&&设置字体 myexcel.activesheet.Cells(1,1).clear&&清除内容 myexcel.activesheet.range('A1:C2').select&&选择区域 myexcel.selection.merge &&选择区域合并单元格 myexcel.Range('a1').Formula='=sum(b2,b3,b4,b5)'&&在A1中键入一个公式 myexcel.range('a1').ClearContents myexcel.activesheet.Columns('A:B').Select&&整列选中 myexcel.Selection.NumberFormatLocal="@" &&设置选中的区域为字符型数据 myexcel.activesheet.rows(1).select myexcel.Selection.EntireRow.Delete&&删除选中的行 myexcel.Selection.columns(1).Delete&&删除第几的列 myexcel.workbooks.close&&关闭工作区 *myexcel.workbooks.close(.f.)&&关闭工作区不提示保存 myexcel.quit&&excel ******************************************************** *生成一个表并显示可用的sheets &&oExcel = CREATE("Excel.Application") &&oExcel.Workbooks.ADD &&FOR EACH oMyVar IN oExcel.sheets && ? oMyVar.name &&NEXT oMyVar 在 VFP 中控制 Excel 的小小经验集 获取工作表名称 在以下示例中,创建了一个 microsoft excel 实例,添加了一个新的工作簿。使用 foreach 语句显示工作簿中每个工作表的名称。此示例要求在运行示例的机器上正确安装 microsoft excel。 oExcel = CREATE("Excel.Application") oExcel.Workbooks.ADD FOR EACH oMyVar IN oExcel.sheets ? oMyVar.name NEXT oMyVar Excel报表巧生成 巧让FoxPro数据生成Excel报表 Visual FoxPro是应用广泛的前台数据库开发平台之一,因此在我们日常工作中时常会遇到DBF数据文件。然而随着办公自动化的普及,越来越多的时候需要将DBF文件转化为Excel电子文档。常用转化方法是在FoxPro中用Copy命令进行格式转化或直接用Excel打开DBF文件。这两种方式虽然都能达到目的,却不能得到格式规范、可以直接打印输出的报表,且输出的Excel文件中,无法对数据类型进行有效转换,极易出现数据统计错误。有没有更好的方法呢,这里有一个更加通用的方法,在VFP中调用Excel,可以由DBF文件直接生成格式如下图所示一样复杂的Excel报表(如图1)。 Excel报表 具体过程如下: 编辑推荐文章 ? 新鲜接触Excel 2000 XP ? Excel 2000公式应用的几条经验 ? Excel 2000函数应用之信息函数 假设我们要将表Agcallop.dbf文件输出为Excel格式文档,报表形如图1所示。为使通用性更强,页面采用A4纸横向输出,默认字体为宋体10号,页脚处添加页号。 部分程序代码如下: m.outfilename=putfile('输出结果','agcallop','xls') &&取导出文件名称 ef=CREATEOBJECT('Excel.application') &&调用Excel程序 ef.Workbooks.add &&添加工作簿 ef.Worksheets("sheet1").Activate &&激活第一个工作表 ef.visible=.t. &&显示Excel界面 ef.Cells.Select &&选择整张表 ef.Selection.Font.Size = 10 &&设置整表默认字体大小为10 select 0 use agcallop &&选择被导出的表 num=reccount() &&求导出总记录数 go top i=5 ef.range("F1:K1").Select &&选择标题栏所在单元格 ef.Selection.Merge &&合并单元格 with ef.range("F1 ") &&设置标题及字体属性 .value='客户服务部业务代表工作量情况统计表' .Font.Name="黑体" .Font.size=18 endwith ef.Rows(2).RowHeight=1/0.035 &&设置第二行高度为1cm ef.range("H2:O2").Select &&选定统计条件栏所在单元格 ef.Selection.Merge &&合并单元格 ef.range("H2").Font.size=10 ef.range("H2").HorizontalAlignment=4 &&设置内容对齐方式为右对齐,3为居中,2为右对齐 ef.range("H2").value='统计时间:'+dtoc(date())+' 打印日期:'+dtoc(date()) ef.Rows("3:4").Select with ef.Selection .HorizontalAlignment = 3 &&设置3、4行为水平对齐 .VerticalAlignment = 2 &&垂直居中 .NumberFormatLocal = "@" &&设置3、4行为字符型内容 endwith ef.Range("A3:A4").Select ef.Selection.Merge &&纵向合并第一列3、4行 ef.Range("A3").value='工号' &&设置第一列标题内容 ef.Columns("A").Select &&整列选择 ef.Selection.HorizontalAlignment = 3 &&水平居中 ef.Columns("A:B").Select ef.Selection.NumberFormatLocal = "@" &&设置A、B列为字符型内容 ef.Range("B3:B4").Select ef.Selection.Merge &&纵向合并第二列3、4行 ' ef.Range("B3").value='姓名 &&设置第二列标题内容 ef.Columns("B").Select &&整列选择 ef.Selection.HorizontalAlignment = 3 &&水平居中 ef.Range("C3:E3").Select &&横向合并第三行C-E列 ef.Selection.Merge ef.Range("C3").value='话务总量' &&第三行大标题为“话务总量”的列 ef.Range("C4").value='电话呼入量' &&“话务总量”下第1个小标题“电话呼入量” ef.Range("D4").value='电话呼出量' &&“话务总量”下第2个小标题“电话呼出量” ef.Range("E4").value='合 计' &&“话务总量”下第3个小标题“合计” ef.Range("F3:H3").Select ef.Selection.Merge ef.Range("F3").value='话务总时间' ef.Range("F4").value='呼入时间' ef.Range("G4").value='呼出时间' ef.Range("H4").value='合 计' ef.Range("I3:K3").Select ef.Selection.Merge ef.Range("I3").value='单个话务平均时间' ef.Range("I4").value='呼入时间' ef.Range("J4").value='呼出时间' ef.Range("K4").value='合 计' ef.Range("L3:L4").Select ef.Selection.Merge ef.Range("L3").value='累计工作时间' ef.Range("M3:M4").Select ef.Selection.Merge ef.Range("M3").value='无效时间' ef.Range("N3:N4").Select ef.Selection.Merge ef.Range("N3").value='录入量' ef.Range("O3:O4").Select ef.Selection.Merge ef.Range("O3").value='有效时间比' 接下来通过scan语句,依次为每一行每一列单元格赋值。为了获得更好的打印效果,还需进行页面设置,如标题行、页面居中、横向排版等,还可以加边框线。 以上程序在VFP 6+Excel 2000+Windows 2000下调试通过。实际应用中可根据需要对各项参数设置进行相应调整。 FOX控制EXCL文件另存为DBF(EXCL后台运行) fil=Thisform.List1.Value &&其值为一个包含路径的文件名 eole=CREATEOBJECT('Excel.application') eole.Workbooks.Open(fil) &&打开文件 eole.Selection.AutoFilter &&关闭(如果无则打开)自动筛选 eole.Range("A1:F1000").Select &&选中从第1行到1000行的前6列数据(另存后只有这些数据) asfil=STRTRAN(UPPER(STRTRAN(fil,SUBSTR(fil,1,RAT('\',fil)),'c:\window s\desktop\cphz\')),'.XLS','.dbf') &&要保存的文件名 IF FILE(asfil) DELETE FILE &asfil ENDIF eole.ActiveWorkbook.SaveAs(asfil,8) &&另存为DBF eole.ActiveWorkbook.saved=.t. &&不保存当前EXCL表 eole.Workbooks.close &&关闭表 eole.quit &&退出EXCL RELEASE eole &&释放变量 虽然用APPEND FROM tx.xls TYPE XL8可以更简单的追加数据,但有时会导致程序非法错误退出(不知是不是因为非法字符),而且还有一定的限制 实用的VFP与EXCEL交互编程 邹益民 摘要:本文介绍了几种实用的VFP与EXCEL交互编程的方法与实例,将VFP强大的数据处理功能与EXCEL优异的制表功能有机地结合起来,大大增强了软件的应用效果。 关键词:VFP、EXCEL、DDE、OLE、交互编程。 Some Cross_Programming Methods Between VFP and EXCEL Zou yiming(Gansu Lanzhou Section of Instruments Lanzhou Petrochemical Staff College) Abstract: The author introduces us in this paper some practical methods and instance of cross_programming between VFP and EXCEL . It extremely improves their performances by combining VFP's data processing functions with EXCEL's excellent tabulation functions. Key Words: VFP、EXCEL、OLE、DDE、Cross-Programming VFP(Visual Foxpro)是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性,使其成为数据库应用程序开发人员的强有力工具,而EXECL则是一种优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表等方面有着独到的优势。上述两种软件在各自的应用领域均得到广泛的应用,同时上述两种软件还具有良好的交互编程能力,为两者相辅相成、取长补短奠定了良好的基础。 本文将结合具体实例介绍几种VFP与EXCEL交互编程的方法,每种方法虽然实现手段各异,但功能相仿。其功能可简述如下:VFP数据表“学生成绩表(DBF” 学生姓名”、“语文”、“数学”((((((等字段,示例程序将从中含“ EXCEL工作簿“VFP交互(XLS”之工作表“查询”中用书签“课程名”指定的单元取得欲查询的课程名称,然后在数据表“学生成绩表(DBF”中自动搜索,以找到该门课程不及格的同学名单,最后传送至原EXCEL工作薄形成新的工作表单,同时,新工作表还将以该课程名命名。 下列程序均在VFP5(0与EXCEL97中调试通过。因篇幅所限,程序中的错误处理部分略去。 一、EXECL驱动VFP EXECL内置的VBA语言(Visual Basic For Application)为EXECL功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。 程序首先生成一个VFP对象,然后用VFP的DoCmd方法执行VFP摸索命令串,其摸索结果再借助于VFP的DateToClip方法拷贝至剪切板,最后VBA将其粘贴至工作表的正确位置。 Sub FoxTest() Dim oFox As Object Dim SLesson As String Dim SCommand As String Set oFox = CreateObject("VisualFoxPro.Application") ,启动VFP,生成VFP对象 Sheets("查询").Select SLesson = Range("课程名") ,在名为“课程名”的单元格中得到欲查询的课程名称 Sheets.Add ,产生新的工作表单 ActiveSheet.Name = Slesson ,指定工作表单的名称与课程名称相同 SCommand = "SELECT 学号,语文,数学 FROM d:\vfp\学生成绩表 WHERE "+ SLesson + "<60 INTO CURSOR TEMP" ,形成VFP查询命令串 oFox.DoCmd Scommand ,执行VFP命令串 oFox.DataToClip "temp", , 3 ,将搜索结果以文本方式拷贝至剪切板 Range("a1:a1").Select ,指向拷贝目标区域左上角单元 ActiveSheet.Paste ,粘贴搜索结果 End Sub 的工具栏及一名为“开始搜为便于使用,作者在EXECL中自制了一名为“搜索” 索”的按钮,并将上述宏程序段与自制按钮相关联,按下此按钮即可运行程序并在EXCEL中得到要求的数据。 制作工具栏及按钮的方法如下: 1. 选“工具”/“自定义”菜单,出现自定义对话框; 2. 选择“工具栏”页框,然后按下“新建”按钮; 3. 在工具栏对话框中输入“搜索”作为新建工具栏的名称; 4. 选择“命令”页框,在“类别”列表中选“宏”,在“命令”列表中选“自定义按钮”并将其拖放至新建的“搜索”工具栏; 5. 按下“更新所选内容”按钮,首先在“命名”栏中填入按钮名称“开始搜 ,然后选择“指定宏”,在随后出现的“指定宏”列表中选择上述宏程序索” FoxTest()即可实现为该宏指定一个工具栏按钮。 二、VFP使用OLE功能驱动EXECL Object Linking and Embedding)对象链接与嵌入,是WINDOWS应用程序OLE( 间相互传递和共享数据的一种有效方法。VFP借助于OLE不仅可共享其它应用程序的数据,而且还能以对象方式直接控制其它应用程序的运行,从而进一步扩展VFP的功能。VFP支持直接在程序中创建、使用和控制OLE对象,实现OLE自动化。作为OLE客户VFP与作为OLE服务器的EXCEL具有良好的编程接口,下述程序段用OLE方式实现所要求的功能。 程序首先生成一个EXCEL的OLE对象OleApp以便对其进行操作,然后利用OLE功能从EXCEL表单中获取欲查询的课程名,并控制EXCEL生成新的工作表,VFP的查询结果仍然使用剪切板的方式传递至EXCEL工作表。 OleApp=CREATEOBJECT("Excel.Application") && 打开EXCEL,产生OLE对象 OleApp.Application.Caption="VFP交互编程" && 指定标题栏名称 OleApp.Application.Visible=.T. && 置EXCEL可见 OleApp.Application.WorkBooks.Open("d:\vfp\VFP交互.xls") && 打开EXCEL工作簿 DO WHILE .T. WITH OleApp.Application nAnswer = MESSAGEBOX("开始搜索,", 32+4, "搜索指定数据") &&产生信息框 IF (.NOT.(nAnswer=6)) && 如按下“Yes"按钮,则开始搜索,反之退出 EXIT ENDIF .Sheets("查询").Select && 选择“查询”工作表单 SLesson = OleApp.Application.Range("课程名").Value && 得到欲查询的课程名称 .Sheets.Add && 新建一工作表单 .ActiveSheet.Name = Slesson && 指定工作表单的名称 SCommand = "SELECT 学号,语文,数学 FROM d:\vfp\学生成绩表 WHERE " +ALLTrim(SLesson) + "<60 INTO CURSOR TEMP" && 形成VFP查询命令串 &Scommand && 执行VFP命令串 _VFP.DataToClip("TEMP",,3) && 将搜索结果以文本方式拷贝至剪切板 .Range("a1:a1").Select && 指向拷贝目标区域左上角单元 .ActiveSheet.Paste && 粘贴搜索结果 ENDWITH ENDDO OleApp.Quit && 关闭EXCEL,保存更新后的工作簿文件 **************************************** objexcel.activeworkbook.close(.f.) 那个是关闭excel啊~~不是存盘~关闭了就不能存盘了 设置打印参数: 问:用Excel做报表,可打印时怎么选择打印机, 即.ActiveWindow.SelectedSheets.PrintOut的参数有哪些, 答: expression.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName) expression 必选。该表达式返回“应用于”列表中的某个对象。 From Variant 类型,可选。打印的开始页号。如果省略该参数,将从起始位置开始打印。 To Variant 类型,可选。打印的终止页号。如果省略该参数,将打印至最后一页。 Copies Variant 类型,可选。要打印的份数。如果省略该参数,将只打印一份。 Preview Variant 类型,可选。如果为 True 则 Microsoft Excel 打印指定对象之前进行打印预览。如果为 False,或者省略此参数则立即打印该对象。 ActivePrinter Variant 类型,可选。设置活动打印机的名称。 PrintToFile Variant 类型,可选。如果为 True 则打印输出到文件。如果没有指定 PrToFileName,则 Microsoft Excel 将提示用户输入要输出文件的文件名。 Collate Variant 类型,可选。如果为 True 则逐份打印每份副本。 PrToFileName 可选,Variant 类型。如果将 PrintToFile 设置为 True,则本参数指定要打印到的文件名。 说明 From 参数和 To 参数所描述的“页”指的是要打印的页,并非指定工作表或工作簿中的全部页。 如何用编程的方法打开有密码的Excel文件, 问题: Excel文件加了密码,如何在VFP中用编程的方式把密码输入,使Excel文件打开 如: eole=CREATEOBJECT('Excel.application') eole.Workbooks.Open("d:\22.xls") 这样还有一个密码的对话框出来,需要输入密码才能打开文件。 如何用编程的方法直接打开有密码的Excel文件, 答: 22.xls",.f.,.f., ,"123","456") oEle.Workbooks.Open("d:\ "123"表示打开权限的密码, "456"表示修改权限的密码. ---------------------------------------------- 问题一:如何将一个已知路径的图片插入到excel中. 答: oexcel1.ActiveSheet.Pictures.Insert("图片文件名") ---------------------------------------------- 问题二:能不能指定在某一位置或区域放置图片并控制图片显示大小呢? 答: OLEAPP.SHEETS(1).SELECT oleapp.Range("位置").Select oleapp.ActiveSheet.Pictures.Insert("图片文件名")).Select oleapp.Selection.ShapeRange.LockAspectRatio =.T. oleapp.Selection.ShapeRange.Height = 57 ---------------------------------------------- 问题:类型为字符型的字段输出到excel 中,前面的零被自动去掉,例如 “009877”变为“9877”,怎么解决, 答: 1.在字符串前面加半角单引号“ ' ” 2. eole.Range("A1:Y1").Select eole.Selection.NumberFormatLocal = "@" ---------------------------------------------- 在 Excel 中插入行和列 : objExcel.Rows(1).Insert() &&在第一行前面插入一行 objExcel.Columns(2).Insert() &&在第二列前面插入一列 ---------------------------------------------- 获取 Excel 记录数 loXls = CREATEOBJECT("excel.application") bookExcel = loXls.APPLICATION.Workbooks.OPEN("f:\pz.xls") nrows=bookExcel.Worksheets('pz') UsedRange =nrows.UsedRange r = UsedRange.ROWS.COUNT &&行数 c = UsedRange.COLUMNS.COUNT &&列数 ---------------------------------------------- 问:在EXCEL中如何在打开文件的同时自动执行一个宏命令。 答: 只要将宏的命名为 AUTO_OPEN 即可。 如果要在文件关闭时运行,则命名为auto_close 。 ---------------------------------------------- 在VFP中可以执行EXCEL的选择性粘贴吗? 问: .Range("A2").PasteSpecial ("xlPastues") && 会出错 .Range("A2").PasteSpecial (3) && 也会出错 .Range("A2").PasteSpecial && 只好这样了 如何才能只粘贴值呢? ===================================================== 答: xlPastues=-4163 oExcel.Range("A1").Select oExcel.Selection.copy oExcel.Range("B1")._PasteSpecial(xlPastues) 注意:在Excel 中,:xlPastues:是一个常量,它的值是一个数值型的:-4163 1(创建Excel对象 eole=CREATEOBJECT(′Excel.application′) 2(添加新工作簿 eole.Workbooks.add 3(设置第3个工作表为激活工作表 eole.Worksheets(″sheet3″).Activate 4(打开指定工作簿 eole.Workbooks.Open(″c:\temp\ll.xls″) 5(显示Excel窗口 eole.visible=.t. 6(更改Excel标题栏 eole.Caption=″VFP应用程序调用Microsoft Excel″ 7(给单元格赋值 eole.cells(1,4).value=XM(XM为数据库字段名) 8(设置指定列的宽度(单位:字符个数) eole.ActiveSheet.Columns(1).ColumnWidth=5 9(设置指定行的高度(单位:磅) eole.ActiveSheet.Rows(1).RowHeight=1/0.035 (设定行高为1厘米,1磅=0.035厘米) 10(在第18行之前插入分页符 eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1 11(在第4列之前删除分页符 eole.ActiveSheet.Columns(4).PageBreak=0 12(指定边框线宽度(Borders参数如下) ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=3 13(设置四个边框线条的类型 eole.ActiveSheet.Range(″b3:d3″).Borders(2).LineStyle=1 (其中Borders参数:1,左、2,右、3,顶、4,底、5,斜、6,斜/;LineStyle值:1与7,细实、2,细虚、4,点虚、9,双细实线) 14(设置页眉 eole.ActiveSheet.PageSetup.CenterHeader=″报表1″ (设置页脚 15 eole.ActiveSheet.PageSetup.CenterFooter=″第,P页″ 16(设置页眉到顶端边距为2厘米 eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035 17(设置页脚到底边距为3厘米 eole.ActiveSheet.PageSetup.FooterMargin=3/0.035 18(设置顶边距为2厘米 eole.ActiveSheet.PageSetup.TopMargin=2/0.035 19(设置底边距为4厘米 eole.ActiveSheet.PageSetup.BottomMargin=4/0.035 (设置左边距为2厘米 20 veole.ActiveSheet.PageSetup.LeftMargin=2/0.035 21(设置右边距为2厘米 eole.ActiveSheet.PageSetup.RightMargin=2/0.035 22(设置页面水平居中 eole.ActiveSheet.PageSetup.CenterHorizontally=.t. 23(设置页面垂直居中 eole.ActiveSheet.PageSetup.CenterVertically=.t. 24(设置页面纸张大小(1,窄行8511 39,宽行1411) eole.ActiveSheet.PageSetup.PaperSize=1 25(打印单元格网线 eole.ActiveSheet.PageSetup.PrintGridlines=.t. 26(拷贝整个工作表 eole.ActiveSheet.UsedRange.Copy 27(拷贝指定区域 eole.ActiveSheet.Range(″A1:E2″).Copy 28(粘贴 eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial 29(在第2行之前插入一行 eole.ActiveSheet.Rows(2).Insert 30(在第2列之前插入一列 eole.ActiveSheet.Columns(2).Insert 31(设置字体 eole.ActiveSheet.Cells(2,1).Font.Name=″黑体″ 32(设置字体大小 eole.ActiveSheet.Cells(1,1).Font.Size=25 33(设置字体为斜体 eole.ActiveSheet.Cells(1,1).Font.Italic=.t. 34(设置整列字体为粗体 eole.ActiveSheet.Columns(1).Font.Bold=.t. 35(清除单元格公式 eole.ActiveSheet.Cells(1,4).ClearContents 36(打印预览工作表 eole.ActiveSheet.PrintPreview 37(打印输出工作表 eole.ActiveSheet.PrintOut 38(工作表另为 eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″) 39(放弃存盘 eole.ActiveWorkbook.saved=.t. 40(关闭工作簿 eole.Workbooks.close 41(退出Excel eole.quit API函数 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称 WNetGetLastError 获取网络错误的扩展错误信息 WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程 2. API之消息函数 BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 PostMessage 将一条消息投递到指定窗口的消息队列 PostThreadMessage 将一条消息投递给应用程序 RegisterWindowMessage 获取分配给一个字串标识符的消息编号 ReplyMessage 答复一个消息 SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息 3. API之文件处理函数 CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirectory 创建一个新目录 CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件 DeviceIoControl 对设备执行指定的操作 DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 FindFirstFile 根据文件名查找文件 FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区 FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 GetBinaryType 判断文件是否可以执行 GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 GetCurrentDirectory 在一个缓冲区中装载当前目录 GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息 GetDriveType 判断一个磁盘驱动器的类型 GetExpandedName 取得一个压缩文件的全名 GetFileAttributes 判断指定文件的属性 GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制 GetFileSize 判断文件长度 GetFileTime 取得指定文件的时间信息 GetFileType 在给出文件句柄的前提下,判断文件类型 GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息 GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区 GetFullPathName 获取指定文件的完整路径名 GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径 GetOverlappedResult 判断一个重叠操作当前的状态 GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值 GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表 GetPrivateProfileString 为初始化文件中指定的条目取得字串 GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值 GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表 GetProfileString 为win.ini初始化文件中指定的条目取得字串 GetShortPathName 获取指定文件的短路径名 GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名 GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用 GetTempPath 获取为临时文件指定的路径 GetVolumeInformation 获取与一个磁盘卷有关的信息 GetWindowsDirectory 获取Windows目录的完整路径名 hread 参考lread hwrite 参考lwrite函数 lclose 关闭指定的文件 lcreat 创建一个文件 llseek 设置文件中进行读写的当前位置 LockFile 锁定文件的某一部分,使其不与其他应用程序共享 LockFileEx 与LockFile相似,只是它提供了更多的功能 lopen 以二进制模式打开指定的文件 lread 将文件中的数据读入内存缓冲区 lwrite 将数据从内存缓冲区写入一个文件 LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件 LZCopy 复制一个文件 LZInit 这个函数用于初始化内部缓冲区 LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件 LZRead 将数据从文件读入内存缓冲区 LZSeek 设置一个文件中进行读写的当前位置 MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间 MoveFile 移动文件 OpenFile 这个函数能执行大量不同的文件操作 OpenFileMapping 打开一个现成的文件映射对象 QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况 ReadFile 从文件中读出数据 ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 RegCloseKey 关闭系统注册表中的一个项(或键) RegConnectRegistry 访问远程系统的部分注册表 RegCreateKey 在指定的项下创建或打开一个项 RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数 RegDeleteKey 删除现有项下方一个指定的子项 RegDeletue 删除指定项下方的一个值 RegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx RegEnumKeyEx 枚举指定项下方的子项 RegEnumValue 枚举指定项的值 RegFlushKey 将对项和它的子项作出的改动实际写入磁盘 RegGetKeySecurity 获取与一个注册表项有关的安全信息 RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息 RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制 RegOpenKey 打开一个现有的注册表项 RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数 RegQueryInfoKey 获取与一个项有关的信息 RegQueryValue 取得指定项或子项的默认(未命名)值 RegQueryValueEx 获取一个项的设置值 RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息 RegRestoreKey 从一个磁盘文件恢复注册表信息 RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件 RegSetKeySecurity 设置指定项的安全特性 RegSetValue 设置指定项或子项的默认值 RegSetValueEx 设置指定项的值 RegUnLoadKey 卸载指定的项以及它的所有子项 RemoveDirectory 删除指定目录 SearchPath 查找指定文件 SetCurrentDirectory 设置当前目录 SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾 SetFileAttributes 设置文件属性 SetFilePointer 在一个文件中设置当前的读写位置 SetFileTime 设置文件的创建、访问及上次修改时间 SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果 SetVolumeLabel 设置一个磁盘的卷标(Label) SystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构 UnlockFile 解除对一个文件的锁定 UnlockFileEx 解除对一个文件的锁定 UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射 VerFindFile 用这个函数决定一个文件应安装到哪里 VerInstallFile 用这个函数安装一个文件 VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称 VerQueryValue 这个函数用于从版本资源中获取信息 WriteFile 将数据写入一个文件 WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调 WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值 WritePrivateProfileString 在初始化文件指定小节内设置一个字串 WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值 WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串 4. API之打印函数 AbortDoc 取消一份文档的打印 AbortPrinter 删除与一台打印机关联在一起的缓冲文件 AddForm 为打印机的表单列表添加一个新表单 AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 AddMonitor 为系统添加一个打印机监视器 AddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 AddPrinter 在系统中添加一台新打印机 AddPrinterConnection 连接指定的打印机 AddPrinterDriver 为指定的系统添加一个打印驱动程序 AddPrintProcessor 为指定的系统添加一个打印处理器 AddPrintProvidor 为系统添加一个打印供应商 AdvancedDocumentProperties 启动打印机文档设置对话框 ClosePrinter 关闭一个打开的打印机对象 ConfigurePort 针对指定的端口,启动一个端口配置对话框 ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 DeleteForm 从打印机可用表单列表中删除一个表单 DeleteMonitor 删除指定的打印监视器 DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 DeletePrinter 将指定的打印机标志为从系统中删除 DeletePrinterConnection 删除与指定打印机的连接 DeletePrinterDriver 从系统删除一个打印机驱动程序 DeletePrintProcessor 从指定系统删除一个打印处理器 DeletePrintProvidor 从系统中删除一个打印供应商 DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 DocumentProperties 打印机配置控制函数 EndDocAPI 结束一个成功的打印作业 EndDocPrinter 在后台打印程序的级别指定一个文档的结束 并准备设备场景,以便打印下一个页 EndPage 用这个函数完成一个页面的打印, EndPagePrinter 指定一个页在打印作业中的结尾 EnumForms 枚举一台打印机可用的表单 EnumJobs 枚举打印队列中的作业 EnumMonitors 枚举可用的打印监视器 EnumPorts 枚举一个系统可用的端口 EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 EnumPrinters 枚举系统中安装的打印机 EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 EnumPrintProcessors 枚举系统中可用的打印处理器 Escape 设备控制函数 FindClosePrinterChangeNotification 关闭用 FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 GetForm 取得与指定表单有关的信息 GetJob 获取与指定作业有关的信息 GetPrinter 取得与指定打印机有关的信息 GetPrinterData 为打印机设置注册表配置信息 GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 OpenPrinter 打开指定的打印机,并获取打印机的句柄 PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 ReadPrinter 从打印机读入数据 ResetDC 重设一个设备场景 ResetPrinter 改变指定打印机的默认数据类型及文档设置 ScheduleJob 提交一个要打印的作业 SetAbortProc 为Windows指定取消函数的地址 SetForm 为指定的表单设置信息 SetJob 对一个打印作业的状态进行控制 SetPrinter 对一台打印机的状态进行控制 SetPrinterData 设置打印机的注册表配置信息 StartDoc 开始一个打印作业 StartDocPrinter 在后台打印的级别启动一个新文档 StartPage 打印一个新页前要先调用这个函数 StartPagePrinter 在打印作业中指定一个新页的开始 WritePrinter 将发送目录中的数据写入打印机 5. API之文本和字体函数 AddFontResource 在Windows系统中添加一种字体资源 CreateFont 用指定的属性创建一种逻辑字体 CreateFontIndirect 用指定的属性创建一种逻辑字体 CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 DrawText 将文本描绘到指定的矩形中 DrawTextEx 与DrawText相似,只是加入了更多的功能 EnumFontFamilies 列举指定设备可用的字体 EnumFontFamiliesEx 列举指定设备可用的字体 EnumFonts 列举指定设备可用的字体 ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数 GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小 GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小 GetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸 GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串 GetCharWidth 调查字体中一个或多个字符的宽度 GetFontData 接收一种可缩放字体文件的数据 GetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息 GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息 GetKerningPairs 取得指定字体的字距信息 GetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息 GetRasterizerCaps 了解系统是否有能力支持可缩放的字体 GetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素 GetTextAlign 接收一个设备场景当前的文本对齐标志 GetTextCharacterExtra 判断额外字符间距的当前值 GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符 GetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 GetTextColor 判断当前字体颜色。通常也称为“前景色” GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息 GetTextExtentPoint 判断一个字串的大小(范围) GetTextFace 获取一种字体的字样名 GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息 GrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 PolyTextOut 描绘一系列字串 RemoveFontResource 从Windows系统中删除一种字体资源 SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体 SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置 SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 前景色” SetTextColor 设置当前文本颜色。这种颜色也称为“ SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 TabbedTextOut 支持制表站的一个文本描绘函数 TextOut 文本绘图函数 6. API之菜单函数 AppendMenu 在指定的菜单里添加一个菜单项 CheckMenuItem 复选或撤消复选指定的菜单条目 CheckMenuRadioItem 指定一个菜单条目被复选成“单选”项目 CreateMenu 创建新菜单 CreatePopupMenu 创建一个空的弹出式菜单 DeleteMenu 删除指定的菜单条目 DestroyMenu 删除指定的菜单 DrawMenuBar 为指定的窗口重画菜单 EnableMenuItem 允许或禁止指定的菜单条目 GetMenu 取得窗口中一个菜单的句柄 GetMenuCheckMarkDimensions 返回一个菜单复选符的大小 GetMenuContextHelpId 取得一个菜单的帮助场景ID GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 GetMenuItemCount 返回菜单中条目(菜单项)的数量 GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息 GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息 GetMenuState 取得与指定菜单条目状态有关的信息 GetMenuString 取得指定菜单条目的字串 GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 GetSystemMenu 取得指定窗口的系统菜单的句柄 HiliteMenuItem 控制顶级菜单条目的加亮显示状态 InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动 InsertMenuItem 插入一个新菜单条目 IsMenu 判断指定的句柄是否为一个菜单的句柄 LoadMenu 从指定的模块或应用程序实例中载入一个菜单 LoadMenuIndirect 载入一个菜单 MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 ModifyMenu 改变菜单条目 RemoveMenu 删除指定的菜单条目 SetMenu 设置窗口菜单 SetMenuContextHelpId 设置一个菜单的帮助场景ID SetMenuDefaultItem 将一个菜单条目设为默认条目 SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(?) SetMenuItemInfo 为一个菜单条目设置指定的信息 在屏幕的任意地方显示一个弹出式菜单 TrackPopupMenu TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能 7. API之位图、图标和光栅运算函数 BitBlt 将一幅位图从一个设备场景复制到另一个 CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作 CreateBitmap 按照 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 的格式创建一幅与设备有关位图 CreateBitmapIndirect 创建一幅与设备有关位图 CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容 CreateCursor 创建一个鼠标指针 CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图 CreateDIBSection 创建一个DIBSection CreateIcon 创建一个图标 CreateIconIndirect 创建一个图标 DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源 DestroyIcon 清除图标 DrawIcon 在指定的位置画一个图标 DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能 ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之 ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来 GetBitmapBits 将来自位图的二进制位复制到一个缓冲区 GetBitmapDimensionEx 取得一幅位图的宽度和高度 GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息 GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里 GetIconInfo 取得与图标有关的信息 GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式 LoadBitmap 从指定的模块或应用程序实例中载入一幅位图 LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针 LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针 LoadIcon 从指定的模块或应用程序实例中载入一个图标 LoadImage 载入一个位图、图标或指针 MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理 PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景 PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理 SetBitmapBits 将来自缓冲区的二进制位复制到一幅位图 SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位 选入设备场景的一个DIBSection的颜色表信息 SetDIBColorTable 设置 SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里 SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备 SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式 StretchBlt 将一幅位图从一个设备场景复制到另一个 StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景 8. API之绘图函数 AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作 AngleArc 用一个连接弧画一条线 Arc 画一个圆弧 BeginPath 启动一个路径分支 CancelDC 取消另一个线程里的长时间绘图操作 Chord 画一个弦 CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄 CloseFigure 描绘到一个路径时,关闭当前打开的图形 CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄 CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝) CopyMetaFile 制作指定(标准)图元文件的一个副本 CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子 CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案) CreateEnhMetaFile 创建一个增强型的图元文件设备场景 CreateHatchBrush 创建带有阴影图案的一个刷子 CreateMetaFile 创建一个图元文件设备场景 CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子 CreatePen 用指定的样式、宽度和颜色创建一个画笔 CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔 CreateSolidBrush 用纯色创建一个刷子 DeleteEnhMetaFile 删除指定的增强型图元文件 DeleteMetaFile 删除指定的图元文件 DeleteObject 删除GDI对象,对象使用的所有系统资源都会被释放 DrawEdge 用指定的样式描绘一个矩形的边框 DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序 DrawFocusRect 画一个焦点矩形 DrawFrameControl 描绘一个标准控件 DrawState 为一幅图象或绘图操作应用各式各样的效果 Ellipse 描绘一个椭圆,由指定的矩形围绕 EndPath 停止定义一个路径 EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录 EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 EnumObjects 枚举可随同指定设备场景使用的画笔和刷子 ExtCreatePen 创建一个扩展画笔(装饰或几何) ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 FillPath 关闭路径中任何打开的图形,并用当前刷子填充 FillRect 用指定的刷子填充一个矩形 FlattenPath 将一个路径中的所有曲线都转换成线段 FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 FrameRect 用指定的刷子围绕一个矩形画一个边框 GdiComment 为指定的增强型图元文件设备场景添加一条注释信息 GdiFlush 执行任何未决的绘图操作 GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中 GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列 GetArcDirection 画圆弧的时候,判断当前采用的绘图方向 GetBkColor 取得指定设备场景当前的背景颜色 GetBkMode 针对指定的设备场景,取得当前的背景填充模式 GetBrushOrgEx 判断指定设备场景中当前选定刷子起点 GetCurrentObject 获得指定类型的当前选定对象 GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置 GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄 GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里 GetEnhMetaFileDescription 返回对一个增强型图元文件的说明 GetEnhMetaFileHeader 取得增强型图元文件的图元文件头 GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板 GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄 GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区 GetMiterLimit 取得设备场景的斜率限制(Miter)设置 GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色 GetObjectAPI 取得对指定对象进行说明的一个结构 GetObjectType 判断由指定句柄引用的GDI对象的类型 GetPath 取得对当前路径进行定义的一系列数据 GetPixel 在指定的设备场景中取得一个像素的RGB值 GetPolyFillMode 针对指定的设备场景,获得多边形填充模式 GetROP2 针对指定的设备场景,取得当前的绘图模式 GetStockObject 取得一个固有对象(Stock) GetSysColorBrush 为任何一种标准系统颜色取得一个刷子 GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一 个增强型图元文件转换成标准windows图元文件 InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形 LineDDA 枚举指定线段中的所有点 LineTo 用当前画笔画一条线,从当前位置连到一个指定的点 MoveToEx 为指定的设备场景指定一个新的当前画笔位置 PaintDesk 在指定的设备场景中描绘桌面墙纸图案 PathToRegion 将当前选定的路径转换到一个区域里 Pie 画一个饼图 PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件 PlayEnhMetaFileRecord 回放单独一条增强型图元文件记录 PlayMetaFile 在指定的设备场景中回放一个图元文件 PlayMetaFileRecord 回放来自图元文件的单条记录 PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线 PolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成 Polygon 描绘一个多边形 Polyline 用当前画笔描绘一系列线段 PolyPolygon 用当前选定画笔描绘两个或多个多边形 PolyPolyline 用当前选定画笔描绘两个或多个多边形 Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充 RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充 SelectClipPath 将设备场景当前的路径合并到剪切区域里 SelectObject 为当前设备场景选择图形对象 SetArcDirection 设置圆弧的描绘方向 SetBkColor 为指定的设备场景设置背景颜色 SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式 SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点 SetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件 SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件 SetMiterLimit 设置设备场景当前的斜率限制 SetPixel 在指定的设备场景中设置一个像素的RGB值 SetPixelV 在指定的设备场景中设置一个像素的RGB值 SetPolyFillMode 设置多边形的填充模式 SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致 SetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件 StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域 StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭 UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数 WidenPath 根据选定画笔的宽度,重新定义当前选定的路径 从excel导入数据到vf,并且字段名为第一行名 close all set safety off set default to 'e:\'&&设置默认目录 messagebox('请选择要导入的XLS文件'+chr(13)+; '注意表格不要有格式,首行的命名符合规则'; +chr(13)+'只把第一行做为字段','提示') ss=getfile('xls')&&打开选择文件对话框,并赋值 if isblank(ss) return endif myexcel=createobject('excel.application')&&创建EXCEL对象 *myexcel.visible=.t. bookexcel=myexcel.workbooks.open(ss)&&打开选择的文件 i=1 ***************获得表的可用sheet************************************* for each omyvar in myexcel.sheets dimension a(i) a(i)=omyvar.name i=i+1 next omyvar ****************************************************** nrows=bookexcel.worksheets(a(1))&&设置第一个表为工作表 UsedRange =nrows.UsedRange&&设置工作区域 ***************把第一行的数据赋值给数组b,一会删除第一行,便于导入***** ma=usedrange.columns.count&&返回列的总数 dimension b(ma) for i=1 to ma b(i)=myexcel.cells(1,i).value next ****************************************************** myexcel.Worksheets(a(1)).Activate myexcel.activesheet.rows(1).select&&选中第一行 myexcel.Selection.EntireRow.Delete&&删除选中的行 myexcel.Worksheets(a(1)).select *********检查d:\hh.xls是否存在,若存在,删除*********** IF FILE('d:\hh.xls') DELETE FILE d:\hh.xls ENDIF ********************************* myexcel.ActiveWorkbook.SaveAs('d:\hh.xls')&&文件另存为 myexcel.ActiveWorkbook.saved=.t.&&不保存修改 myexcel.workbooks.close&&关闭工作区不提示保存 myexcel.quit&&excel退出 *release myexcel ******************* import from d:\hh.xls type xl5&&导入到默认目录下的hh.dbf表中 DELETE FILE d:\hh.xls&&删除表 ***********给表字段重命名************************** use hh ma=fcount() dimension c(ma) for la=1 to ma c(la)=field(la) next for la=1 to ma ?la,c(la),b(la) alter table hh rename &c(la) to &b(la) next ***************************************** messagebox('已成功将表导入到E:\hh.dbf','提示') close all 在vf中创建圆形表单 *************在表单的load事件中写下 declare integer SetWindowRgn in win32api integer,integer,integer&&声明API函数 declare integer CreateRoundRectRgn in win32api integer,integer,integer,integer,integer,integer set library to 'd:\program files\microsoft visual studio\vfp98\foxtools.fll'&&指出装机是地址 this.height=400 this.width=400 ************在表单的active事件中写下************************ topwindow=_WonTop() hwnd=_WhToHwnd(topwindow) crn1=CreateRoundRectRgn(0,0,400,400,400,400) SetWindowRgn(hwnd,crn1,.t.) 转载,,,,,,,,,,,,,,, WHANDLE WonTop(), 返回用户使用的活动窗口WHandle HWND WhToHwnd(WHandle), 返回相应的窗口句柄hWnd。 HDC GetDC(hWnd), 返回指定窗口hWnd的设备句柄hDC 有了设备句柄调用绘图函数则很容易,例如:画矩形的API函数语法如下: BOOL Rectangle(hDC,x1,y1,x2,y2) 其中x1,y1,x2,y2为矩形对角线的x,y坐标 使用这些API函数绘图需注意几点: 1.API函数使用前需用declare声明,另外应注意函数名称大小写(具体用法见文后程序)。 2.调用以上函数时,WHandle、hWnd、hDc、x1、y1、x2、y2参数及BOOL均可用Integer类型进行说明,以上函数返回值若为0,表示调用失败。 3.Visual FoxPro设置前景色、填充色等属性设置不影响API函数中绘图方式。 4.使用Visual FoxPro原类方法的绘图方法时,会清除API画的图形。因此,两者最好不要混合使用。 5(API函数参数中若有复合数据结构或数组,则应将该数据结构转换成String型。如下例语句可在VFP中调用Polygon函数绘制多边形。 declare integer Polygon in win32api integer,string,integer dime point(3,2), point为三角形顶点坐标 trangle=′′ for i=1 to 3 point(i,1)=100,100,rand(), I点X坐标为(100,200)随机数 (i,2)=100,100,rand(), I点Y坐标为(100,200)随机数 point 以下两条语句将多边形顶点的数值转化为字符,并连入字符串 trangle=trangle,chr(point(i,1)),chr(0),chr(0),chr(0) chr(point(i,2)),chr(0),chr(0),chr(0) trangle=trangle, endfor polygon(thisform.hdc,trangle,3) VPF中打开一个表单,在表单中新建属性并新建API函数编制的绘图方法,最后将其保存为新类库。这样一个集绘图与原表单各种功能的可视类就建好了。 以下是Visual Foxpro中用API函数动态设计饼形图的简单实例。图为执行程序后屏幕输出。三个文本框中任一数据改变后,饼形图将立即重绘。 程序: 为Form对象增加新属性hDc和新方法Pie。 Form1的Load 事件: declare integer GetDC in win32api integer declare integer Pie in win32api integer,integer,integer,integer,; integer,integer,integer,integer,integer declare integer CreateSolidBrush in win32api long declare integer SelectObject in win32api integer,integer declare integer CreatePen in win32api integer,integer,long set library to sys(2004),〃foxtools.fll〃 Form1的Activate事件 whandle=_WOnTop() hwnd=_WhToHwnd(whandle) set library to thisform.hDC=GetDC(hwnd) Form1的Pie方法 lparameters x1,y1,x2,y2,x3,y3,x4,y4 hbrush=CreateSolidBrush(thisform.fillcolor) hpen=Createpen(thisform.drawstyle,thisform.drawwidth,thisform.forecolor) =selectobject(thisform.hdc,hbrush) =selectobject(thisform.hdc,hpen) =pie(thisform.hdc,x1,y1,x2,y2,x3,y3,x4,y4) Form1的Unload事件 dlls clear 将本表单保存为新的可视类FORMDRAW。 创建一个Form(FORMDRAW为其可视类)、添加四个Label、三个Text(Value 属性分别赋三个数值)和三个Shape对象,属性设置略(使其外观如^06020401a^),为FORM增加方法Drawchar。 表单的Drawchart方法: x1=thisform.text1.value x2=thisform.text2.value x3=thisform.text3.value total=x1,x2,x3 ,pi(),x1/total a1=2 a2=2,pi(),x2/total x1=250 y1=50 x2=350 y2=150 mx=(x1,x2)/2,1 my=(y1,y2)/2,1 thisform.fillcolor=255 =thisform.pie(x1,y1,x2,y2,mx,10,my,mx,10,cos(a1),my,10,sin(a1)) thisform.fillcolor=rgb(0,255,0) =thisform.pie(x1,y1,x2,y2,mx,10,cos(a1),my,10,sin(a1),mx,10,cos(a1,a2),my; ,10,sin(a1,a2)) thisform.fillcolor=rgb(0,0,255) =thisform.pie(x1,y1,x2,y2,mx,10,cos(a1,a2),my,10,sin (a1,a2),mx,10,my) Text1、Text2、Text3的Valid事件: Thisform.drawchart 表单的Paint事件 Thisform.drawchart 用API函数绘图与Visual FoxPro自身方法相比,使用更灵活、绘图性能强且速度快。关于Windows API 函数功能及用法请查阅有关资料。本文所述方法亦可在能与API函数通讯的其它软件中使用。 汉字转化为首位拼音码 本例可实现即时的将文本框内的值转化为拼音,经调试,完全可用,在表单上建两个edit控件,在edit2的interactivechange方法中写下 cpychr='' set collate to 'pinyin'&&设置排序方式为拼音 pycode='八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗' chzchr=this.value for i=1 to len(chzchr) if asc(substr(chzchr,i,1))>160&&判断是否为汉字 hz=substr(chzchr,i,2) c='' for j=1 to 26 &&这个FOR循环很有意思 if substr(hz,1,2)和<别名>都缺省不写时,默认为当前工作区。 3(表尾测试函数 格式:EOF([(工作区号)[(别名>]) 功能:测试指定或当前工作区中记录指针是否超过了最后一个逻辑记录,即是否指向表的末尾,若是,函数值为(T(,否则为(F(。自变量含义同BOF函数,缺省时默认为当前工作区。 4(记录号测试函数 格式:REcNO([<工作区号>}(别名>]) 功能:返回指定或当前工作区中当前记录的记录号,函数值为数值型。省略参数时,默认为当前工作区。如果记录指针在最后一个记录之后,即EOF()为(T(,RECNO()返回比记录总数大l的值。如果记录指针在第一个记录之前或者无记录,即BOF()为(T(,REcONO()返回1。 5(记录个数测试函数 格式:RECCOUNT([(工作区号|别名>]) 功能:返回当前或指定表中记录的个数。如果在指定的工作区中没有表被打开,则函数值为O。如果省略参数,则默认为当前工作区。RECCOUNT()返回的值不受SET r)EI。ETED和SET FIITER的影响,总是返回包括加有删除标记在内的全部记录数。 6(查找是否成功测试函数 格式:FOUND([<工作区号『别名>]) 功能:在当前或指定表中,检测是否找到所需的数据。如果省略参数,则默认为当前工作区。数据搜索由FIND、SEEK、LOCATE或CONTINUE命令实现。如果这些命令搜索到所需的数据记录,函数值为(T(,否则函数值为(F(。如果指定的工作区中没有表被打开,则FOUND()返回(F(。如果用非搜索命令如GO移动记录指针,则函数值为(F [Page] 7(文件是否存在测试函数 格式:FILE((文件名>) 功能:检测指定的文件是否存在。如果文件存在,则函数值为(T,否则函数值为(F文件名必须是全称,包括盘符、路径和扩展名,且(文件名)是字符型表达式。 8(判断值介于两个值之间的函数 格式:BETwEEN(<被测试表达式>,<下限表达式),(上限表达式)) 功能:判断表达式的值是否介于相同数据类型的两个表达式值之间。BETwEEN()首先计算表达式的值。如果一个字符、数值、日期、表达式的值介于两个相同类型表达式的值之间,即被测表达式的值大于或等于下限表达式的值,小于或者等于上限表达式的值,BETW:EEN()将返回(T(值,否则返回(F 举例: gz一375 7 BETWEEN(gz,260,650) 输出为(T 9(条件函数IIF 格式:IIF((逻辑型表达式),(表达式1),(表达式2>) 功能:若逻辑型表达式的值为(T(,函数值为(表达式1>的值,否则为<表达式2>的值。 举例: xb=\"女\" ?IIF(xB=[男],l,IIF(Xb一[女],2,3)) 输出为2。
本文档为【VF中控制EXCEL的常用操作】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601191
暂无简介~
格式:doc
大小:225KB
软件:Word
页数:0
分类:其他高等教育
上传时间:2017-09-18
浏览量:54