社区
C++ Builder
帖子详情
如何调用dll里面的窗体?
KimLeo
2006-09-28 11:47:32
dll里怎么设计啊?谁能给个例子。一个窗体一个按键,返回一个int就可以了。
谢谢。。。。
...全文
184
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);
}
//---------------------------------------------------------------------------
DLL
动态加载 生成窗口的方法
或者
dll
封装函数,供主EXE
调用
接口函数。 再或者使用COM组件。 但是Windows程序经常有很多窗口,如何把窗口封装到
dll
中,并且能否动态加载。就不是MFC架构能解决了。 因为要用到扩展MFC导出
dll
类型,来导出窗口类...
QT生成带界面的
dll
给c#
调用
QtRelease
Dll
文件夹
里面
是最重要的qtdialog.
dll
以及他所依赖的所有的库;CsharpUseQt
Dll
文件夹
里面
是c#工程。 具体使用细节参见我的博客:https://blog.csdn.net/weixin_43935474/article/details/105531814
Windows进程常用
DLL
模块注入技术
进程调试级注入,涉及调试器相关功能
调用
知识点
dll
模块重定位内存注入,模拟操作系统加载PE文件方式,直接将
dll
文件内存数据写入目标进程并执行。 导入表注入,涉及PE相关知识点,增加区段,移动导入表,增加导入...
C# 嵌入式
调用
程序+多主
窗体
切换
C# 语言写的一个嵌入式
调用
程序的类,包含类源码+实例,
里面
我又增加了多个主
窗体
切换的方法,代码很简单,但是思路很好的,适合新手学习,总体还是比较简单
PB
调用
PB自己制作的COM组件
3、文件夹B下用ole方式
调用
这个
dll
,并
调用
里面
的方法,测试正常。 注意要点:经过测试可以
调用
普通函数取得返回值,而当
调用
函数中有open窗口的语句后,虽然也能打开窗口正常看到
窗体
中的控件,并且窗口的open事件...
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章