`
isiqi
  • 浏览: 16587873 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

[C++] 如何在 C++ Builder 3.0 下混用两大 Application Framework VCL & MFC?

阅读更多

混用 VCL MFC 的确是个不错的选择,但是、相对的,你的程序复杂度反而会提高。

在此先假设你已经看过『如何在 C++ Builder 3.0下编译含有MFC 的程序』这一篇文章了。因此一些基本知识就不在重复叙述了。

为了讨论这个题目,我决定采用范例实作的方式来做解说:

Step 1.
先用你知道的方法来建立一个空的、且可以正确编译 MFC 的 Project (不懂的可以参考『如何在 C++ Builder 3.0下编译含有MFC的程序』这篇文章)。在此先假设此 Project 名称为 Project1,而 MainForm 为 Form1 ,MainForm 的档案为 unit1.cpp,皆以 BCB 3.0 产生的为默认值,因此这时候你应该会有下列这些档案了:

Project1.bpr
Project1.cpp
Unit1.cpp
Unit1.h
Unit1.dfm


Step 2.
在这个范例中,我决定采用两个 MFC 的类别 (Class) 来与 C++ Builder 的 VCL 混用,而这两个类别分别是 CFileDialog 与 CPoint 。

OK,知道了这些后,我们先 Design 一些东西在 Form 上来使用 MFC 的类别吧!
先置放两个 Label 组件与一个 Button 组件

Step 3.
紧接着就是开始动手加入所们所要的 MFC code 啦,不过在此之前,先必须将 MFC 使用的宣告档给加进来:

//---------------------------------------------------------------------------
#include <afxwin.h>
#include <Afxdlgs.h>
#include <vcl.h>


不过要注意的是, MFC 所用的 Header 档要先于 #include <vcl.h> 之前喔!否则,你一定会在编译时得到一大堆的 Error !

Step 4.
当 Header 档给设定好后,我们开始来作 VCL 与 MFC 的混用吧!

我们先来使用 CPoint 这个类别吧!
先为 Form 建立 OnMouseMove 的个事件,并加入以下这些 Code :

void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
CPoint Ps;
Ps.x =X;
Ps.y =Y;
Label1->Caption = "X :" + (AnsiString)Ps.x + " Y :" + (AnsiString)Ps.y;
}


OK,这样一来就可以编译啦!不过你在编译时,准会得到一大堆 Warning ,这是因为 MFC 中的一些 Marco 与 BCB 的同样名字,所以啰,会得到这些 Warning 使很正常的啦!不过幸好只是 warning 而不是 error ,不然就不能编译成功了。

编译成功后,你可以发现当你移动鼠标时, From 上的 Label1 会一直秀出你现在的鼠标光标,这样一来,使用 CPoint 这个类别就算成功了。

过你或许会想,何不直接用原先传进来的 X 与 Y 就可以了,何必动用到 CPoint 这个类别呢?嘿嘿,如果你不用这样,怎么表现 MFC 与 VCL 的混用呢?


Step 5.

嗯,接着我们就再来实作 CFileDialog 类别在 BCB 下使用
先为 Form 上的 Button 建立 OnClick 这个 Event ,并加入以下这些 Code :

void __fastcall TForm1::Button1Click(TObject *Sender)
{

CFileDialog dlg( TRUE,"CPP","*.CPP",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_T("C++ Source File (*.cpp)"));

if( dlg.DoModal()==IDOK )
{
Label2->Caption = (AnsiString)dlg.GetPathName();
}
}

一样的,在编译时会得到许多 warning ,但是编译完成后,按下此 Button 你将会得到与使用 VCL 中的 TOpenDialog 类别相同的画面,当你选择好档案后 Form 上的 Label2 也会换成你所选择的文件名称了,这样一来 CFileDialog 与 VCL 的混用也一样成功了。

不可不知道

这个范例中,你可以学到 MFC VCL 的混用。但是,还遗留的一些问题等待解决,如那些编译时的 warning 应该如何解决呢?以我的习惯来说,我是不会让编译器告诉我写的程序有任何的警告发出的。该怎么解决的?聪明的读者,动动脑吧!

分享到:
评论

相关推荐

    borland c++ builder 3.0

    这些文件可能包含了使用该IDE开发的应用程序的源代码,通过它们,开发者可以学习到如何在Borland C++ Builder 3.0环境下组织代码、使用组件以及进行事件处理。 总的来说,Borland C++ Builder 3.0是一个集成了...

    C++程序设计技巧.chm

    混用两大 Application Framework VCL & MFC 使用WinInet类进行Internet编程 在C++ Builder3下实现程序自动运行的方法 让应用程序禁止Windows屏幕保护 巧妙保证程序只有一个实例打开 利用C++ Builder进行精确...

    在C++Builder6中编译MFC类

    在C++Builder6中编译MFC类是一个技术性较强的操作,它涉及到将Microsoft Foundation Class (MFC)库与Borland C++ Builder (BCB)的Visual Component Library (VCL)结合使用。MFC是微软提供的一个面向对象的C++库,...

    Borland.C++.Builder.3.0自学培训教程(PDG).rar

    《Borland C++ Builder 3.0 自学培训教程》是针对Borland公司推出的C++集成开发环境——C++ Builder 3.0的一款详细的学习资料。Borland C++ Builder是一款强大的可视化编程工具,它结合了C++语言的强大功能和Delphi...

    C++ builder之DevExpressVCL17.2.4界面控件安装

    ### C++ Builder之DevExpress VCL 17.2.4界面控件...通过以上详细介绍,相信您已经掌握了如何在C++Builder 10.2.2 Tokyo环境下安装并使用DevExpress VCL 17.2.4进行高效开发的方法。希望这些知识能对您的项目有所帮助。

    VCL SKIN BUILDER 3.0

    VCL Skin Builder 3.0 是一款专为 Win32 平台设计的界面皮肤编辑工具,主要用于创建和定制VCL(Visual Component Library)组件的皮肤。VCL 是 Delphi 和 C++Builder 开发环境中广泛使用的图形用户界面库,它提供了...

    C++ Builder和VC的比较

    C++ Builder的Application Framework是VCL,VCL全名是“Visual Component Library”,它是一种新一代的Application Framework,以元件化、视觉化为设计的方向。 VCL的兴起,起源於OWL和MFC都日见庞大与痴肥,不利於...

    DevExpress VCL for ( Dephi C++BUILDER ) EX6

    总结来说,DevExpress VCL for Delphi C++Builder EX6是一个针对这两个开发环境的高级组件集合,为开发者提供了丰富的UI控件和便捷的工程配置,使得在Delphi和C++Builder中创建功能丰富的桌面应用变得更加简单和高效...

    【群大礼-01】TeeChart VCL&FMX; Build 2017.21.170329_FS(付安装方法).rar

    TeeChart VCL&FMX Build 2017.21.170329是一款全面的图表组件库,适用于Delphi和C++Builder开发者,无论是桌面应用还是移动应用,都能提供卓越的数据可视化能力。其丰富的图表类型、强大的定制功能和高效的性能,...

    由C++Builder开发的网络五子棋游戏系统

    C++Builder是一款强大的集成开发环境,以其高效、灵活的C++编译器和丰富的VCL(Visual Component Library)组件库而受到开发者们的青睐。本系统利用C++Builder的特性,构建了一个网络五子棋游戏,不仅提供了基本的...

    C++程序设计技巧

    2000.11.4 混用两大 Application Framework VCL & MFC 使用WinInet类进行Internet编程 在C++ Builder3下实现程序自动运行的方法 让应用程序禁止Windows屏幕保护 巧妙保证程序只有一个实例打开 利用C++ Builder...

    C++builder VCL继承关系全图

    C++Builder是一款强大的集成开发环境,它为程序员提供了丰富的VCL(Visual Component Library)类库,使得在Windows平台上构建图形用户界面应用变得极其便捷。VCL是基于C++的类库,它对Windows API进行了封装,让...

    C++ Builder VCL库函数简介

    C++ Builder VCL 库函数简介 C++ Builder VCL 库函数简介是 Borland C++ Builder 的一个核心组件,提供了许多有用的函数来管理内存、文件操作、字符串处理等。下面我们将对 VCL 库函数进行详细的介绍。 内存管理...

    C++Builder 2007 soap/web service application

    1. **设置项目**:启动C++Builder 2007,创建一个新的VCL Forms Application项目,然后添加必要的控件和组件,如按钮、文本框等,用于与Web服务交互。 2. **生成或导入WSDL**:如果你已经有了一个Web服务的WSDL文件...

    c++builder6安装包

    2. **RAD(Rapid Application Development)工具**:C++Builder 6支持快速应用开发,允许开发者通过拖放控件到表单来创建应用程序的界面,极大提高了开发效率。 3. **C++编译器**:C++Builder 6内置的C++编译器支持...

    C++Builder5 and C++Builder6编程实例精解编程实例精解(包含 Builder6 PDF档).7z

    这两个版本在C++Builder的历史上扮演了重要角色,引入了许多新特性,优化了性能,并提供了丰富的组件库。 C++Builder5的主要特性包括: 1. **VCL(Visual Component Library)框架**:这是C++Builder的核心,提供...

    C++builder 10.2 (FMX或VCL)控件中显示opencv2的 IplImage图片.docx

    ### 在C++Builder 10.2中使用FMX或VCL控件显示OpenCV的IplImage #### 概述 本篇文章旨在探讨如何在C++Builder 10.2环境中利用FMX(FireMonkey)或VCL(Visual Component Library)控件来显示来自OpenCV库中的`...

    最新C++builder教程大全.pdf

    C++Builder是一款由Interprises(Borland)公司推出的基于C++语言的快速应用程序开发工具,专注于RAD(Rapid Application Development)。它集成了C++的强大功能与Delphi的可视化组件库VCL,以及Borland C++ 5.0...

    c++ builder 2007 安装程序

    2. **RAD(Rapid Application Development)开发**:C++ Builder 2007 提供了快速应用开发环境,允许开发者通过拖放控件和设置属性快速创建用户界面,大大提高了开发效率。 3. **C++ 编译器**:该版本的C++ Builder...

    C++ Builder VCL库函数学习

    ### C++ Builder VCL库函数学习 #### 一、BORLAND C++ BUILDER VCL的内存管理函数 在开发过程中,内存管理是非常重要的一个环节,它直接影响程序的稳定性和性能。下面详细介绍C++ Builder中VCL提供的几个常用内存...

Global site tag (gtag.js) - Google Analytics