社区
C++ Builder
帖子详情
如何调用dll里面的窗体?
KimLeo
2006-09-28 11:47:32
dll里怎么设计啊?谁能给个例子。一个窗体一个按键,返回一个int就可以了。
谢谢。。。。
...全文
214
12
打赏
收藏
如何调用dll里面的窗体?
dll里怎么设计啊?谁能给个例子。一个窗体一个按键,返回一个int就可以了。 谢谢。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
KimLeo
2006-09-29
打赏
举报
回复
BlueDeepOcean(蓝色·深海) ( ) 信誉:100 Blog 2006-09-28 17:07:00 得分: 0
我晕死。你如果调用动态生成的窗体,则所有动态组件的事件也需要自定义的。没有自定义,怎么能够让它动作呢?
哈哈,我说得真不清楚,不过我已经在网上找到我所需要的例子了
建立vcl的dll
选c++ 和 Use VCL。
加入新的窗体,并在dll的dll.cpp文件里加上该窗体的头文件NewForm.h
可以在NewForm里面象其它窗体一样加载控件。。(其实我要的是这个功能。。。嘻嘻。。。
在NewFOrm.h中,加入
***********************************************************
extern "C" __declspec(dllexport) void __stdcall NewForm();
***********************************************************
在dll.cpp里加入
***********************************************************
void __stdcall NewForm()
{
TNewFOrm *fm = new TNewFOrm(NULL);
fm->ShowModal();
delete fm;
fm=NULL;
}
***********************************************************
jaffy
2006-09-29
打赏
举报
回复
他希望窗体设计可以由IDE来完成
KimLeo
2006-09-28
打赏
举报
回复
不好意思。。。我没有说清楚!!!
调用dll里面的窗体,窗体包含一个按键,返回int。。。
BlueDeepOcean
2006-09-28
打赏
举报
回复
http://community.csdn.net/Expert/topic/4949/4949455.xml?temp=.9093897
http://community.csdn.net/Expert/topic/4842/4842059.xml?temp=.133877
BlueDeepOcean
2006-09-28
打赏
举报
回复
我晕死。你如果调用动态生成的窗体,则所有动态组件的事件也需要自定义的。没有自定义,怎么能够让它动作呢?
KimLeo
2006-09-28
打赏
举报
回复
或者使用 fm->ShowModal();
也就只是显示Form2大小的空白窗体啊,里面的button及它的其他事件都没有了。
BlueDeepOcean
2006-09-28
打赏
举报
回复
啊,我看错了,以为说我。楼主的调用出现问题了,你既然已经delete了,那怎么还能存在窗体呢?!
BlueDeepOcean
2006-09-28
打赏
举报
回复
我哪里delete了?你看看好再说:
extern "C" __declspec(dllexport) int __stdcall MyDLLFunc(void)
{
int i = 0;
TForm *dynamic_form = new TForm(Application);
dynamic_form->Caption = "Dynamic Form";
dynamic_form->Width = 100;
dynamic_form->Height = 100;
dynamic_form->Left = 100;
dynamic_form->Top = 100;
i ++;
TButton *dynamic_button = new TButton(Application);
dynamic_button->Parent = dynamic_form;
dynamic_button->Caption = "Dynamic Button";
dynamic_button->Width = 50;
dynamic_button->Left = 25;
dynamic_button->Show();
dynamic_form->Show();
i ++;
return i;
}
BenLeak
2006-09-28
打赏
举报
回复
extern "C" __declspec(dllexport) int __stdcall MyDLLFunc(void)
{
TForm *fm = new TForm(TForm2);
fm->Show();
delete fm;
fm=NULL;
return 2;
}
一调用,只见一闪而过。。。我是菜鸟来的,我想用已经建好了的窗体,xixi....
new/show 没有问题,但是你马上就 delete 了,肯定是一闪而过
你有两种方式修改:删除代码中的的
delete fm;
fm=NULL;(需要在Form 的FormClose函数中加上 Action = caFree; )
或者使用 fm->ShowModal();
BlueDeepOcean
2006-09-28
打赏
举报
回复
晕!
你那是什么呀!你调用错了!
上面的写在DLL中,后面的调用过程写在一个窗体的按钮事件中。
KimLeo
2006-09-28
打赏
举报
回复
extern "C" __declspec(dllexport) int __stdcall MyDLLFunc(void)
{
int i = 0;
TForm *dynamic_form = new TForm(Application);
dynamic_form->Caption = "Dynamic Form";
dynamic_form->Width = 100;
dynamic_form->Height = 100;
dynamic_form->Left = 100;
dynamic_form->Top = 100;
i ++;
TButton *dynamic_button = new TButton(Application);
dynamic_button->Parent = dynamic_form;
dynamic_button->Caption = "Dynamic Button";
dynamic_button->Width = 50;
dynamic_button->Left = 25;
dynamic_button->Show();
dynamic_form->Show();
i ++;
return i;
}
比如我的Form2已经建好了。。。
extern "C" __declspec(dllexport) int __stdcall MyDLLFunc(void)
{
TForm *fm = new TForm(TForm2);
fm->Show();
delete fm;
fm=NULL;
return 2;
}
一调用,只见一闪而过。。。我是菜鸟来的,我想用已经建好了的窗体,xixi....
BlueDeepOcean
2006-09-28
打赏
举报
回复
DLL
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
extern "C" __declspec(dllexport) int __stdcall MyDLLFunc(void)
{
int i = 0;
TForm *dynamic_form = new TForm(Application);
dynamic_form->Caption = "Dynamic Form";
dynamic_form->Width = 100;
dynamic_form->Height = 100;
dynamic_form->Left = 100;
dynamic_form->Top = 100;
i ++;
TButton *dynamic_button = new TButton(Application);
dynamic_button->Parent = dynamic_form;
dynamic_button->Caption = "Dynamic Button";
dynamic_button->Width = 50;
dynamic_button->Left = 25;
dynamic_button->Show();
dynamic_form->Show();
i ++;
return i;
}
调用:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int j;
typedef int __stdcall (*MyDLLFunc)();
HMODULE hModule = LoadLibrary(AnsiString("Project1.dll").c_str());
if (hModule)
{
MyDLLFunc t = (MyDLLFunc)GetProcAddress(hModule,"MyDLLFunc");
j = t();
}
ShowMessage (j);
}
//---------------------------------------------------------------------------
Delphi
调用
DLL
文件里的
窗体
Delphi
调用
DLL
文件里的
窗体
在我们写程序时候,有些
窗体
要重复使用,最好就是把这些
窗体
写到一个
DLL
文件里去,这样就比较方便
调用
,下面的演示如何
调用
DLL
文件里的
窗体
。
DLL
文件 {*******************************************************} {
C#
窗体
封装为
dll
,并在新的
窗体
中
调用
1、将
窗体
封装为
dll
: 右击应用程序--->属性--->应用程序(输出类型)--->类库;点击“保存”,右击应用程序--->生成,此时Debug目录下多了一个主程序同名
dll
; 2、将此
dll
复制到新
窗体
Debug目录下; 3、新
窗体
应用程序右键点击添加--->引用,找到
dll
点击确定; 新的
窗体
程序,加一个按钮控件,控件程序填写如下(其中Form...
创建&
调用
Dll
窗体
Dll
代码 ****************************************************************************************************************************************** library
Dll
test; { Important note about
DLL
memory
Delphi中
DLL
窗体
调用
实践指南
动态链接库(Dynamic Link Library,
DLL
)是Windows操作系统中的一种实现共享函数库的方式。
DLL
可以包含可由多个程序同时使用的代码和数据,当多个应用程序使用同一个
DLL
时,该
DLL
仅在内存中加载一次,从而节省资源。
DLL
对于实现模块化编程、代码复用以及软件维护和升级都起着至关重要的作用。创建
DLL
的第一步是使用Delphi提供的
DLL
模板。模板是一种预设的代码结构,它为开发人员提供了一个快速启动项目的起点。
DLL
封装
窗体
方法并实现C#
调用
用DELPHI创建
DLL
文件,封装
窗体
的实现方法实例: 即一个程序不再是单一的一个EXE文件了,而是由一个EXE文件加N个
DLL
文件组成,这样做的原因是方便以后的维护与更新,也是跨平台开发的重要一步。 1、打开DELPHI,新建一个
Dll
Wizard 2、在新建的
Dll
里新建一个Form 3、在新建的Form里uses stdctrls 4、在var下面写: Procedure SynAPP(App:THandle);stdcall; Procedure ShowForm;stdcall; (注:如
C++ Builder
13,872
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章