发信人: lofe ()感激生活(), 信区: BorlandDev
标 题: bcb 中vcl 和 mfc混用
发信站: 哈工大紫丁香 (Sun Sep 3 07:58:14 2000), 转信
混用 VCL 与 MFC 的确是个不错的选择,但是、相对的,你的程式复杂度反而会 提高
。
在此先假设你已经看过『在 C++ Builder 3.0下编译含有MFC 的程式』这一篇文 章了。
因此一些基本知识就不在重复叙述了。
为了讨论这个题目,我决定采用范例实作的方式来做解说:
Step 1.
先用你知道的方法来建立一个空的、且可以正确编译 MFC 的 Project (不懂的可 以参
考『如何在 C++ Builder 3.0下编译含有 的程式』这篇文章)。在此先假设 此 Proje
ct 名称为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 上的 Label
2 也会换成你所选择的档案名称了,这样
一来 CFileDialog 与 VCL 的混用也一样成功了。
--
--
人生得意需尽欢,
莫使金樽空对月。
※ 修改:.haojs 于 Sep 3 07:55:50 修改本文.[FROM: bbs.hit.edu.cn]
--
※ 转寄:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: bbs.hit.edu.cn]
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: haojs.bbs@bbs.whnet.]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.606毫秒