C++ Builder 5编程实例与应用指南精讲

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本书是针对C++ Builder 5开发环境的详细实践指南,涵盖了IDE介绍、VCL组件使用、事件驱动、数据库编程、网络通信、图形和多媒体处理、文件操作、异常处理、性能优化、多线程等关键知识点。通过实例演示,帮助读者深入理解并精通C++ Builder 5,提升C++编程能力和Windows应用程序开发技能。 C++ Builder

1. C++ Builder 5 IDE使用

在本章中,我们将首先介绍C++ Builder 5集成开发环境(IDE)的基础知识和功能,为之后的深入学习打下坚实的基础。C++ Builder 5是Borland公司开发的一款面向对象的可视化编程工具,广泛用于快速开发Windows应用程序。

1.1 IDE的基本布局和功能

IDE的界面由多个窗格组成,包括主菜单栏、工具栏、代码编辑器、窗体设计器以及项目管理器等。用户可以通过这些组件进行源代码的编写、编译、调试,以及窗体的设计。

// 示例代码展示如何使用C++ Builder创建一个简单的Hello World程序
#include <vcl.h>
#include <iostream>

#pragma hdrstop

int main(int argc, char* argv[])
{
    Application->Initialize();
    Application->CreateForm(__classid(TForm1), &Form1);
    Application->Run();
    return 0;
}

以上代码展示了如何使用C++ Builder创建一个基本的窗口,并运行一个程序。其中, TForm1 是设计好的窗体类, Application 是管理程序生命周期的类。

1.2 配置和优化IDE环境

为了提高开发效率,用户需要熟悉IDE的配置选项。这些包括编译器优化、快捷键设置、工具栏定制、代码自动完成等。通过个性化配置,开发者可以按照个人喜好和工作流定制自己的开发环境。

// 通过配置文件.bdsproj来调整C++ Builder的项目设置
[Settings]
CompilerVersion=VCL40
ProjectType=CPP
DebugInfo=Debug

通过编辑项目配置文件 .bdsproj ,可以改变项目的编译器设置、调试信息级别等,实现项目的个性化定制。

通过这一章节的内容,您已经对C++ Builder 5的IDE有了初步了解。在后续章节中,我们将进一步探讨VCL组件库的应用,事件驱动编程技术,以及数据库编程等多个方面的知识。接下来,请期待第二章的内容,我们将会一起深入了解VCL组件库的强大功能。

2. VCL组件库应用

VCL(Visual Component Library)是C++ Builder的基础,它提供了一系列的可视化组件,使得开发者可以快速的构建出复杂的应用程序。深入理解并熟练使用VCL组件,是每个使用C++ Builder的开发者必须掌握的技能。

2.1 VCL组件基础

2.1.1 组件的种类与功能

VCL组件库包含了许多不同的组件,它们可以被分类为数据控制组件、数据感知组件、数据访问组件、非可视化组件等。每一种组件都有其独特的功能和用途。例如,数据控制组件如TDBGrid可以用来显示和编辑数据库中的数据;非可视化组件如TTimer可以用来实现定时器功能。理解每个组件的种类和功能,可以帮助我们在开发过程中选择最合适的方式,提升开发效率。

2.1.2 组件的属性、事件和方法

每个VCL组件都有一系列的属性(Properties)、事件(Events)和方法(Methods)。属性可以用来设置组件的外观和行为,事件则是在特定条件下触发的代码块,而方法则提供了组件可以执行的动作。

对于初学者来说,掌握组件的属性、事件和方法是非常重要的。例如,了解TButton组件的 OnClick 事件,可以帮助我们编写当按钮被点击时执行的代码。

2.2 常用VCL组件实战

2.2.1 Form组件的使用与定制

Form组件是VCL中最基本也是最常用的组件之一,它相当于一个容器,可以用来放置其他组件,并且决定应用程序的窗口大小和外观。Form组件的使用技巧包括如何添加和组织控件、如何自定义窗口的样式和行为等。

在定制Form时,我们需要了解如 OnCreate OnDestroy 这样的事件,它们在Form被创建和销毁时触发。此外,属性如 Color Caption 可以改变窗口的颜色和标题栏的文本。

2.2.2 数据感知组件与数据库的连接

数据感知组件可以直接从数据库中读取数据,并且实时显示在界面上。一个典型的数据感知组件是TDBGrid,它可以展示和编辑从数据库中检索出来的数据。要将数据感知组件与数据库连接,通常需要使用数据访问组件,比如TADOQuery或者TDataSource,配合SQL语句来实现数据的查询、插入、更新和删除。

连接数据库涉及到多个组件的协同工作,不仅需要掌握VCL组件的使用,还需要对数据库有一定的了解。例如,在一个数据应用中,我们可能会使用如下代码块来连接和查询数据库:

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
    try
    {
        SQLConnection1->Open(); // 打开数据库连接
        SQLQuery1->SQL->Text = "SELECT * FROM Customers"; // SQL查询语句
        SQLQuery1->Open(); // 执行查询
        DataSource1->DataSet = SQLQuery1; // 将数据集绑定到数据感知组件
    }
    catch (Exception &exception)
    {
        ShowMessage("数据库连接错误:" + exception.Message);
    }
}

在上面的代码中,我们首先打开了一个名为 SQLConnection1 的数据库连接,然后执行了一个SQL查询语句,并且将查询结果绑定到名为 DataSource1 的数据访问组件上,这样数据感知组件就可以显示查询出来的数据了。这段代码的逻辑分析和参数说明将帮助开发者了解如何使用VCL组件来实现数据操作。

通过以上对VCL组件库应用的介绍,我们可以发现它不仅提供了丰富的组件供开发者使用,还通过属性、事件和方法的组合,提供了强大的定制能力。下一章节我们将深入探讨事件驱动编程技术,这是构建交互式应用程序的基石。

3. 事件驱动编程技术

事件驱动编程是现代应用开发中不可或缺的部分,尤其是在需要高度交互和响应用户操作的应用中,如图形用户界面(GUI)和网络通信等。掌握事件驱动编程技术,对于C++ Builder 5 IDE的高级应用至关重要。

3.1 事件驱动编程基础

3.1.1 事件的定义和分类

事件是程序中发生的事情,比如用户点击按钮、窗体关闭或者定时器到时等,都可以触发一个事件。在C++ Builder 5 IDE中,VCL组件通过事件将用户的动作转化为程序可识别的消息。

事件可大致分为三类:

  • 系统事件:例如窗体的创建和销毁、定时器事件。
  • 用户界面事件:例如按钮点击、菜单选择、文本框输入等。
  • 应用逻辑事件:比如数据库记录的增删改查等操作完成后,引发的自定义事件。

3.1.2 事件处理机制的原理

事件处理机制主要涉及到“事件发布-订阅”模型。开发者为不同的事件编写相应的事件处理函数(也称为事件处理程序),当事件被触发时,系统自动调用对应的处理函数来响应事件。

在C++ Builder中,一个典型的事件处理代码如下所示:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // 用户点击了Button1按钮,将执行这里的代码
}

上述代码中, Button1Click 是事件处理函数, TForm1 是窗体类, Button1 是该窗体上的按钮组件。当按钮被点击时,C++ Builder 的事件处理机制会自动调用这个函数。

3.2 高级事件处理技巧

3.2.1 多事件响应和事件链

在复杂的应用中,一个操作可能需要触发多个事件处理函数。在C++ Builder中,可以实现多个事件处理函数对同一事件的响应。

例如,一个按钮被点击可能需要改变界面状态,同时还要进行数据校验。这可以通过为同一个事件注册多个事件处理函数来实现。

3.2.2 自定义事件与消息处理

开发者可以根据需要创建自定义事件,并将其与事件处理函数绑定。这在需要在特定条件下让组件执行特定操作时非常有用。

自定义事件的创建通常涉及到使用 __published 关键字声明新的事件属性,然后在某个动作发生时通过调用 Broadcast() 方法来发布这个事件。

自定义事件创建示例代码:

class TForm1 : public TForm
{
    // ...
public:
    __published:
        // 声明自定义事件
        __property TNotifyEvent OnCustomEvent;

    // ...
    __fastcall TForm1(TComponent* Owner)
        : TForm(Owner)
    {
        // ...
    }

    // 自定义事件触发函数
    void __fastcall DoCustomEvent()
    {
        if (OnCustomEvent)
        {
            OnCustomEvent(this);
        }
    }
};

通过上述方法,开发者可以灵活地扩展事件驱动编程的能力,实现更加复杂和个性化的交互逻辑。

4. ```

第四章:数据库编程技能

4.1 数据库连接与查询

4.1.1 BDE的配置与使用

Borland Database Engine (BDE) 是 C++ Builder 中用于数据库连接的核心组件,它提供了一套标准的接口,允许应用程序访问多种数据库系统。在使用 BDE 连接数据库之前,需要对其进行正确的配置。

BDE 的配置涉及以下几个步骤:

  1. 安装 BDE引擎 :C++ Builder 自带 BDE,但必须确保安装过程中选择了 BDE 相关的选项。
  2. 配置别名 :在 BDE Administrator 中设置数据库别名,这些别名用于简化数据库的连接过程。
  3. 配置驱动程序 :选择合适的驱动程序进行配置,支持的数据库类型包括 dBase, Paradox, Access 等。
  4. 选择数据库路径 :指向实际的数据库文件或者文件夹路径,确保 BDE 可以通过指定的别名访问到数据库。
  5. 调整性能参数 :根据需要调整 BDE 的性能参数,比如缓冲区大小、缓存数量等。

配置完成后,可以使用 BDE 的 TSession 组件进行数据库连接:

TSession* Session = new TSession;
Session->AliasName = "MyDB"; // 使用已配置的数据库别名
Session->DatabaseName = "MyDatabase"; // 指定实际的数据库名
Session->Open(); // 打开数据库连接

4.1.2 SQL语言基础和应用

SQL(Structured Query Language)是一种标准的数据库查询语言,用于存储、查询、更新和管理数据库中的数据。它是数据库编程的基础,而 BDE 提供了 SQL PassThrough 功能,允许直接执行 SQL 命令。

基本的 SQL 语句有以下几个:

  • SELECT :从数据库中检索数据。
  • INSERT :向数据库表中插入新的数据行。
  • UPDATE :更新数据库表中的数据。
  • DELETE :从数据库表中删除数据行。
  • CREATE TABLE :创建一个新表。
  • DROP TABLE :删除一个表。

使用 SQL 的一个基本例子如下:

SELECT * FROM Customers WHERE Country='USA';

在 C++ Builder 中,可以通过 TQuery 或 TADOQuery 组件执行 SQL 命令。TQuery 使用 BDE,而 TADOQuery 使用 ActiveX Data Objects (ADO)。

使用 TQuery 执行 SQL 的代码示例如下:

TQuery* Query = new TQuery(Session);
Query->SQL->Clear();
Query->SQL->Add("SELECT * FROM Customers WHERE Country='USA'");
Query->Open();

在此例中,首先创建了 TQuery 组件的一个实例,并关联了一个 TSession 对象。然后清空 SQL 属性,并添加了一个查询语句。调用 Open() 方法执行 SQL 并获取结果。

4.2 数据库应用扩展

4.2.1 数据库更新和事务处理

数据库更新操作包括增加、修改和删除记录,这是构建动态数据库应用的基础。事务处理是确保数据完整性的重要机制,尤其是在多用户环境中。

事务处理有以下特点:

  • 原子性 :事务中的所有操作要么全部完成,要么全部不执行。
  • 一致性 :事务必须将数据库从一个一致性状态转换到另一个一致性状态。
  • 隔离性 :事务的执行不应该被其他事务的执行所干扰。
  • 持久性 :一旦事务提交,它对数据库的改变就是永久性的。

在 C++ Builder 中,可以使用 TTransaction 组件来管理事务。以下是一个事务处理的例子:

TSession* Session = new TSession;
TTransaction* Trans = new TTransaction(Session);

Trans->Start();
try {
    Query->SQL->Add("INSERT INTO Orders (OrderID, CustomerID) VALUES (10643, 'VINET')");
    Query->ExecSQL();

    Query->SQL->Add("INSERT INTO [Order Details] (OrderID, ProductID, Quantity) VALUES (10643, 11, 12)");
    Query->ExecSQL();

    Trans->Commit(); // 提交事务
} catch (...) {
    Trans->Rollback(); // 回滚事务
}
Trans->Free();
Session->Close();

在此例中,首先创建了 TSession TTransaction 组件的实例。调用 Start() 方法开始事务,执行更新操作。如果成功,调用 Commit() 方法提交事务;如果出现异常,则调用 Rollback() 方法回滚事务,以确保数据的一致性。

4.2.2 多层数据库架构和应用

多层数据库架构通常包含以下几个层次:

  • 表示层 :用户界面,如使用 C++ Builder 设计的窗体。
  • 业务逻辑层 :处理应用程序核心业务逻辑。
  • 数据访问层 :处理数据的存储、检索、更新和删除操作。
  • 数据存储层 :实际存储数据的数据库系统。

多层架构的优势在于:

  • 分离关注点 :业务逻辑与数据访问分离,使得代码更加清晰,易于维护。
  • 易于扩展 :可以单独对每一层进行扩展,提高了应用的可伸缩性。
  • 复用性高 :各个层次的功能可以复用,减少了重复代码。
  • 安全性增强 :业务逻辑层可以对数据访问进行控制,增强了系统的安全性。

下面是一个简单的多层数据库架构示例:

graph LR
A[表示层] --> B[业务逻辑层]
B --> C[数据访问层]
C --> D[数据存储层]

在 C++ Builder 中,可以使用数据模块(DataModule)来实现数据访问层的逻辑。数据模块通常包含 TDataSet 派生类的组件,例如 TTable, TQuery, TStoredProc 等,这些组件负责与数据库的交互。

一个典型的数据访问层可能包含以下组件和代码:

// 数据模块组件
TADOConnection*ADOConnection;
TADOQuery*ADOQuery;

void TDataModule1::FetchCustomers() {
    try {
        ADOConnection->Open();
        ADOQuery->SQL->Clear();
        ADOQuery->SQL->Add("SELECT * FROM Customers");
        ADOQuery->Open();
    } catch (...) {
        // 错误处理逻辑
    }
}

在此代码段中,定义了两个 TADOComponent 类型的组件,用于建立数据库连接和执行查询操作。 FetchCustomers 函数展示了如何打开连接、执行 SQL 查询并获取结果集。

通过上述多层次的设计和编码实践,可以有效地构建出稳定、可维护且可扩展的数据库应用程序。


# 5. 网络编程实现

## 5.1 基础网络编程概念

### 5.1.1 TCP/IP协议栈与C++ Builder

TCP/IP 是一组用于互联网数据通信的协议,其中包含了TCP(传输控制协议)和IP(网际协议),这是网络通信的基础。C++ Builder通过其内置的网络组件和类库,提供了一套便利的接口用于网络编程。TCP/IP协议栈的使用对于需要开发客户端-服务器架构应用程序的开发者来说是必不可少的。

#### 代码示例与分析

在C++ Builder中,通过TClientSocket和TServerSocket组件,可以快速创建基本的网络通信服务。以下是一个简单的TCP服务器端示例代码,它监听特定端口,并将接收到的数据原样返回给客户端(回声服务)。

```cpp
// 简单的TCP服务器示例代码
void __fastcall TForm1::ServerSocketAccept(TObject *Sender)
{
    TCustomWinSocket *Socket = (TCustomWinSocket *)Sender;
    if(Socket->SocketKind == tkTCP)
    {
        // 设置当前Socket为活动状态
        TServerSocket *ServerSocket = (TServerSocket *)Socket;
        ServerSocket->Active = true;
    }
}

void __fastcall TForm1::ServerSocketClientRead(TObject *Sender)
{
    TCustomWinSocket *Socket = (TCustomWinSocket *)Sender;
    Ansistrstream *strStream = new Ansistrstream();
    try {
        // 读取从客户端传来的数据
        strStream->rdbuf(Socket->InputBuffer->RBuf)->readsome(strStream->base(), Socket->InputBuffer->Available);
        *strStream >> *((Ansistrstream *)Socket->Tag)->str();

        // 发送数据回客户端(回声)
        Socket->Output->WriteStr(((Ansistrstream *)Socket->Tag)->str());
    } catch(...) {
        // 异常处理
        delete strStream;
    }
}

上面的代码中,服务器端使用 ServerSocketAccept 来处理客户端连接的接受事件,并在 ServerSocketClientRead 中处理接收到的数据。网络通信中通常会涉及到异常处理和资源清理,确保程序的健壮性。

参数说明与逻辑分析
  • Sender 参数指向触发事件的对象。
  • TCustomWinSocket 是所有Winsock控件的基类,通过它能够访问socket连接的状态。
  • Socket->SocketKind 检查socket类型,判断是否为TCP。
  • TServerSocket 是基于 TCustomWinSocket 的特定于服务器的socket类,提供与客户端通信的方法。
  • Socket->Active 属性设置为 true 以激活socket。

这个简单的服务器程序演示了如何使用C++ Builder的组件来处理TCP网络通信。要运行这样的服务,还需进一步配置服务器地址和端口号,并在客户端实现相应的通信逻辑。

5.1.2 套接字编程模型和实践

套接字编程模型是网络编程中的核心概念,允许两个程序之间的数据交换。在C++ Builder中,使用套接字模型,开发者可以创建客户端和服务器端程序,分别处理不同的网络通信任务。

操作步骤
  1. 创建服务器端 - 使用 TServerSocket 组件并为其关联 OnAccept OnClientRead 事件处理程序,监听特定端口。
  2. 创建客户端 - 使用 TClientSocket 组件并设置服务器地址和端口,连接服务器。
  3. 数据交换 - 在服务器端和客户端分别处理数据发送和接收。
代码块及解释

以下示例演示了如何在C++ Builder中实现一个简单的客户端程序,该程序连接到服务器,并发送一条消息后接收服务器响应。

// 客户端连接到服务器并发送消息
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender)
{
    TClientSocket *Socket = (TClientSocket *)Sender;
    Socket->Connect();
}

void __㧬fastclass TForm1::ClientSocket1Read(TObject *Sender)
{
    TCustomWinSocket *Socket = (TCustomWinSocket *)Sender;
    Ansistrstream *strStream = new Ansistrstream();
    try {
        strStream->rdbuf(Socket->InputBuffer->RBuf)->readsome(strStream->base(), Socket->InputBuffer->Available);
        ShowMessage(strStream->str().c_str());
    } catch(...) {
        delete strStream;
    }
}

void __㧬fastclass TForm1::ClientSocket1Write(TObject *Sender)
{
    TCustomWinSocket *Socket = (TCustomWinSocket *)Sender;
    Ansidstrstream *strStream = new Ansidstrstream();
    strStream->str("Hello Server!");
    Socket->Output->WriteStr(strStream->str().c_str());
}

在这段代码中:

  • ClientSocket1Connect 是当客户端连接到服务器时触发的事件,执行连接操作。
  • ClientSocket1Read 用于读取从服务器返回的数据。
  • ClientSocket1Write 在客户端向服务器发送数据。

表格:TCP/IP协议栈各层功能简介

| 协议层 | 功能描述 | | --- | --- | | 应用层 | 提供用户接口,例如HTTP、FTP等。 | | 传输层 | 管理端到端的数据传输,TCP和UDP协议。 | | 网络层 | 处理数据包的寻址和路由。 | | 链路层 | 负责数据的传输和物理连接。 |

以上代码块和表格展示了网络编程中客户端和服务器端的基本实现和TCP/IP协议栈的基本结构,为网络编程提供了基础理解。接下来,我们将探讨客户端-服务器模型应用和网络数据传输与安全方面的内容。

6. 图形和多媒体编程

图形和多媒体编程是当今软件开发中不可或缺的部分,它能够极大提升用户界面的吸引力和交互体验。本章节将探讨图形界面设计的基本原则,以及如何将多媒体技术集成到应用程序中。

6.1 图形界面设计原则

6.1.1 界面布局与控件使用

界面布局是用户与应用程序交互的第一印象,而控件的使用则是实现这一布局的关键。在设计图形界面时,需要考虑到易用性、一致性和美观性。

在C++ Builder 5 IDE中,开发者可以利用VCL组件来设计丰富的用户界面。例如,使用 TButton 来创建按钮, TLabel 来显示文本,以及 TListBox 来列出选项等。布局控件如 TForm TPanel 可以用来组织这些小控件,形成一个整洁、有序的用户界面。

布局设计需要考虑到用户的视线流动,将最重要的功能按钮放在用户容易点击的位置。同时,控件间的间距应保持一致,以避免视觉上的杂乱无章。

6.1.2 界面美观性与用户体验

界面美观性直接影响到用户的使用体验。开发者应该使用统一的配色方案、字体样式以及图标来增强视觉效果。此外,动画效果的合理运用也可以增加界面的吸引力。

在C++ Builder 5中,可以使用 TStyle 控件来应用自定义的样式,包括背景图片、颜色以及控件的视觉效果。为提高用户体验,应当确保界面响应迅速,操作流畅。

6.2 多媒体技术集成

6.2.1 静态图片与动态图像处理

在许多应用程序中,需要集成静态图片和动态图像来提升信息的表达效果和用户的交互体验。C++ Builder 5 提供了 TImage 控件来显示静态图片,而 TMediaPlayer TAnimate 控件则分别用于播放音频和动画。

处理图像时,可能需要调整图片的尺寸、格式,甚至进行图像转换。C++ Builder 5 集成的VCL组件库提供了丰富的接口来实现这些功能。

6.2.2 音视频播放与编辑技术

播放音视频文件是多媒体技术中的常见需求。C++ Builder 5 IDE中,可以使用 TMediaPlayer 控件播放多种格式的音视频文件,例如MP3、AVI和WAV等。对于音视频编辑,可以结合第三方库或API实现剪辑、合并等功能。

在实际应用中,集成音视频技术时需要注意权限管理,以及在不同平台上的兼容性问题。此外,为了优化播放性能,开发者应当对音视频文件进行适当的压缩和预加载处理。

接下来,我们将探讨如何利用文件操作和资源管理来进一步提升应用的功能和性能。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本书是针对C++ Builder 5开发环境的详细实践指南,涵盖了IDE介绍、VCL组件使用、事件驱动、数据库编程、网络通信、图形和多媒体处理、文件操作、异常处理、性能优化、多线程等关键知识点。通过实例演示,帮助读者深入理解并精通C++ Builder 5,提升C++编程能力和Windows应用程序开发技能。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

C++Builder精彩编程实例集锦的源代码(1,2,3部分): 第一部分 界面设计 实例001 如何实现程序闪屏效果 实例002 如何实现程序窗口闪烁 实例003 如何制作吸附窗口程序 实例004 如何制作透明程序窗口 实例005 如何制作半透明程序窗口 实例006 如何制作不规则程序窗口 实例007 如何制作程序渐变背景 实例008 如何设置程序背景图像 实例009 如何设置MDI程序背景图像 实例010 如何动态关闭MDI程序所有子窗口 实例011 如何去掉MDI程序子窗口标题栏 实例012 如何拖动非标题栏区域移动窗口 实例013 如何控制程序最小化窗口 实例014 如何限制程序最大最小化窗口 实例015 如何控制程序窗口自动隐藏或显示 实例016 如何隐藏应用程序 实例017 如何控制程序在任务栏上是否出现 实例018 如何使一个程序在任务栏同时出现多个标题 实例019 如何使程序窗口总在最前面显示 实例020 如何隐藏应用程序标题栏 实例021 如何设置程序主标题 实例022 如何设置程序图标 实例023 如何在程序中改变菜单位置 实例024 如何删除程序系统关闭菜单 实例025 如何拷贝当前程序界面 实例026 如何动态创建程序表单 实例027 如何遍历窗体所有组件 实例028 如何保证组件位置相对固定 实例029 如何在窗体中动态增加组件 实例030 如何使组件在程序运行时可以移动 实例031 如何使用组件创建托盘程序 实例032 如何使用动画组件播放动画 实例033 如何在状态栏上加载进度条 实例034 如何在编辑框内显示图像 实例035 如何在列表框中增加水平滚动条 实例036 如何在列表框中同时显示图像和文字 实例037 如何设置属性表组件标签图像 实例038 如何控制Memo组件的文字边界 实例039 如何使用代码控制文字滚动 实例040 如何纵向显示字符串 实例041 如何旋转显示字符串 实例042 如何设置显示文字分辨率 第二部分 程序设置 实例043 如何使用消息框 实例044 如何显示简单关于对话框 实例045 如何在程序中增加热键 实例046 如何在程序中自定义消息 实例047 如何在程序中自定义系统菜单 实例048 如何在执行程序间进行数据通信 实例049 如何使用OLE技术启动画图 实例050 如何在程序中添加Word文档表格 实例051 如何在程序中设置Word文档的字体风格 实例052 如何使用Onldle事件 实例053 如何使程序在循环时响应外界事件 实例054 如何设置程序在系统启动时自动运行 实例055 如何创建多线程程序 实例056 如何创建可独立执行程序 实例057 如何编写单文档应用程序 实例058 如何编写多文档应用程序 实例059 如何编写COM服务器程序 实例060 如何编写COM客户端程序 实例061 如何编写DDE服务器程序 实例062 如何编写DDE客户端程序 实例063 如何编写DLL服务器程序 实例064 如何编写DLL客户端程序 实例065 如何注册DLL服务器程序 实例066 如何制作聊天服务器程序 实例067 如何制作聊天客户端程序 实例068 如何获取程序名称和路径 实例069 如何获取程序命令行参数 实例070 如何析取动态链接库中的图标 实例071 如何设置Edit组件的文本选择范围 实例072 如何将小写金额转换成大写金额 实例073 如何将全角字符串转换成半角字符串 实例074 如何按照指定的有效位数转换数字 实例075 如何获取汉字的拼音索引 实例076 如何设置输入方法 实例077 如何控制数据输入格式 实例078 如何控制编辑框中的输入法 实例079 如何设置回车键后的焦点 实例080 如何将项目保存到对象库 实例081 如何检测鼠标信息 实例082 如何读取鼠标信息 实例083 如何实现鼠标拖动操作 实例084 如何限制鼠标活动范围 实例085 如何读取键盘信息 第三部分 文件操作 实例086 如何复制文件 实例087 如何定制文件复制操作 实例088 如何更名文件 实例089 如何更改文件扩展名 实例090 如何删除文件 实例091 如何删除文件夹 实例092 如何选择文件夹 实例093 如何创建多层文件夹 实例094 如何自动获取文件夹和文件 实例095 如何搜索指定目录下的文件 实例096 如何搜索指定目录下的隐藏文件 实例097 如何搜索文本文件中的字符串 实例098 如何替换文本文件中的字符串 实例099 如何将长文件名转换为短文件名 实例100 如何在文件打开对话框中选择多个文件 实例101 如何定制文件打开和关闭对话框 实例102 如何修改文件打开对话框的按钮标题 实例103 如何使用查找替换对话框 实例104 如何获取和设置当前目录 实例105 如何判断文件类型 实例106 如何获取系统所有文件类型 实例107 如何获取和设置文件属性 实例108 如何获取和设置文件时间属性 实例109 如何对文件名函数进行操作 实例110 如何读写文本文件 实例111 如何打印文本文件 实例112 如何创建特大型文件 实例113 如何制作临时文件 实例114 如何启动帮助文件 实例115 如何使用组件在主机问传送文件 实例116 如何对文件进行编码和解码 实例117 如何设置RichEdit组件的存盘格式 实例118 如何在WIN.INI文件中保存程序信息 实例119 如何将数据转换成Word文档格式 实例120 如何直接从Excel文件导入数据 实例121 如何直接将数据导入到Excel文件 实例122 如何发送电子邮件(一) 实例123 如何发送电子邮件(二)
第1章 制作一个简单的计算器  1.1 基础知识  1.1.1 C++ Builder的集成开发环境   1.1.2 C++ Builder控件的使用方法  1.1.3 有关计算器制作中用到控件的介绍  1.2 编程思路  1.3 操作步骤  1.4 创意超越  1,5 本章小结 第2章 单窗口文本编辑器  2.1 基础知识  2.1.1 TOpenDialog控件和TsaveDialog控件的属性   2.1.2 控件的方法和事件  2.2 编程思路  2.3 操作步骤 2.4 创意超越 2.5 本章小结 第3章 MDI窗体应用程序 3.1 基础知识 3.1.1 主窗体和子窗体间的通讯 3.1.2 主菜单和子菜单的融合 3.1.3 Dialog控件系列介绍 3.2 编程思路 3.3 操作步骤 3.4 创意超越 3.5 本章小结 第4章 剪贴板查看器 4.1 基础知识 4.1.1 控件的属性设置 4.1.2 事件处理 4.2 编程思路 4.3 操作步骤 4.4 创意超越 4.5 本章小结 第5章 我的资源管理器 5.1 基础知识 5.1.1 TreeView控件 5.1.2 ListView控件 5.2 编程思路 5.3 操作步骤 5.4 创意超越 55 本章小结 第6章 系统文件浏览器 6.1 基础知识 6.1.1 注册表和 INI文件简介 6.1.2 TRegistryIniFile的属性和方法 6.2 编程思路 6.3 操作步骤 6.4 创意超越 6.5 本章小结 第7章 绘制一个简单的图表 7.1 基础知识 7.2 编程思路 7.3 操作步骤 7.4 创意超越 7.5 本章小结 第8章 图像编辑器 8.1 基础知识 8.2 编程思路 8.3 操作步骤 8.4 创意超越 8.5 本章小结 第9章 制作一个简单的播放器 9.1 基础知识 9.1.1 AutoEnable属性 9.1.2 Display属性 9.1.3 Fileplayer属性 9.1.4 FileName属性 9.1.5 DeviceType属性 9.1.6 EnabledButton属性 9.2 编程思路 9.3 操作步骤 9.4 创意超越 9.5 本章小结 第10章 二维图像处理器 10.1 基础知识 10.1.1 OpenGL的工作顺序 10.1.2 程序的基本结构 10.2 编程思路 10.2.1 OpenGL应用程序库 10.2.2 OpenGL对windows系统的扩展库函数 10.2.3 OpenGL辅助函数库 10.3 操作步骤 10.4 创意超越 10.5 本章小结 第11章 二人对战五子棋 11.1 基础知识 11.1.1 游戏界面设计 11.1.2 游戏所使用的数据结构和算法 11.1.3 TDrawGrid组件的介绍 11.1.4 TTimer组件的使用 11.2 编程思路 11.2.1 TDrawGrid的应用 11.2.2 计时功能 11.3 操作步骤 11.4 创意超越 11.4.1 数据结构 11.4.2 程序流程 11.5 本章小结 第12章 学生资料管理程序 12.1 基础知识 12.1.1 数据库基本知识 12.1.2 访问数据库的基本途径 12.2 编程思路 12.3 操作步骤 12.4 创意超越 12.4.1 中文数据库的字段名 12.4.2 中文输入法的自动切换 12.4.3 对TDBNavigator组件的修改 12.5 本章小节 第13章 高级学生资料管理程序 13.1 基础知识 13.1.1 TQuery组件TTable的比较 13.1.2 SQL语言简介 13.1.3 TDBChart组件的使用 13.2 编程思路 13.3 操作步骤 13.4 创意超越 13.5 本章小结 第14章 多媒体数据库的开发 14.1 基础知识 14.1.1 多媒体数据的特点及处理方法 14.1.2 以文件方式保存和播放多媒体数据 14.1.3 以数据方式保存和播放多媒体数据 14.1.4 TOleCont
本书特色 本书具有下面的一些特色: (1) 例程精练、实用、完整,易于查找本书的例程丰富,短小精练。在每章的前面部分,以一定的篇幅对基本理论、知识要点等进行论述;然后以经典的例程加以说明;最后对例程进行分析和总结。书中的例程完整,并全部按照章号进行了编号。在随书的光盘中有这些例程的源代码和编译、链接后的可执行文件。读者可以使用随书光盘中的“复制”程序(可执行文件为D5Samples.exe)将例程复制到硬盘的指定位置,也可以通过资源管理器进行复制。另外,对于每个例程都指定了若乾个关键字,可以根据关键字查找相关知识点的例程。 (2) 编程技巧丰富作者将自己在开发程序过程中总结、收集的经验和教训、一些读者在编程过程中遇到的问题等融合在本书中,并且将这些编程技巧尽量独立,便于读者快速查找。 (3) 内容广泛,兼容性强本书几乎涉及了C++Builder编程的所有领域,不仅适用于C++Builder 5,而且也适用于C++Builder 4和C++Builder 3等以前的版本。 (4) 体现了面向对象的技术和软件工程化的思想本书从总体上体现了面向对象程序设计的方法,同时将软件工程化的思想融于其中。 内容编排本书主要分为下面的六个部分: 第一部分 C++Builder编程基础 C++ Builder编程基础包括:C++Builder集成开发环境的介绍和C++语言的关键技术。 第二部分 C++Builder编程通用技术 C++ Builder编程核心技能包括:窗体和组件、菜单、工具栏和状态栏、键盘和鼠标、文件、目录和驱动器以及打印等。 第三部分 C++Builder高级编程技术 C++Builder 高级编程技术包括:数据共享、操作注册表、帮助系统的制作、安装卸载、多线程应用程序、动态链接库和图形多媒体等技术。 第四部分 数据库编程数据库编程部分包括:关系数据库、数据库组件、InterBase服务器、OLE DB/ADO和Web数据库等。 第五部分 组件对象模型(COM) 组件对象模型(COM)包括:COM和OLE自动化等内容。 第六部分 分布式程序设计分布式程序设计包括:DCOM、MIDAS、ActiveForm、CORBA分布式应用程序,以及其他的一些编程方法技巧。 阅读建议: 对于C++Builder的初学者,可以按顺序进行阅读。如果读者对C++语言有一定的了解,也可以直接从第二部分开始,待使用C++Builder编程有了一定的经验后,再回过头来看看第一部分的内容。对于C++Builder的中级用户,可以按章节顺序阅读、上机,也可以直接挑选感兴趣的章节学习。值得注意的是,第一部分的内容对使用C++语言进行软件开发非常有用,一定要掌握好。对于C++Builder的高级用户,可以直接挑选感兴趣的章节阅读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值