⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lc_bcb_20.txt

📁 c++ builder 的一些txt文档
💻 TXT
字号:

在BCB3中混用VCL&MFC
在C++Builder3.0下混用两大ApplicationFrameworkVCL&MFC
[摘自水木清华站]
混用VCL与MFC的确是个不错的选择,但是、相对的,你的程式复杂度反而会提高。
在此先假设你已经看过『在C++Builder3.0下编译含有MFC的程式』这一篇文章了。因此一些基本知识就不在重复叙述了。
为了讨论这个题目,我决定采用范例实作的方式来做解说:
Step1.
先用你知道的方法来建立一个空的、且可以正确编译MFC的Project(不懂的可以参考『如何在C++Builder3.0下编译含有的程式』这篇文章)。在此先假设此Project名称为Project1,而MainForm为Form1,MainForm的档案为
unit1.cpp,皆以BCB3.0产生的为预设值,因此这时候你应该会有下列这些档案了:
Project1.bpr
Project1.cpp
Unit1.cpp
Unit1.h
Unit1.dfm
Step2.
在这个范例中,我决定采用两个MFC的类别(Class)来与C++Builder的VCL混用,而这两个类别分别是CFileDialog与CPoint。
OK,知道了这些後,我们先Design一些东西在Form上来使用MFC的类别吧!
先置放两个Label元件与一个Button元件,如下图:
Step3.
紧接著就是开始动手加入所们所要的MFCcode啦,不过在此之前,先必须将MFC用的宣告档给加进来:
//---------------------------------------------------------------------------
#include<afxwin.h>
#include<Afxdlgs.h>
#include<vcl.h>
不过要注意的是,MFC所用的Header档要先於#include<vcl.h>之前喔!否则,你一定会在编译时得到一大堆的Error!
Step4.
当Header档给设定好後,我们开始来作VCL与MFC的混用吧!
我们先来使用CPoint这个类别吧!
先为Form建立OnMouseMove的个事件,并加入以下这些Code:
void__fastcallTForm1::FormMouseMove(TObject*Sender,TShiftStateShift,
intX,intY)
{
CPointPs;
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的混用呢?
Step5.
嗯,接著我们就再来实作CFileDialog类别在BCB下使用先为Form上的Button建立OnClick这个Event,并加入以下这些
Code:
void__fastcallTForm1::Button1Click(TObject*Sender)
{
CFileDialogdlg(TRUE,"CPP","*.CPP",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_T("C++SourceFile(*.cpp)"));
if(dlg.DoModal()==IDOK)
{
Label2->Caption=(AnsiString)dlg.GetPathName();
}
}
一样的,在编译时会得到许多warning,但是编译完成後,按下此Button你将会得到与使用VCL中的TOpenDialog类别相同的画面,当你选择好档案後Form上的Label2也会换成你所选择的档案名称了,这样
一来CFileDialog与VCL的混用也一样成功了。
执行结果
范例程式:
不可不知道
这个范例中,你可以学到MFC与VCL的混用。但是,还遗留的一些问题等待解决,如那些编译时的warning应该如何解决呢?以我的习惯来说,我是不会让编译器告诉我写的程式有任何的警告发出的。该怎麽解决的?
聪明的读者,动动脑吧!
返回

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -