没有合适的资源?快使用搜索试试~ 我知道了~
C++Builder_资料库.doc
需积分: 15 3 下载量 138 浏览量
2019-07-11
20:53:26
上传
评论
收藏 149KB DOC 举报
温馨提示
试读
39页
单行编辑框控件用来接收来自用户的单行可编辑输入,它位于控件板的Standard页,其主要属性有: AutoSelect:自动选择。用来设置当该控件获得输入焦点时编辑框里的文本内容是否被自动选择。若用户想要在每次选中该编辑框时就要替换掉原有的内容,不是在原有的内容后添加新的内容,可把该属性设为true。 CharCase:控制编辑框内字符的大小写。(可选值有ecLowerCase:全为小写;ecNormal:正常方式,大小写均可;ecUpperCase:全为大写。) MaxLength:设置输入文本的最大长度。当为0时表示不受限制。 ReadOnly:当该属性设为true时,用户不能改变编辑框里面的文本。 Text:当程序运行时显示在编辑框里面的文本内容。
资源推荐
资源详情
资源评论
C++Builder 资料库
1.怎样在 C++Builder 中创建使用 DLL
2.用 C++Bulider 在 WIN.INI 中保存信息
3.如何在 C++Builder 中检测硬件
4.C++Builder 如何响应消息及自定义消息
5.利用 C++ Builder 开发动画 DLL
6.用 C++ Builder 3 制作屏幕保护程序
7.TCP/IP 头格式
8.UDP
9.判断 windows 的 Desktop 及其它目录
10 用 C++Builder 创建数字签名
11 用 Enter 键控制焦点切换的方法
12.拦 截 Windows 消 息
13.使用 CommaText
14.程序开始时先显示信息框
15.怎样获取程序的命令行参数?
16.如何监视剪贴板
17.如何使用 OnIdle 事件
18.用 C++Builder 编写串行异步通信程序
19.C++BUILDER 非可视组件的消息处理技巧
20.用 C++Builder 建立数据库 VCL 使用经验
21.用 C++ Builder 创建基于 Internet 的点对点 Chat
22.用 C++Builder 获取应用程序图标
23.BIG5 到 GB 的转换技术
24.C++BUILDER 让你的任务栏图标动起来
25.TFORM
26.用 BCB 在 windows 桌面创建快捷方式
27.读磁片磁区
28.I/O 端口读写的实现
29.检测鼠标位置
30.令 Win32 应用程序跳入系统零层
31.如何取得 Memo 的行和列
32.使用 Sockets
33.Windows95/98 下怎样隐藏应用程序不让它出现在 CTRL-ALT-DEL 对话框中?
34.怎样隐藏应用程序的任务条图标
35.编写自己的 Ping.exe 程序
36.用 C++Builder 在 WINNT 下编制一个 Service
37.如何在 C++ BUILDER 中自动关闭 WINDOWS 屏保
38.显示/隐藏任务栏图标
39.信箱监视程序
40.C++Building 制作闹钟
41.拨号上网 IP 地址的检知
42.用 C++ Builder 编写 Tray 程序
43.怎样用代码来最小化或恢复程序
44.制作主窗口显示前的版权窗口
45.判断是否已经联到 internet
46.获取登陆用户名
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 和一些技巧。
一、创建:
使用 BCB File|NEW 建立一个新的 DLL 工程,并保存好文件 BCB,生成一个 DLL 的程序框架。
1.DllEntryPoint 函数为一个入口方法,如果使用者在 DLL 被系统初始化或者注销时被调用,用来写
入对 DLL 的初始化程序和卸载程序;参数:hinst 用来指示 DLL 的基地址;reason 用来指示 DLL 的调用
方式,用于区别多线程单线程对 DLL 的调用、创建、卸载 DLL;
2.在程序中加入自己所要创建的 DLL 过程、函数;
3.用 dllimport 描述出口;
例程序如下:
#include
#pragma hdrstop
extern 揅?__declspec(dllexport) int test();
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}
int test()
{
return 3;
}
注意:动态链接库中调用过程、函数时有不同的 CALL 方式 __cdecl、 __pascal,
__fastcall、__stdcall,BCB 中默认的方式为__cdecl(可不写),如果考虑兼容性可用时__stdcall 声明方法
为:
extern 揅?__declspec(dllexport) int __stdcall test();
对于其中过程、函数也改为:
int __stdcall test()
二、使用 DLL
在 BCB 中使用 DLL 有两种方法:
1.用静态调用法
首先需要在 BCB 的项目中加入输入接口库(import library),打开工程项目,使用 BCB View|Project
Manager 打开项目列表,向项目中加入接口库(*.lib)。
其次在头文件中加入接口声明。
例程序如下:
//define in include file
extern 揅?__declspec(dllimport) int __cdecl test();
//use function in main program
int I;
I=test();
注意:
(1)动态链接库调用过程、函数时 CALL 方式 与创建时方式一样不写为__cdecl,其它需要声明。
(2)BCB 创建的 DLL 有对应的输入接口库(import library),如只有 DLL 而无库时,可用 BCB 的 implib 工具
产生:implib xxx.lib xxx.dll;另外可用:tlib xxx.lib,xxx.lst 产生 DLL 的内部函数列表,许多 Windows 的未
公开技术就是用这种方法发现的。
2.动态调用法
动态调用法要用 Windows API 中的 LoadLibrary()和 GetProcAddress()来调入 DLL 库,指出库中函数
位置,这种方法较常见。
例程序如下:
HINSTANCE dd;
int _stdcall (*ddd)(void);
dd=LoadLibrary(搙 xx.dll?;
ddd=GetProcAddress(dd,搕 est?;
Caption=IntToStr(ddd());
FreeLibrary(dd);
三、注意:
创建 DLL 时编译链接时注意设置 Project Options。
Packages 标签:去除 Builder with runtime packages 检查框。
Linker 标签:去除 Use dynamic RTL 检查框。
否则创建的 DLL 需要 Runtime packages or Runtime library。
用 C++Bulider 在 WIN.INI 中保存信息
现在许多软件把程序中需要的数据保存在注册表中,这样当用户装的软件越来越多时,致使注册表越来越
庞大,容易使系统出错。当然,微软也建议在注册表中保存数据,但当我们需要保存的数据不多时完全可
以把数据保存在 WIN.INI 中,这样可以很方便地维护,实现方法相对来说比较简单。下面我以 Borland C
++ Builder 为例来说说如何实现。
原理其实很简单,只需调用 API 的 WriteProfileString 和 GetProfileInt 函数就可以了。这两个函数的
原型是:BOOL WriteProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString );
UINT GetProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault);
其中 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());
双击“查看”按钮加入如下代码:
unsigned int Temp;
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 __fastcall TForm1::Button1Click(TObject *Sender)
{
//获得 CPU 型号
SYSTEM_INFO systeminfo;
GetSystemInfo (&systeminfo);
Memo1→Lines→Add(撃腃 PU 类型是:敚玈 tring( systeminfo.dwProcessorType ));
}
运行它,点击 Test 试试,CPU 型号出来了吧!
2.检测内存状态
获得内存状态的方法和 CPU 型号差不多,只是他用到的是另外一个 API:GlobalMemoryStatus。
其中,成员 dwTotalPhys 用来获得物理内存总量,而 dwAvailPhys 顾名思义是有效物理内存的意思。
我们只要把下面几行代码加到上面程序的后面就可以了(不用重做,下同):
//获得内存状态
MEMORYSTATUS memory;
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 函数 GetDiskFreeSpace,这个函数输入一
个参数:目标盘的路径;返回四个参数,依次是每簇的扇区数、每扇区的字节数、空闲的簇数、总簇数。
假如我们需要检测 C 盘的总容量和可用容量,那么可以把以下代码加到上面的程序中:
//获得 C 盘可用空间
DWORD sector,byte,cluster,free;
long int freespace,totalspace;
GetDiskFreeSpace(揅:?&sector,&byte,&free,&cluster); //获得返回参数
totalspace=int(cluster)*int(byte)*int(sector)/1024/1024; //计算总容量
freespace=int(free)*int(byte)*int(sector)/1024/1024; //计算可用空间
Memo1→Lines→Add(揅盘总空间(Mb):敚玈 tring(totalspace));
Memo1→Lines→Add(揅盘可用空间(Mb):敚玈 tring(freespace));
怎么样?现在可以自己做安装程序了吧!
C++Builder 如何响应消息及自定义消息
Inprise(Borland) C++Builder 中,可以象在 Delphi 中一样响应消息,只是看起来要稍复杂一点。
对于系统已定义的消息,可以直接响应:
#define WM_MY_OPEN_CMDLINE_FILE (WM_USER+1) //进程间通讯的自定义消息
#define WM_MY_SEARCH_NODE (WM_USER+2) //查找命令的自定义消息
class TSomeForm : public TForm
{
//...类中的其它代码
protected:
//消息的响应过程
void __fastcall OpenCmdLineFile(TMessage Message);
void __fastcall SearchDocumentNode(TMessage Message);
void __fastcall GetWindowMinMaxInfo(TWMGetMinMaxInfo Message);
剩余38页未读,继续阅读
资源评论
hqztrue2
- 粉丝: 0
- 资源: 58
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功