龙人在线
about me

Arron

抛砖只为引玉(QQ长期隐身在线)
不能富贵难成大器皆因懒,
胸无大志庸庸碌碌只为闲。

这里是我平时收集的和写的一些东西,希望和大家一起共同进步!

无聊看看电影 边听音乐边看 有空多交流
Google_search
Google
hot
latest
photos
还你真实的开幕式!震撼美图[转]【连载】 央行今日发行600万张面额10元奥运纪念钞(组图) 巧遇日本妹妹海滩拍片片 诱不可挡超级丰胸大美人
links
龙人在线 >> 学习资料 >> Delphi专栏 >> VC和Delphi的混合编程

VC和Delphi的混合编程

来源:来自网络 作者:不详 日期:2010-11-29 热度:

    VC的MFC大框架非常的完美,开发程序功能强大,几乎没有他做不了的事。但经常使用他的朋友们,一定对他的控件深有感触,控件太少,功能不够,不灵活,界面不漂亮。而DELPHI的控件丰富,功能强大,可扩展性强。如果在开发程序时,主程序用VC开发,界面操作利用delphi强大的控件,真是使VC如虎添翼。事半功倍。如何使VC和delphi完美的结合呢?答案是:利用动态链接库(DLL)。故本文提出的用delphi编制DLL,由VC来调用。使两者完美结合。

一。delphi的DLL的实现。

1.首先用delphi的“DLL Wizard”生成DLL的工程Test。添加一个form,根据您的需要在对话框上添加几个控件。在工程文件中添加DlgShow过程,用于弹出对话框。工程源代码如下:

//Test工程文件源代码

library Test; uses   SysUtils,   Classes,  

Unit1 in 'Unit1.pas' {Form1};

procedure DlgShow;stdcall;export;

begin    

      form1 := TForm1.Create(nil);    

      form1.ShowModal;   

      form1.Free;

end;

exports     DlgShow Index 1name 'DlgShow';

begin

end.

注意:DlgShow文件声明时后面必须带stdcall和export,否则VC将不能正常调用。在exports的后面添加输出文件的声明, 您可以指定索引号,并重新命名,如果有多个函数,之间要用“,”分开。编译生成Test.dll。

二。VC编程调用DLL

对DLL的调用,本文中是用动态加载的方式。用VC6.0生成一个基于对话框的工程。在对话框上添加一个按钮,在按钮的单击消息函数中,加入如下代码:

void CTestDlg::OnButton1()

{

        typedef void (*fun)(void); 

        fun f; 

        HINSTANCE hDLL = LoadLibrary("Test.dll");

        if ( hDLL!=NULL ) 

        {  

              f = (fun)GetProcAddress(hDLL, "DlgShow");  

              f();   

              FreeLibrary(hDLL);  

        }

}

将上面生成的Test.dll手动拷贝到新工程的DEBUG目录下,编译执行VC程序,在对话框中,点击按钮,可以看到我们在DELPHI中编辑的对话框界面,测试各项功能,没有问题,大功告成。 注意:首先在函数的开始声明了一个函数的指针,然后加载Test.dll,找到函数的地址,并赋给f,执行,最后卸载Test.dll,完成DLL的调用。读者也可以扩展成静态的加载方式.

Tags: Delphi
广告位招租,广告代号:gg468
Class Navigation
search
站内
advertise
Copyright © www.jx19.Com All rights reserved.