您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > C++Builder 资料库
C++Builder资料库1.怎样在C++Builder中创建使用DLL2.用C++Bulider在WIN.INI中保存信息3.如何在C++Builder中检测硬件4.C++Builder如何响应消息及自定义消息5.利用C++Builder开发动画DLL6.用C++Builder3制作屏幕保护程序7.TCP/IP头格式8.UDP9.判断windows的Desktop及其它目录10用C++Builder创建数字签名11用Enter键控制焦点切换的方法12.拦截Windows消息13.使用CommaText14.程序开始时先显示信息框15.怎样获取程序的命令行参数?16.如何监视剪贴板17.如何使用OnIdle事件18.用C++Builder编写串行异步通信程序19.C++BUILDER非可视组件的消息处理技巧20.用C++Builder建立数据库VCL使用经验21.用C++Builder创建基于Internet的点对点Chat22.用C++Builder获取应用程序图标23.BIG5到GB的转换技术24.C++BUILDER让你的任务栏图标动起来25.TFORM26.用BCB在windows桌面创建快捷方式27.读磁片磁区28.I/O端口读写的实现29.检测鼠标位置30.令Win32应用程序跳入系统零层31.如何取得Memo的行和列32.使用Sockets33.Windows95/98下怎样隐藏应用程序不让它出现在CTRL-ALT-DEL对话框中?34.怎样隐藏应用程序的任务条图标35.编写自己的Ping.exe程序36.用C++Builder在WINNT下编制一个Service37.如何在C++BUILDER中自动关闭WINDOWS屏保38.显示/隐藏任务栏图标39.信箱监视程序40.C++Building制作闹钟41.拨号上网IP地址的检知42.用C++Builder编写Tray程序43.怎样用代码来最小化或恢复程序44.制作主窗口显示前的版权窗口45.判断是否已经联到internet46.获取登陆用户名47.隐藏桌面图标48.程序启动时运行49.控制面板的调用50.模拟键盘按键51.让标题栏闪烁52.启动屏幕保护53.年月日星期的取法54.键盘事件55.隐藏任务栏56.禁止关机57.怎样以最小化方式启动程序58.在Memo中增加一行后,如何使最后一行能显示59.设置壁纸方法怎样在C++Builder中创建使用DLL自从C++Builder从去年浪漫情人节上市以来,吸引了大量的Delphi、VC、Vb的程序员到它的怀抱,大量的C、C++程序员感叹道:总算有了C的可视化开发工具,对我也是一样,从BC、Delphi到C++Builder。动态链接库(DLL)是Windows编程常遇到的编程方法,下面我就介绍一下在BCB(C++Builder下简称BCB)中如何创建使用DLL和一些技巧。一、创建:使用BCBFile|NEW建立一个新的DLL工程,并保存好文件BCB,生成一个DLL的程序框架。1.DllEntryPoint函数为一个入口方法,如果使用者在DLL被系统初始化或者注销时被调用,用来写入对DLL的初始化程序和卸载程序;参数:hinst用来指示DLL的基地址;reason用来指示DLL的调用方式,用于区别多线程单线程对DLL的调用、创建、卸载DLL;2.在程序中加入自己所要创建的DLL过程、函数;3.用dllimport描述出口;例程序如下:#include#pragmahdrstopextern揅?__declspec(dllexport)inttest();intWINAPIDllEntryPoint(HINSTANCEhinst,unsignedlongreason,void*){return1;}inttest(){return3;}注意:动态链接库中调用过程、函数时有不同的CALL方式__cdecl、__pascal,__fastcall、__stdcall,BCB中默认的方式为__cdecl(可不写),如果考虑兼容性可用时__stdcall声明方法为:extern揅?__declspec(dllexport)int__stdcalltest();对于其中过程、函数也改为:int__stdcalltest()二、使用DLL在BCB中使用DLL有两种方法:1.用静态调用法首先需要在BCB的项目中加入输入接口库(importlibrary),打开工程项目,使用BCBView|ProjectManager打开项目列表,向项目中加入接口库(*.lib)。其次在头文件中加入接口声明。例程序如下://defineinincludefileextern揅?__declspec(dllimport)int__cdecltest();//usefunctioninmainprogramintI;I=test();注意:(1)动态链接库调用过程、函数时CALL方式与创建时方式一样不写为__cdecl,其它需要声明。(2)BCB创建的DLL有对应的输入接口库(importlibrary),如只有DLL而无库时,可用BCB的implib工具产生:implibxxx.libxxx.dll;另外可用:tlibxxx.lib,xxx.lst产生DLL的内部函数列表,许多Windows的未公开技术就是用这种方法发现的。2.动态调用法动态调用法要用WindowsAPI中的LoadLibrary()和GetProcAddress()来调入DLL库,指出库中函数位置,这种方法较常见。例程序如下:HINSTANCEdd;int_stdcall(*ddd)(void);dd=LoadLibrary(搙xx.dll?;ddd=GetProcAddress(dd,搕est?;Caption=IntToStr(ddd());FreeLibrary(dd);三、注意:创建DLL时编译链接时注意设置ProjectOptions。Packages标签:去除Builderwithruntimepackages检查框。Linker标签:去除UsedynamicRTL检查框。否则创建的DLL需要RuntimepackagesorRuntimelibrary。用C++Bulider在WIN.INI中保存信息现在许多软件把程序中需要的数据保存在注册表中,这样当用户装的软件越来越多时,致使注册表越来越庞大,容易使系统出错。当然,微软也建议在注册表中保存数据,但当我们需要保存的数据不多时完全可以把数据保存在WIN.INI中,这样可以很方便地维护,实现方法相对来说比较简单。下面我以BorlandC++Builder为例来说说如何实现。原理其实很简单,只需调用API的WriteProfileString和GetProfileInt函数就可以了。这两个函数的原型是:BOOLWriteProfileString(LPCTSTRlpAppName,LPCTSTRlpKeyName,LPCTSTRlpString);UINTGetProfileInt(LPCTSTRlpAppName,LPCTSTRlpKeyName,INTnDefault);其中lpAppName指在WIN.INI中段的名字,即用[]括起来的字符串,lpKeyName指在这个段中每一个项目的名字,lpString指这个项目的值,即“=”后的数,nDefault为当GetProfileInt没有找到lpAppName和lpKeyName时返回的值,即缺省值,前者返回为布尔值(true或false),后者返回为无符号整形值。当在WriteProfileString函数中lpKeyName为空(NULL)时,则清除这个段的全部内容,lpString为空时,则清除这一项目的内容,即这一行将清除掉。下面举一例子来说明这两个函数的用法。新建一个应用程序,在Form1上放两个Edit和三个Button,其中Edit的Text为空,三个Button的Caption分别为“添加”、“查看”、“清除”。双击“添加”按钮加入下面代码:WriteProfileString(“例子程序”,“项目”,Edit1→Text.c_str());双击“查看”按钮加入如下代码:unsignedintTemp;Temp=GetProfileInt(“例子程序”,“项目”,100);Edit2→Text=IntToStr(Temp);双击“清除”按钮加入如下代码:WriteProfileString(“例子程序”,NULL,NULL);然后按F9键运行程序。下来可以检验一下程序的正确性。在Edit1中输入数字,如“3265”,按“添加”按钮,这时运行“sysedit”来查看“WIN.INI”文件的最后面,可以看到加入了如下内容:[例子程序]项目=3265其中“[]”和“=”是函数自动加上的。按下“查看”按钮,在Edit2中出现“3265”,当按下“清除”按钮可清除添加的部分。经过查看可知程序已达到预期的目的。喜爱编程的朋友可以把上述方法应用到自己的程序中去,来达到保存数据信息的作用。当确实要把信息保存到注册表中,可以在C++Builder中定义一个TRegistry类的对象来进行相关的操作,或者直接调用Windows的API函数,具体如何编程大家可以参阅相关资料或者同我联系。如何在C++Builder中检测硬件在我们编写的程序中常常要和硬件打交道,那么如何在程序中确定系统中是否有该设备,它的运行状态又是怎样的呢?对于初学者来说,这个问题常常不好解决,其实只需简单地利用几个API函数,硬件的问题并不神秘。下面就让我们一起看看在C++Builder中是如何检测硬件的。1.检测CPU的型号先让我们从最简单的做起,看一看自己的CPU型号。首先,在C++Builder中画出图1所示的窗体,在下面的几个例子中我们将一直使用这个窗体作示范,它包括一个用来激活测试的Button和一个用来显示结果的Memo。我们可以用GetSystemInfo这个API获得CPU的型号。将下列代码添加到Button的Click事件里就可以了:void__fastcallTForm1::Button1Click(TObject*Sender){//获得CPU型号SYSTEM_INFOsysteminfo;GetSystemInfo(&systeminfo);Memo1→Lines→Add(撃腃PU类型是:敚玈tring(systeminfo.dwProcessorType));}运行它,点击Test试试,CPU型号出来了吧!2.检测内存状态获得内存状态的方法和CPU型号差不多,只是他用到的是另外一个API:GlobalMemoryStatus。其中,成员dwTotalPhys用来获得物理内存总量,而dwAvailPhys顾名思义是有效物理内存的意思。我们只要把下面几行代码加到上面程序的后面就可以了(不用重做,下同)://获得内存状态MEMORYSTATUSmemory;memory.dwLength=sizeof(memory);//初始化GlobalMemoryStatus(&memory);Memo1→Lines→Add(撃奈锢砟诖媸?Mb):敚玈tring(int(memory.dwTotalPhys/1024/1024)));Memo1→Lines→Add(撈渲锌捎媚诖媸?Kb):敚玈tring(int(memory./1024)));怎么样,看出点门道了么?两段程序的格式几乎一模一样,其实,GetSystemInfoGlobalMemoryStatus还可以获得许多其他有关CPU和内存的信息,就按照上面的格式去套就行了,更详细的资料可以去看C++Builder4的Help。3.检测可用硬盘空间好了,经过前面两个简单问题的热身,我们来处理一个稍微复杂的问题:我们知道安装程序大都有一个检测硬盘空间的过程,那么这是怎么实现的呢?他用到的是API函数GetDiskFreeSpac
本文标题:C++Builder 资料库
链接地址:https://www.777doc.com/doc-4407706 .html