版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《计算机编程学习》解除Win2000、WindowsXP的管理共享在Win2000、WindowsXP中有C$、D$、AdminS-类的管理共享,要想解除这类共享只须在注册表里改改就可以了!在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\paramelers里新建DWORD名称为AutoShareServer,值为0(零)。用VB程序控制电脑说英语现在,应用Microsoft提供的一套文字朗读引擎(Text-To-SpeechEngine,简称TTS),可以在程序中编写代码来使安装了声卡的电脑流畅的朗读英文。如果安装了“金山词霸2000”,那么Windows文件夹下会有一个Speech文件夹,里面的文件vtxlauto。tlb文件就包含了有关的类型库和函数,我们完全可以在我们的程序中调用它们,使电脑开口说话。TTS包含在“金山词霸2000”的安装盘上,文件名为mstls。exe和spchapioexe。要在VB程序中调用TTS,必须首先引用vtxtautOotlb文件中的"VbiceTexll。OTypeLibrary”类型库,然后参考以下代码,电脑就可以说话了:OptionExplicitPrivatcSubForm_Load()CalIVTxtAutOoVTxtAutOoRegister(Space(1),Space(1))VTxtAutOoVTxtAutOoSpeed=17(T设置语速(170为正常语速,值越小语速越慢)DimstrTxtstrTxt="Iloveyouvcrymuch。Doyoulovemc?"OnErrorGoToErrorHandierCalIVTxtAuto0VTxtAulOoSpeak(strTxt,vtxtsp_VERYHIGH+vtxtst_READING)MsgBox'OK!••EndErrorHandler:,错误处理语句EndEndSub至于语速、频率等的控制,大家可以在“对象浏览器”里参看相关的控制属性。怎样判断、防止程序重复执行?PrivateSubForm_load()'判断程序是否已经运行IfApp<>PrcvInstanceThenMsgBox"本程序已经运行!",vblnformationOrvbOKOnly,"提示信息"UnloadMeExilSubEndlf*以下是主要程序' EndSub附:另一个例子:OptionExplicitPublicSubCheckExist(fmAsForm)'防止程序重复执行DimtitleAsStringlfAppoPrcvInstanceThcntitle=AppotitleCallMsgBox("这程序已执行",vbCritical)App。如此才不会Avtivate到自己fm。Caption=""AppActivatetitle,activate先前就已运行的程序End'结束EndIfEndSubPrivateSubForm_Load()CallCheckExist(Me)EndSub用VB实现超级链接功能用VB实现超级链接功能A:声明ShellExecute函数;在form上建立labeKline控件各一个(myHltp、Linel)»再仿照以下代码,即可打开浏览器登录http://why1000000at®网站。PrivateDeclarcFunctionShellExecutcLib"shell32。dH"Alias"ShellExecuteAN(ByValhwndAsLong,ByVallpOperalionAsString,ByVailpFileAsString,ByVallpParamelersAsString,ByVallpDirectoryAsSlring,ByValnShowCmdAsLong)AsLongPrivateSubmyHttp_MouseDown(ButtonAsIntcger»ShiftAsIntcger,XAsSingle,YAsSingle)Line1。Visible=FalseEndSubPrivateSubmyHttp_MouseMove(ButtonAsInteger»ShiftAslnteger,XAsSingle»YAsSingle)Line1oVisible=TrueEndSubPrivateSubForm_MouseMove(IndexAslnteger,ButtonAsInteger.ShiftAsInleger.XAsSingle,YAsSingle)LineUVisible=FalseEndSubPrivateSubmyHttp_Click()DimHttpJumpDimMyUrlAsStringMyUrl="http://why1000000"HttpJump=ShclIExecute(0&,vbNuIlString,MyUrl,vbNullSlring,vbNuIlString»vbNormalFocus)EndSubAPI全功略API全功略(API编程的详细介绍)什么是API首先,有必要向大家讲一讲,什么是API。所谓API本来是为C和C++程序员写的。API说来说去,就是一种函数,他们包含在一个附加名为DLL的动态连接库文件中。用标准的定义来讲,API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言编制出的运行在Windows95和WindowsNT操作系统上的应用程序。可以说,如果你曾经学过VC,那么API对你来说不是什么问题。但是如果你没有学过VC,或者你时Windows95的结构体系不熟悉,那么可以说,学习API将是一件很辛苦的事情。如果你打开WINDOWS的SYSTEM文件夹,你可以发现其中有很多附加名为DLL的文件。一个DLL中包含的API函数并不只是一个,数十个,甚至是数百个。我们能都掌握它嘛?回答是否定的:不可能掌握。但实际上,我们真的没必要都掌握,只要重点掌握Windos系统本身自带的API函数就可以了。但,在其中还应当抛开掉同VB本身自有的函数重复的函数。如,VB的etAttr命令可以获得文件属性,SetAttr可以设置文件属性。对API来讲也有对应的函数GetFileAttributes和SetFileAttributes,性能都差不多。如此地一算,剩下来的也就5、600个。是的,也不少。但,我可以敢跟你说,只要你熟悉地掌握100个,那么你的编程水平比现在高出至少要两倍。尽管人们说VB和WINDOWS具有密切的关系,但我认为,API更接近WINDOWS。如果你学会了API,首要的收获便是对WINDOWS体系结构的认识。这个收获是来自不易的。如果你不依靠API会怎么样?我可以跟你说,绝大多是高级编程书本(当然这不是书的名程叫高级而高级的,而是在一开始的《本书内容》中指明《本书的阅读对象是具有一定VB基础的读者》的那些书),首先提的问题•般大都是从API开始。因此可以说,你不学API,你大概将停留在初级水平,无法往上攀登。唯一的途径也许就是向别人求救:我快死了,快来救救我呀,这个怎么办,那个怎么办?烦不烦呢?当然,现在网上好人太多(包括我在内,嘻嘻),但,你应当明白,通过此途径,你的手中出不了好的作品。这是因为缺乏这些知识你的脑子里根本行不成一种总体的设计构思。API文本游览器[返回]很多API函数都是很长很长的.想看什么样子吗?如下就是作为例子的APIDdeClientTransaction函数:DeclareFunctionDdeClientTransactionLib"user32"(pDataAsByte,ByValcbDataAsLong,ByValhConvAsLong,ByValhszItemAsLong,ByValwFmtAsLong,ByVaiwiypeAsLong.ByValdwTimeoutAsLong.pdwResultAsLong)AsLong哇!这么长?如果你从来没有接触过API,我想你肯定被吓住了。你也许考虑,该不该继续学下去.不过不要担心,幸运的是Microsoft的设计家们为我们提供了有用的工具,这便是API文本查看器。通过API文本查看器,我们可以方便地查找程序所需要的函数声明、结构类型和常数,然后将它复制到剪贴板,最后再粘贴到VB程序的代码段中。在大多数情况下,只要我们确定了程序所需要的函数、结构和常数这三个方面后,就可以通过对API文本游览器的以上操作将他们加入到程序段中,从而程序中可以使用这些函数了.这些是学习API最基本的常识问题,它远远占不到API的庞大的体系内容。今后我们把精力浪费(这绝不是浪费)在哪里呢?那就是:什么时候使用什么函数,什么时候使用什么结构类型,什么时候使用什么常数•API函数声明[返回]让我们回想一下。在VB中,如何声明函数呢?我想,如果你正在看此文,那么你绝对能够回答得出这个问题。以下便是你应该很熟悉的函数声明:FunctionSetFocus(ByValhwndAsLong)AsLong即,这行代码定义了名为SetFocus的函数,此函数具有一个Long型数据类型的参数,并按值传递(ByVai),函数执行后将返回一个Long型数据。API函数的声明也很类似,如,API中的SetFocus函数是这样写的:DeclareFimclionSelFocusLib”user32"Alias"SelFociis"(ByValhwndAsLong)AsLong有点复杂了一些。是的,是复杂了点。但我可以告诉你,除了这些多出来的部分,其他部分还是和你以前学到的东西是一样的。函数在程序中的调用也是一样。如:DimdlAsLongdl&=SetFoucs(Form1oHwnd)但,一点是清楚的。它不象你自己写的程序那样能够看到里面的运行机理,也不像VB自带的函数那样,能够从VB的联机帮助中查到其用法。唯一的方法就是去学、查VB以外的资料。Declare语句用于在模块级别中声明对动态链接库(DLL)中外部过程的引用。对此,你只要记住任何API函数声明都必须写这个语句就可以了。lib指明包含所声明过程或函数的动态链接库或代码资源。也就是说,它说明的是,函数或过程从何而来的问题。如在上例中,SetFocusLib”user32”说明函数SetFocus来自user32。dll文件。主要的dll动态连接库文件有:user32。dllWindows管理。生成和管理应用程序的用户接口。GDI32odll图形设备接口。产生Windows设备的图形输出Kernel32odll系统服务。访问操作系统的计算机资源。注意,当DLL文件不在Windows或System文件夹中的时候,必须在函数中说明其出处(路径如,SetFocusLibMc:\Mydll\user32”函数声明中的Alias是可选的。表示将被调用的过程在动态链接库(DLL)中还有另外的名称(别名)。如,AIias"SetFocus,',说明SetFocus函数在User32。dll中的另外一个名称是,SetFocuso怎么两个名都一样呢?当然,也可以是不同的。在很多情况下,Alias说明的函数名,即别名最后一个字符经常是字符A»如SetWindowsText函数的另一个名称是SetWindowsTextA,表示为AliasHSetWindowsTextAMo这个A只不过是设计家们的习惯的命名约定,表示函数属于ANSI版本。那么,别名究竟有什么用途呢?从理论上讲,别名提供了用另一个名子调用API的函数方法。如果你指明了别名,那么尽管我们按Declare语句后面的函数来调用该函数,但在函数的实际调用上是以别名作为首要选择的。如,以下两个函数(Function,ABCD)声明都是有效的,他们调用的是同一个SetFocus函数:DeclareFunctionSetFocusLibMuser32,n,SetFocusu ( ByValhwndAsLong )AsLongDecIareABCDSetFocusLib',user32,,Alias,,SetFocusH(ByValhwndAsLong)AsLong需要注意的是,选用Alias的时候,应注意别名的大小写;如果不选用Alias时的时候,函数名必须注意大小写,而且不能改动。当然,在很多情况下,由于函数声明是直接从API文本游览器中拷贝过来的,所以这种错误的发生机会是很少的,但您有必要知道这一点。最后提醒你一句,API声明(包括结构、常数)必须放在窗体或模块的”通用(GeneralDeclarations)数据类型与“类型安全”[返回]API函数中使用的数据类型基本上和VB中的一样。但作为WIN32的API函数中,不存在Integer数据类型。另外一点是在API函数中看不到Boolean数据类型。Variant数据类型在API函数中是以Any的形式出现,如DataAsAny。尽管其含义是允许任意参数类型作为一个该API函数的参数传递,但这样做存在一定的缺点。其原因是,这将会使得对目标参数的所有类型检查都会被关闭。这自然会给各种类型的参数调用带来了产生错误的机会.为了强制执行严格的类型检查,并避免上面提到的问题,一个办法是在函数里使用上面提到到Alias技术。如对API函数GetDIBits可进行另夕I—种声明方法。如下:GctDIBits函数的原型:PublicDeclareFunctionGetDIBitsLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,IpBitsAsAny,IpBIAsBITMAPINFO,ByValwUsageAsLong)AsLongGetDIBits函数的改型:PublicDeclareFunctionGetDIBitsLongLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong> IpBitsAsLong>IpBIAsBITMAPINFO,ByValwUsageAsLong)AsLong通过本课程前面所学到的知识,我们已经可以得知原型GetDIBits函数也好,改型GetDIBitsLong函数也好,实际将调用的都是Alias所指定的GetDIBits原函数。但你应当看到,两者的区别在于,我们在改型的函数中强制指定IpBits参数为Long形。这样就会使得函数调用中发生的错误机率减少到了最小。这种方法叫做“安全类型”声明。API函数中经常看到的数据类型有:Long,String,Byte,Any。…(也就这些吧。)常数[返回]对于API常数来讲,没有什么太特别的学问。请看VB中的以下代码:Msg=MsgBox("您好”,vbOKCancel)我们知道,vbOKCancel这个常数的值等于1。时上面的代码我们完全可以这样写,而不会影响代码的功能:Msg=MsgBox("您好",1)但你大概不太愿意选择后一种,因为这会使得看懂代码费劲起来。这种方法也被API采取了。只是API常数必须在事情之前做好初始化声明VB本身是看不懂的。其内容仍然来自与API文本游览器。具体形式如下等等:PublicConstABM_ACTIVATE=&H6PublicConstRIGHT_CTRL_PRESSED=&H4PublicConstRPC_E_SERVER_DIED=&H80010007PrivateConstRPC_S_CALL_FAILED_DNE=1727&在常数的初始化中,有些程序使用Global,如GlobalConsiABM_ACTIVATE=&H6,但我认为Public完全可以代替它。过去我也用过Global,但现在不大用了■一会儿用这个,一会儿用那个,各程序之间不能保持一致性了,起码看起来别扭。结构]返回]结构是C和C++语言中的说法.在VB中•般称为自定义数据类型。想必很多朋友都已经认识它。在API领域里,我更喜欢把它叫做结构,因为API各种结构类型根本不是我定义(自定义)的。在VB中,API结构同样由TYPE。。。。。。。ENDTYPE语句来定义。如,在API中,点(Point)结构的定义方法如下:PublicTypcPOINTAPIXAsLong,点在X坐标(横坐标)上的坐标值YAsLong,点在Y坐标(纵坐标)上的坐标值EndType又如,API中矩形(Rect)结构的定义如下:PublicTypeRECTLeftAsLong'矩形左上角的X坐标TopAsLong,矩形左上角的Y坐标RightAsLong'矩形右下角的X坐标BottomAsLong'矩形右下角的Y坐标EndType这些内容同样可以从API文本游览器中拷贝过来。这些结构中的变量名可随意改动,而不会影响结构本身。也就是说,这些成员变量都是虚拟的。如,POINTAPI结构可改为如下:PublicTypePOINTAPIMyXAsLong'点在X坐标(横坐标)上的坐标值MyYAsLong,点在Y坐标(纵坐标)上的坐标值EndType不过,一般来讲,是没有这种必要的.结构本身是一种数据类型,因此,使用时必须声明具体变量为该结构型,才能在程序中真正使用到该结构。结构的声明方法和其他数据的声明方法一样,如,以下语句把变MyPoint声明为POINTAPI结构类型:MyPointAsPOINTAPI引用结构中的成员变量也十分简单,在结构名后面加上一个然后紧接着写要引用的成员变量即可。这很象VB中的引用一个对象的某个属性。如,假如我们把上面已经声明的MyPoint结构中的X变量的值赋给变量Temp&则代码如下:Temp&=MyPoint。X但,特别注意的是,你千万不要认为上例中的MyPoint是一个值。它不是值,而是地址(指针).值和地址是完全不同的概念。结构要求按引用传递给WINDOWS函数,即所有API函数中,结构都是按ByRef传递的(在Declare语句中ByRef是默认型)。对于结构的传递,你不要试图采用ByVai,你将一无所获。由于结构名实际上就是指向这个结构的指针(这个结构的首地址),所以,你也就传送特定的结构名就可以了(参见小结,我用红色字体来突出了这种传递方式)。由于结构传送的是指针,所以函数将直接对结构进行读写操作。这种特性很适合于把函数执行的结果装载在结构之中。小结[返回]以下的程序是为了总结本课中学到的内容而给出的。启动VB,新建一个项目,添加一个命令按钮,并把下面的代码拷贝到代码段中,运行它。PrivatcDeclareFunctionGetCursorPosLib"uscr32"(IpPointAsPOINTAPI)AsLongPrivateTypcPOINTAPI'定义点(Point)结构XAsLong,点在X坐标(横坐标)上的坐标值YAsLong,点在Y坐标(纵坐标)上的坐标值EndTypcSubPrintCursorPos()DimdlASLongDimMyPointAsPOINTAPIdl&=GetCursorPos(MyPoint)调用函数,获取屏幕鼠标坐标Debug.Print"X="&Str(MyPoint0X)&"and"*"Y="&Str(MyPoint.Y)EndSubPrivateSubCommand1_Click()PrintCursorPosEndSub输出结果为(每次运行都可能得到不同的结果,这得由函数调用时鼠标指针在屏幕中所处的位置而决定):X=240andY=151程序中,GetCursorPos函数用来获取鼠标指针在屏幕上的位置。以上例子中,你可以发现,以参数传递的MyPpint结构的内容在函数调用后发生了实质性变化。这是由于结构是按ByRcf传递的原因。一些API函数集[返回]WindowsAPIIo控件与消息函数AdjustWindowRect给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小AnyPopup判断屏幕上是否存在任何弹出式窗口ArrangelconicWindows排列一个父窗口的最小化子窗口AttachThrcadlnput连接线程输入函数BeginDcferWindowPos启动构建一系列新窗口位置的过程BringWindowToTop将指定的窗口带至窗口列表顶部CascadeWindows以层叠方式排列窗口ChildWindowFromPoint返I可父窗口中包含了指定点的第一个子窗口的句柄ClientToScreen判断窗口内以客户区坐标表示的•个点的屏幕坐标CloseWindow最小化指定的窗口CopyRect矩形内容复制DeferWindowPos该函数为特定的窗口指定一个新窗口位置DestroyWindow清除指定的窗口以及它的所有子窗口DrawAnimatedRects描绘系列动态矩形EnableWindow指定的窗口里允许或禁止所有鼠标及键盘输入EndDeferWindowPos同时更新DeferWindowPos调用时指定的所有窗口的位置及状态EnumChildWindows为指定的父窗口枚举子窗口EnumThreadWindows枚举与指定任务相关的窗口EnumWindows枚举窗口列表中的所有父窗口EqualRect判断两个矩形结构是否相同FindWindow寻找窗口列表中第一个符合指定条件的顶级窗口FindWindowEx在窗口列表中寻找与指定条件相符的第一个子窗口FlashWindow闪烁显示指定窗口GelAcliveWindow获得活动窗口的句柄GelCapture获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)GetClassInfo取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息GetClassLong取得窗口类的一个Long变量条目GetClassName为指定的窗口取得类名GetClassWord为窗口类取得一个整数变量GetClicntRect返回指定窗口客户区矩形的大小GctDesktopWindow获得代表整个屏幕的一个窗口(桌面窗口)句柄GelFocus获得拥有输入焦点的窗口的句柄GetForegroimdWindow获得前台窗口的句柄GetLastActivcPopup获得在•个给定父窗口中最近激活过的弹出式窗口的句柄GetLastError针对之前调用的api函数,用这个函数取得扩展错误信息GelParent判断指定窗口的父窗口GelTopWindow搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄GetUpdateRect获得一个矩形,它描叙了指定窗口中需要更新的那一部分GetWindow获得一个窗口的句柄,该窗口与某源窗口有特定的关系GetWindowContextHelpId取得与窗口关联在一起的帮助场景IDGetWindowLong从指定窗口的结构中取得信息GelWindowPlacemenl获得指定窗口的状态及位置信息GetWindowRect获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内GetWindowText取得一个窗体的标题(caption)文字,或者一个控件的内容GetWindowTextLength调杳窗口标题文字或控件内容的长短GetWindowWord获得指定窗口结构的信息InflateRect增大或减小一个矩形的大小IntersectRect这个函数在IpDestRect里载入一个矩形,它是IpSrc1Reel与lpSrc2Rect两个矩形的交集InvalidateRect屏蔽一个窗口客户区的全部或部分区域IsChild判断一个窗口是否为另一窗口的子或隶属窗口Islconic判断窗口是否已最小化IsRectEmpty判断一个矩形是否为空IsWindow判断一个窗口句柄是否有效IsWindowEnabled判断窗口是否处于活动状态IsWindowUnicodc判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字IsWindowVisible判断窗口是否可见IsZoomed判断窗口是否最大化LockWindowUpdate锁定指定窗口,禁止它更新MapWindowPoints将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统MoveWindow改变指定窗口的位置和大小OffsetRecl通过应用一个指定的偏移,从而让矩形移动起来Openicon恢复一个最小化的程序,并将其激活PtlnRect判断指定的点是否位于矩形内部RcdrawWindow重画全部或部分窗口ReleaseCapture为当前的应用程序释放鼠标捕获ScreenToClient判断屏幕上一个指定点的客户区坐标ScrollWindow滚动窗口客户区的全部或一部分ScrollWindowEx根据附加的选项,滚动窗口客户区的全部或部分SetAcliveWindow激活指定的窗口SetCapture将鼠标捕获设置到指定的窗口SetClassLong为窗口类设置一个Long变量条目SctClassWord为窗口类设置一个条目SetFocusAPI将输入焦点设到指定的窗口。如有必要,会激活窗口SetForegroundWindow将窗口设为系统的前台窗口SetParent指定一个窗口的新父SetRect设置指定矩形的内容SctRectEmpty将矩形设为一个空矩形SetWindowContextHclpId为指定的窗口设置帮助场景(上下文)IDSetWindowLong在窗口结构中为指定的窗口设置信息SetWindowPlacement设置窗口状态和位置信息SctWindowPos为窗口指定一个新位置和状态SetWindowText设置窗口的标题文字或控件的内容SetWindowWord在窗口结构中为指定的窗口设置信息ShowOwnedPopups显示或隐藏由指定窗口所有的全部弹出式窗口ShowWindow控制窗口的可见性ShowWindowAsyncShowWindow相似SubtractRcct装载矩形IprcDst,它是在矩形IprcSrcl中减去lprcSrc2得到的结果TileWindows以平铺顺序排列窗口UnionRect装载一个IpDestRect目标矩形,它是IpSrclRecl和lpSrc2Rcct联合起来的结果UpdatcWindow强制立即更新窗口ValidateRcct校验窗口的全部或部分客户区WindowFromPoint返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口2o硬件与系统函数ActivateKeyboardLayout激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义Beep用于生成简单的声音CharToOem将一个字串从ANSI字符集转换到OEM字符集ClipCursor将指针限制到指定区域ConvertDefaultLocale将一个特殊的地方标识符转换成真实的地方IDCreateCaret根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符DestroyCaret清除(破坏)一个插入符EnumCalendarlnfo枚举在指定“地方”环境中可用的日历信息EnumDaleFormats列举指定的“当地”设置中可用的长、短日期格式EnumSystemCodePages枚举系统中已安装或支持的代码页EnumSystemLocales枚举系统已经安装或提供支持的“地方”设置EnumTimeFormats枚举一个指定的地方适用的时间格式ExitWindowsEx退出windows»并用特定的选项重新启动ExpandEnvironmenlStrings扩充环境字串FreeEnvironmentStrings翻译指定的环境字串块GetACP判断R前正在生效的ANSI代码页GetAsyncKeyState判断函数调用时指定虚拟键的状态GetCaretBlinkTime判断插入符光标的闪烁频率GetCaretPos判断插入符的当前位置GetClipCursor取得一个矩形,用于描述目前为鼠标指针规定的剪切区域GetCommandLine获得指向当前命令行缓冲区的一个指针GetComputerName取得这台计算机的名称GetCPInf。取得与指定代码页有关的信息GetCurrencyFormat针对指定的“地方”设置,根据货币格式格式化一个数字GetCursor获取目前选择的鼠标指针的句柄GetCursorPos获取鼠标指针的当前位置GetDateFormat针对指定的"当地”格式,对一个系统日期进行格式化GetDoubleClickTime判断连续两次鼠标单击之间会被处理成双击事件的间隔时间GetEnvironmentStrings为包含了当前环境字串设置的一个内存块分配和返回一个句柄GctEnvironmentVariablc取得•个环境变量的值GctlnputStatc判断是否存在任何待决(等待处理)的鼠标或键盘事件GetKBCodePage由GetOEMCP取代,两者功能完全相同GetKeyboardLayout取得一个句柄,描述指定应用程序的键盘布局GetKcyboardLayoutList获得系统适用的所有键盘布局的•个列表GctKeyboardLayoutNamc取得当前活动键盘布局的名称GetKeyboardState取得键盘上每个虚拟键当前的状态GetKeyboardType了解与正在使用的键盘有关的信息GetKcyNamcText在给出扫描码的前提下,判断键名GetKeyState针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态GetLastError针对之前调用的api函数,用这个函数取得扩展错误信息GetLocalelnfo取得与指定“地方”有关的信息GetLocalTime取得本地日期和时间GetNumbcrFormat针对指定的"地方”,按特定的格式格式化•个数字GetOEMCP判断在OEM和ANSI字符集间转换的windows代码页GetQueueStatus判断应用程序消息队列中待决(等待处理)的消息类型GetSysColor判断指定windows显示对象的颜色GetSystemDcfaultLangID取得系统的默认语言IDGetSystemDefaultLCID取得当前的默认系统“地方”GetSystemlnfo取得与底层硬件平台有关的信息GetSystemMetrics返回与windows环境有关的信息GetSystemPowerStatus获得与当前系统电源状态有关的信息GetSystemTimc取得当前系统时间,这个时间采用的是“协同世界时间”(即UTC,也叫做GMT)格式GetSystemTimeAdjustment使内部系统时钟与一个外部的时钟信号源同步GetThreadLocale取得当前线程的地方IDGetTickCount用于获取自windows启动以来经历的时间长度(毫秒)GetTimeFormat针对当前指定的“地方”,按特定的格式格式化一个系统时间GetTimeZonelnformation取得与系统时区设置有关的信息GetUserDefaultLangID为当前用户取得默认语言IDGetUserDefaultLCID取得当前用户的默认“地方”设置GetUserName取得当前用户的名字GetVersion判断当前运行的Windows和DOS版本GetVersionEx取得与平台和操作系统有关的版本信息HideCaret在指定的窗口隐藏插入符(光标)IsValidCodePage判断一个代码页是否有效IsValidLocale判断地方标识符是否有效keybd_event这个函数模拟/键盘行动LoadKeyboardLayout载入一个键盘布局MapVirtualKey根据指定的映射类型,执行不同的扫描码和字符转换MapVirtualKeyEx根据指定的映射类型,执行不同的扫描码和字符转换MessageBeep播放一个系统声音。系统声音的分配方案是在控制面板里决定的mouse_event模拟一次鼠标事件OemKeyScan判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态OemToChar将OEM字符集的一个字串转换到ANSI字符集SetCaretBlinkTime指定插入符(光标)的闪烁频率SetCaretPos指定插入符的位置SetComputerName设置新的计算机名SetCursor将指定的鼠标指针设为当前指针SetCursorPos设置指针的位置SetDoubleClickTime设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间SetEnvironmentVariablc将一个环境变量设为指定的值SetKcyboardState设置每个虚拟键当前在键盘上的状态SeiLocalelnfo改变用户“地方”设置信息SetLocalTime设置当前地方时间SetSysColors设置指定窗口显示对象的颜色SetSystemCursor改变任何一个标准系统指针SetSystemTimc设置当前系统时间SetSystemTimeAdjustmcnt定时添加•个校准值使内部系统时钟与一个外部的时钟信号源同步SetThreadLocale为当前线程设置地方SetTimeZoneInformation设置系统时区信息ShowCaret在指定的窗口里显示插入符(光标)ShowCursor控制鼠标指针的可视性SwapMouseButton决定是否互换鼠标左右键的功能SystemParamctersInfo获取和设置数量众多的windows系统参数SystemTimcToTzSpecificLocaiTime将系统时间转换成地方时间ToAscii根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符ToUnicode根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符UnloadKeyboardLayout卸载指定的键盘布局VkKeyScan针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态完3o菜单函数AppendMenu在指定的菜单里添加一个菜单项CheckMenuhem复选或撤消复选指定的菜单条目CheckMcnuRadioItcm指定一个菜单条目被复选成“单选”项目CreatcMcnu创建新菜单CreatcPopupMcnu创建一个空的弹出式菜单DeleteMenu删除指定的菜单条目DestroyMenu删除指定的菜单DrawMenuBar为指定的窗口重画菜单EnablcMenuItcm允许或禁止指定的菜单条目GctMenu取得窗口中一个菜单的句柄GetMenuCheckMarkDimensions返回一个菜单复选符的大小GetMenuContextHelpld取得一个菜单的帮助场景IDGetMenuDefaullItem判断菜单中的哪个条目是默认条目GctMcnuItemCount返回菜单中条目(菜单项)的数量GetMenuItcmID返I可位于菜单中指定位置处的条目的菜单IDGeiMenuhemlnfo取得(接收)与一个菜单条目有关的特定信息GetMenuItemRect在一个矩形中装载指定菜单条目的屏幕坐标信息GctMcnuState取得与指定菜单条目状态有关的信息GctMcnuString取得指定菜单条目的字串GetSubMenu取得一个弹出式菜单的句柄,它位于菜单中指定的位置GetSystemMenu取得指定窗口的系统菜单的句柄HiliteMenuItem控制顶级菜单条目的加亮显示状态InsertMcnu在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动InscrtMcnuItem插入一个新菜单条目IsMenu判断指定的句柄是否为一个菜单的句柄LoadMenu从指定的模块或应用程序实例中载入一个菜单LoadMcnuIndirect载入一个菜单MenuItcmFromPoint判断哪个菜单条目包含了屏幕上一个指定的点ModifyMenu改变菜单条目RemoveMenu删除指定的菜单条目SetMenu设置窗口菜单SetMenuConlextHelpld设置一个菜单的帮助场景IDSelMenuDefaulUlem将一个菜单条口设为默认条口SelMenuIlemBitmaps设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(J)SetMenuItemlnfo为一个菜单条目设置指定的信息TrackPopupMenu在屏幕的任意地方显示一个弹出式菜单TrackPopupMcnuEx与TrackPopupMenu相似,只是它提供了额外的功能完以下是几个关于菜单函数的类型定义MENUITEMINFO这个结构包含了菜单条目的信息TPMPARAMS这个结构用于TrackPopupMenuEx函数以支持额外的功能4o绘图函数AbortPath抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作AngleArc用一个连接弧画•条线Arc画•个圆弧BeginPath启动一个路径分支CancclDC取消另一个线程里的长时间绘图操作Chord画一个弦CloseEnhMetaFile关闭指定的增强型图元文件设备场景,并将新建的图元文件返|可一个句柄CloseFigure描绘到一个路径时,关闭当前打开的图形CloseMetaFile关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄CopyEnhMetaFile制作指定增强型图元文件的一个副本(拷贝)CopyMelaFile制作指定(标准)图元文件的一个副本CreateBrushlndirect在一个LOGBRUSH数据结构的基础上创建一个刷子CreateDIBPattcrnBrush用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)CreateEnhMetaFile创建一个增强型的图元文件设备场景CreateHatchBrush创建带有阴影图案的一个刷子CrcatcMetaFile创建一个图元文件设备场景CreatePatternBrush用指定了刷子图案的•幅位图创建一个刷子CreatePen用指定的样式、宽度和颜色创建一个画笔CreatePenlndirect根据指定的LOGPEN结构创建一个画笔CreateSolidBrush用纯色创建•个刷子DclcteEnhMctaFile删除指定的增强型图元文件DelcteMctaFile删除指定的图元文件DeleteObject删除GDI对象,对象使用的所有系统资源都会被释放DrawEdge用指定的样式描绘一个矩形的边框DrawEscape换码(Escape)函数将数据直接发至显示设备驱动程序DrawFocusRect画一个焦点矩形DrawFrameControl描绘一个标准控件DrawState为一幅图象或绘图操作应用各式各样的效果Ellipse描绘•个椭圆,由指定的矩形围绕EndPath停止定义一个路径EnumEnhMctaFile针对一个增强型图元文件,列举其中单独的图元文件记录EnumMetaFile为一个标准的windows图元文件枚举单独的图元文件记录EnumObjects枚举可随同指定设备场景使用的画笔和刷子ExtCrcatePen创建一个扩展画笔(装饰或几何)ExtHoodFill在指定的设备场景里,用当前选择的刷子填充一个区域FillPath关闭路径中任何打开的图形,并用当前刷子填充FillRcct用指定的刷子填充一个矩形FlattcnPath将一个路径中的所有曲线都转换成线段FloodFill用当前选定的刷子在指定的设备场景中填充一个区域FrameRect用指定的刷子围绕一个矩形画一个边框GdiCommcnt为指定的增强型图元文件设备场景添加一条注释信息GdiFlush执行任何未决的绘图操作GdiGelBatchLimit判断有多少个GDI绘图命令位于队列中GdiSctBatchLimit指定有多少个GDI绘图命令能够进入队列GetArcDirection画圆弧的时候,判断当前采用的绘图方向GctBkColor取得指定设备场景当前的背景颜色GetBkMode针对指定的设备场景,取得当前的背景填充模式GetBnishOrgEx判断指定设备场景中当前选定刷子起点GetCurrcntObjcct获得指定类型的当前选定对象GetCurrentPositionEx在指定的设备场景中取得当前的画笔位置GelEnhMetaFile取得磁盘文件中包含的一个增强型图元文件的图元文件句柄GctEnhMctaFilcBits将指定的增强型图元文件复制到一个内存缓冲区里GctEnhMetaFilcDescription返回对一个增强型图元文件的说明GetEnhMetaFileHcadcr取得增强型图元文件的图元文件头GetEnhMelaFilePaletteEntries取得增强型图元文件的全部或部分调色板GetMetaFile取得包含在一个磁盘文件中的图元文件的图元文件句柄GctMetaFilcBitsEx将指定的图元文件复制到一个内存缓冲区GelMilerLimit取得设备场景的斜率限制(Miter)设置GelNeareslColor根据设备的显示能力,取得与指定颜色最接近的•种纯色GetObjectAPI取得对指定对象进行说明的一个结构GetObjectType判断由指定句柄引用的GDI对象的类型GetPath取得对当前路径进行定义的一系列数据GetPixel在指定的设备场景中取得一个像素的RGB值GctPolyFillMode针对指定的设备场景,获得多边形填充模式GetROP2针对指定的设备场景,取得当前的绘图模式GetStockObject取得一个固有对象(Stock)GetSysColorBrush为任何一种标准系统颜色取得一个刷子GetWinMetaFileBits通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件InvcrtRect通过反转每个像素的值,从而反转•个设备场景中指定的矩形LineDDA枚举指定线段中的所有点LineTo用当前画笔画一条线,从当前位置连到一个指定的点批处理文件的意义(转)后缀是bat的文件就是批处理文件,是一种文本文件。简单的说,它的作用就是自动的连续执行多条命令,批处理文件的内容就是一条一条的命令。那它有什么用呢?比如,在启动wps软件时,每次都必须执行C:\>cdwpsC:\WPS>spdosC:\WPS>pyC:\WPS>wbxC:\WPS>wps如果每次用WPS之前都这样执行一次,您是不是觉得很麻烦呢?如果有一个方法,只需编写一个批处理文件,就会自动执行刚才的所有命令,您想不想学呢?当您看完此节,自己编写的第一个批处理文件顺利执行时,您一定会大吃一惊的。此外电脑每次启动时都会寻找autoexec.bat这条批处理文件,从而可执行一些每次开机都要执行的命令,如设置路径palh、加载鼠标驱动mouse、磁盘加速smartdrv等,可以使您的电脑真正自动化。使用批处理文件 常用命令echo、@、call、pause、rem是批处理文件最常用的几个命令,我们就从他们开始学起。echo表示显示此命令后的字符echooff表示在此语句后所有运行的命令都不显示命令行本身@与echooff相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。call调用另一条批处理文件(如果直接调用别的批处理文件,执行完那条文件后将无法执行当前文件后续命令)pause运行此句会暂停,显示Pressanykeytocontinue...等待用户按任意键后继续rem表示此命令后的字符为解释行,不执行,只是给自己今后查找用的例:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入a.lxt中,启动UCDOS,进入WPS等功能。批处理文件的内容为:文件表示:echooff不显示命令行dirc:\*.*>a.txt将c盘文件列表写入a.txtcallc:\ucdos\ucdos.bat调用uedosecho你好显示“你好”pause暂停,等待按键继续rem使用wps注释将使用wpscduedos进入uedos目录wps使用wps批处理文件中还可以像C语言一样使用参数,这只需用到一个参数表示符%。%表示参数,参数是指在运行批处理文件时在文件名后加的字符串。变量可以从%0到%9,%。表示文件名本身,字符串用%1到%9顺序表示。例如,C:根目录下一批处理文件名为f.bat,内容为format%1则实际执行的是fonnat又如C:根目录下-一批处理文件的名为t.bat,内容为type%1type%2那么运行C:\>ta.txtb.txt将顺序地显示a.txt和b.txt文件的内容使用批处理文件——特殊命令ifgotochoicefor是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。if表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:1、1「参数”=悖符串"待执行的命令参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)如if formata:2、ifexist文件名 待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句■如ifexistconfig.syseditconfig.sys3,iferrorlevel数字 待执行的命令如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句.如iferrorlevel2gotox2DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码goto批处理文件运行到这里将跳到goto所指定的标号处,•般与if配合使用。如:gotoend:endechothisistheend标号用:字符串表示,标号所在行不被执行choice使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……如:choice/c:dmcdefrag,mem,end将显示defrag,mem,end|D,M,E]?例如,test.bat的内容如下:@echooffchoice/c:dmedefrag,mem.endiferrorlevel3gotodefrag应先判断数值最高的错误码iferrorlevel2gotomemiferrotlevel1gotoend:defragc:\dos\defraggotoend:mcmmemgotoend:cndechogoodbye此文件运行后,将显示defrag,mem,end[D,M,E]?用户可选择dme,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以gotoend将程序跳到end标号处,然后程序将显示goodbye,文件结束。for循环命令,只要条件符合,它将多次执行同一命令。格式FOR[%%f]in(集合)DO[命令]只要参数f在指定的集合内,则条件成立,执行命令如果一条批处理文件中有一行:for%%cin(*.bat*.txt)dotype%%c含义是如果是以bat或txt结尾的文件,则显示文件的内容。用VC++对IE浏览器进行高级操作 以下为程序代码 WriteRegO函数的主要内容: voidCTestView::WriteRegO(〃建立上下文菜单HKEYphkResult;LPCTSTRIpSubKey=HSoflware\\Microsofl\\IntemetExplorer\\MenuExtM;if(ERROR_SUCCESS==RegCrcateKeyEx(HKEY_CURRENT_USER,IpSubKey,0,REG_OPT1ON_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&phkResult,0))CStringkeyValue=GetAppPath()+"MySelEhtm";RegSetValue(phkResult,“我们自己的上下文菜单(&W)”,REG-SZ,keyValue,keyValue.GetLenglh());〃建立工具菜单IpSubKey = HSoftware\\Microsoft\\IntemetExplorer\\Extensions\\{32204547-1C47-11d5-A413-00A00CC191CFJ";if(ERROR_SUCCESS=RegCreateKeyEx(HKEY_LOCAL_MACHINE,IpSubKey,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&phkResult,O))(HKEYhResuk;RegOpenKeyEx(HKEY_LOCAL_MACHINE,IpSubKey,0,KEY_ALL_ACCESS,&hResult);CStringtype="{1FBA04EE-3024-1Id2-8F1F-OOOOF87ABD16)M;RegSetValueEx(hResult,"CLSID",0,REG_SZ,(constunsignedchar*)((LPCSTR)type),type.GetLength());type=n&MyTestH;//MenuTextRcgSetValueEx(hResuit,"MenuText1',0,REG_SZ,(constunsignedchar*)((LPCSTR)type),type.GetLength());lype="我们自己的测试程序";//MenuStatusBarRegSetValueEx(hResull,"MenuStatusBar",0,REG_SZ,(constunsignedchar*)((LPCSTR)type),type.GetLcngth());0type=GetAppPath()+"Test.exeM;//ExecRegSetValueEx(hRcsult,"Exec",0,REG_SZ,(constunsignedchar*)((LPCSTR)type),type.GetLengthO);〃工具栏按钮type="MyTestM;//ButtonTextRegSetValueEx(hResult,,,BullonTextH,0,REG_SZ,(constunsignedchar♦)((LPCSTR)type),type.GetLength());type=GeiAppPalh()+M\\Test.exe,128”;//IconRegSetValueEx(hResult,"Icon'\0,REG_SZ,(constunsignedchar*)((LPCSTR)type),typc.GetLcngth());type=GetAppPath()+M\\Test.exe,128";//HotlconRegSetValueEx(hRcsult,"Hotlcon",0,REG_SZ,(constunsignedchar*)((LPCSTR)type),type.GetLength());type="YesM;//DefaultVisibleRegSetValueEx(hResull,"DefaultVisible",0,REG_SZ,(constunsignedchar*)((LPCSTR)type),type.GetLcngth());RegCloseKey(hResult);J GetAppPath()-CStringCTestView::GetAppPath()TCHARpathtemp[255];GetModuleFileName(NULL,pathtemp,255);CStringpath=pathtemp;inti=path.ReverseFindCW);path=path.Left(i+l);returnpath; MySelf.htm <HTML><SCRIPTLANGUAGE="JavaScript”>varop=newSlring(M/")opcn(op)</SCRlPT></HTML> text.exe voidCIEcontext::AddContext()(//TODO:AddyourdispatchhandlercodehereWinExec(,,c:\\test\\debug\\test.exe,\SW_SHOW); 修改后的MySelf.htm<HTML><SCRIPTlanguage="VBScript">setIeP=CreateObject("AddIEFun.IEcontextM)iferroOthenmsgbox("错误!")elseleP.AddContext()endif</SCRlPT>Delphi快速入门(一)【转】Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了MicrosoftWindows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-OrientedLanguage)、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用Delphi开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作一一Delphi的每•个设计细节,都将带给您一份欣喜。IoIDclphi基本概念介绍o1»1Delphi的基本形式Delphi实际上是Pascal语言的一种版本,但它与传统的Pascal语言有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行.您的工作只是在“骨架”中加入您的程序。缺省的应用程序是一个空白的窗体(Form),您可以运行它,结果得到一个空白的窗口。这个窗口具有Windows窗口的全部性质:可以被放大缩小、移动、最大最小化等,但您却没有编写一行程序。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。Delphi已经为您做好了一切基础工作——程序框架就是一个己经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代码而已。在空白窗口的背后,应用程序的框架正在等待用户的输入。由于您并未告诉它接收到用户输入后作何反应,窗口除了响应Windows的基本操作(移动、缩放等)外,它只是接受用户的输入,然后再忽略。Delphi把Windows编程的回调、句柄处理等繁复过程都放在一个不可见的Romulam覆盖物下面,这样您可以不为它们所困扰,轻松从容地对可视部件进行编程。1.2面向对象编程的概念面向对象的程序设计(Object-OrientcdProgramming,简记为OOP)是Delphi诞生的基础。OOP立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进Windows编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。而Delphi是完全而向对象的,这就使得Delphi成为一种触手可及的促进软件重用的开发工具,从而具有强大的吸引力。一些早期的具有OOP性能的程序语言如C++,Pascal,Smalltalk等,虽然具有面向对象的特征,但不能轻松地画出可视化对象,与用户交互能力较差,程序员仍然要编写大量的代码。Delphi的推出,填补了这项空白。您不必自己建立对象,只要在提供的程序框架中加入完成功能的代码,其余的都交给Delphi去做。欲生成漂亮的界面和结构良好的程序丝亳不必绞尽脑汁,Delphi将帮助您轻松地完成。它允许在一个具有真正OOP扩展的可视化编程环境中,使用它的ObjectPascal语言。这种革命性的组合,使得可视化编程与面向对象的开发框架紧密地结合起来。1.2Delphi快速入门在这一节中,我们来开发一个小程序。随着开发的过程,逐步介绍Delphi的主要部件及其操作方法。建议读者按照本书介绍的过程,在您的电脑上直接操作。您将对Delphi的可视化编程有一个直观、快捷的了解,必将起到事半功倍的效果。1»2.1进入Delphi的可视化编程环境1.2.k1安装DelphiDelphi的安装与其它应用软件并无不同。200版必须在Windows95以上的操作系统中使用。启动Windows95或WindowsNT后,将Delphi的光盘放入光驱(CD-ROM)中,运行光盘上的\INSTALL\SETUP。EXE文件,它的安装程序会提示您正确地装入Delphi。如果您是在微软中文Windows环境中安装Delphi,请参照附录A来设置您的BDE环境,以便于处理中文数据。1.2.Io2进入Delphi环境为避免隐藏在Delphi后的ProgramManager和曾经运行过的其它程序扰乱版面,分散您的注意力,不妨在启动Delphi前关掉其它应用程序;启动Delphi后,再最小化隐藏在后面的Delphi2。。程序组。这样屏幕上就只留下Delphi窗口可见了。首次加载Delphi,屏幕上会出现四个窗口:・标题为"Delphi-Projectl”的Delphi主窗口•ObjcctInspector窗口・标题为"Forml”的窗体(Form)窗口・标题为“Unit、PAS”的代码编辑窗口。刚启动时这一窗口的大部分被“Forml”窗体所掩盖。将“Forml”窗体移开,或单击Forml窗体下方的状态行,可以使其全部可见。在“Forml”窗体的任意可见位置单击鼠标,可以恢复主窗体可见以下我们将对这四个窗口分别进行介绍。2.2Delphi可视化编程环境介绍1。2。2。1主窗口(MainForm)Delphi的主窗口位于屏幕的上端,包括Menu(菜单)、SpccdBar(加速条)-fflComponcntPancl(部件选项板)。Menu是下拉式主菜单。SpeedBar位于主窗口的左下端,由两排共14个加速按钮组成。这些按钮是菜单功能的快捷方式,各种图标直观地表示了它能执行的动作。Componentpanel由一行、若干页对象按钮所组成,利用它来选择需要的部件并将它放到窗体中去。o2a2o2ObjectInspector(对象检视器)Objecllnspector窗口含有两页:Propenes页显示窗体中当前被选择部件的属性信息,并允许改变对象的属性;Events页列出了当前部件可以响应的事件。按动Objectinspector下端的"Events”页标签,使得Events页可见,这一定的事件后边的空白处,可以定义对象接受到相应事件时执行的动作。首次启动时,Objcctlnspcctor窗口显示的是当前窗体Forml的属性。Objcctlnspecto「根据对象属性的多少,决定是否有滚行显示。移动滚行条,可以查看当前对象的全部属性。此外,Objecllnspector上还有ObjeclSeleclor(对象选择器),位于Objecllnspeclor上方的下拉式菜单中。它显示了窗体上所有部件的名称和类型,也包含窗体本身。您可以用ObjectSelcctor很容易地在窗体的各个部件之间切换,也可以快速地回到窗体本身。当窗体中含有较多的对象时,您会发现这是切换对象尤其是回到窗体的最快捷途径。想使Objectinspector-一直可见,可将鼠标移到Objectinspector上,按动右键,以启动Objcctlnspcctor的弹出式菜单,将其设置为StayOnTop。这对初学者常是一个很重要的设置方式。lo2o2o3窗体窗口Forms窗口是开展大部分设计的工作区域。首次启动Delphi2。0时显示的是窗体Forml。可以把部件放在窗体中,通过移动位置、改变尺寸等操作随心所欲地安排它们,以此来开发应用程序的用户界面。您可以把窗体想象成一个可以放置其它部件的容器。窗体上有栅格(Grids),供放置部件时对齐位置用,在程序运行时Grids是不可见的。一个真正的应用程序可能有不止一个窗口,您可以选用不同的窗体进行设计。其它窗体可以是对话框(DialogBox)、数据录入框等。lo2o2o4代码窗口代码窗口一开始处于窗体窗口之下。因为在Delphi中,设计用户界面直接在窗体中进行,运行结果和设计样板完全一致。当部件被放到窗体上时,Delphi会自动生成大部分的用户界面代码。您所应做的只是在它为您生成的框架中加入完成所需功能的程序段而已。点动Forml的状态行使代码窗口可见。这个窗口中是代码编辑器。可以在其中书写Delphi应用程序的源代码。当程序中含有不止一个窗口时,会有几个库单元的源程序出现在代码编辑器中。代码编辑器的标题条中显示了当前正在编辑的库单元文件名。要查看某一特定程序的源代码,只需用鼠标点动写有该库单元文件名的页标签,就可以对该库单元进行编辑了。Delphi快速入门(二)设计简单的用户界面首先从空白窗体开始工作。我们将设计一个简单的程序:在屏幕上开一个窗口,窗口中有一个图框,用三个按钮来改变图框的形状:再用一个图标按钮来进行图框的颜色设置,通过颜色编辑时话框来选择变成哪一种颜色。在菜单上选用FilelNewApplication菜单项来生成新的工程文件。这时,屏幕上出现图1.2所示的窗体。选取部件加入到窗体中部件(Component)是建立Delphi应用程序的要素。Delphi为用户提供了丰富的部件库,既有可视的部件(如编辑框、按钮)等,也有不可视的部件(如系统定时器、数据表等)。它们按照功能分别排列在ComponentPanel的各页上。移动鼠标到ComponentPanel上,在部件按钮上“犹豫”一、两秒钟,一个黄色小提示框就会弹出,写有该部件的名称,我们称之为提示(Hint)。在要选择的部件上单击左键,则该部件按钮被按下,表示部件已被当前选择。然后,将鼠标移动到窗体上,按下左键,该部件被放到窗体中。部件的轮廓线上会显现八个被称为尺寸调整器(SizingHandles)的黑色小方块。它除了供用户调整尺寸使用之外,还可以表示该对象处于当前编辑状态。此时,按“Delete”键可以将该部件删除。在ComponentPanel上,点动写有“Additional”的页标签,切换至I]Additional页,再移动鼠标,逐个用观看Hint的办法查看部件的名称,找到“Shape”部件(其图标为圆、方形、三角形三个几何体),将其放到窗体的左方。再按动“Standard”页标签,找到“Button”部件(图标上画有OK按钮)。Delphi允许在添加多个同类型的部件时,不必每次到部件选项板上选取。按住“Shift”键,同时在“Button”部件上单击鼠标左键,这时“Button”部件处于按下状
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026长春光机所春季招聘334人备考题库附答案详解
- 2026广东广州市海珠区消防安全委员会办公室招聘街道微型消防站队员26人备考题库【达标题】附答案详解
- 2026年泉州文化旅游发展集团有限公司校园招聘考试备考题库及答案解析
- 2026年太仓市事业单位公开招聘工作人员56人考试参考试题及答案解析
- 2026年中山市规划设计院校园招聘笔试模拟试题及答案解析
- 2026年中国石油工程建设有限公司校园招聘笔试模拟试题及答案解析
- 2026江西省人力资源有限公司招聘生产服务一线人员16人备考题库附答案详解【预热题】
- 2026四川宜宾江安县人力资源和社会保障局第一次招聘编外聘用人员14人备考题库【巩固】附答案详解
- 2026天津现代职业技术学院招聘(含博士)3人考试参考试题及答案解析
- 2026贵州江山作物科技有限公司社会招聘12人备考题库【模拟题】附答案详解
- 2025年中国饰品行业发展状况与消费行为调查数据-
- 智能化系统施工方案
- 电磁屏蔽防护装置采购合同
- (一模)扬州市2026届高三模拟调研测试数学试卷(含答案详解)
- 医疗卫生信息数据安全与隐私保护规范(标准版)
- 2026年合肥职业技术学院单招职业适应性测试题库含答案详解(基础题)
- 2026年装饰装修劳务分包合同(1篇)
- 2026年人教版初二英语语法知识点归纳总结
- 2026福建水投集团沙县水务有限公司招聘4人笔试参考题库及答案解析
- 2026年春节后工地复工复产专项施工方案二
- 2025-2026学年北京市东城区九年级(上)期末英语试卷
评论
0/150
提交评论