社区
C++ Builder
帖子详情
对插件感兴趣的进来一下
MEFULEU
2006-02-22 10:51:11
某一程序,想添加一些新的功能,现在已经使用DLL来实现了新的功能,
使用这种方法似乎每次新增功能都必须重新的编译主程序才可以;
看了看有些说明说使用插件可以不用重新编译主程序,
那么问题来了:
我看很多的插件例子调用时都是像DLL一样加载,究竟怎么加载才可以一劳百逸呢?
就是一句话,我不想每次都编译源程序;直接添加一个DLL都相应目录即可;
那么怎么主程序加载插件过程究竟怎么写才可以???????????????????
...全文
198
15
打赏
收藏
对插件感兴趣的进来一下
某一程序,想添加一些新的功能,现在已经使用DLL来实现了新的功能, 使用这种方法似乎每次新增功能都必须重新的编译主程序才可以; 看了看有些说明说使用插件可以不用重新编译主程序, 那么问题来了: 我看很多的插件例子调用时都是像DLL一样加载,究竟怎么加载才可以一劳百逸呢? 就是一句话,我不想每次都编译源程序;直接添加一个DLL都相应目录即可; 那么怎么主程序加载插件过程究竟怎么写才可以???????????????????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
MEFULEU
2006-02-23
打赏
举报
回复
下了那个spywin看了看才发现自己编程才接触冰山一角;
惭愧!!!!!!!!!!!111!!!
MEFULEU
2006-02-23
打赏
举报
回复
a,b,c,d,e,f
诸类DLL一样的输出接口,那么也就是说在主程序每个角落都要进行判断调用一下了?
假设我有N个子窗口,每个字窗口都要调用一下这些接口函数?
那么对应于每个子窗口来说也必须要调用预定义好的DLL??---是不是就是说预留接口?
可是这样子怎么知道那个DLL是他的?
另外既然开始已经知道了开始要调用什么东西?干吗我在后边再重新的搞什么插件????
constantine
2006-02-23
打赏
举报
回复
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#pragma argsused
extern "C" __declspec(dllexport)
void __stdcall GetPlugInEffectName(LPTSTR Effect,LPTSTR Info);
extern "C" __declspec(dllexport)
void __stdcall DoEffect(Graphics::TBitmap *Bmp);
struct RGB
{
byte BlueColor;
byte GreenColor;
byte RedColor;
};
//--------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
void __stdcall GetPlugInEffectName(LPTSTR Effect,LPTSTR Info)
{
strcpy(Effect,"旋转180度");
strcpy(Info,"Rotate180 Plug-In v1.0 [Rotate180.DLL]");
}
void __stdcall DoEffect(Graphics::TBitmap *Bmp)
{
Graphics::TBitmap *Bmp1;
TRect MyRect, MyOther;
MyRect = Rect(Bmp->Width,Bmp->Height,0,0);
MyOther = Rect(0,0,Bmp->Width,Bmp->Height);
Bmp1=new Graphics::TBitmap;
Bmp1->Width=Bmp->Width;
Bmp1->Height=Bmp->Height;
Bmp1->Canvas->Draw(0,0,Bmp);
Bmp->Canvas->CopyRect(MyOther, Bmp1->Canvas, MyRect);
delete Bmp1;
}
一个简单的例子GetPlugInEffectName,DoEffect 这2个函数是每个插件都有的,不管你调用那个dll,都是这2个函数,通过第一个知道插件的作用,使用的时候就调用第二个函数,调用都用动态调用,这个相信你一定会
dll的名字可以用ini记录,注册表也可以,或者放在同一个目录下,每次启动就遍历一下目录下面所有的*.dll,这样就知道有那些dll文件,就这么简单
constantine
2006-02-23
打赏
举报
回复
简单点说,这些dll的输出函数是一样的,一样的名字,一样的参数,一样的返回值,不过函数实现的内容不一样,dll文件的名字不一样,如果你知道有多少个dll了,你当然调用几次就可以了
这么调用就不用说了
如果实在还不明白就说一下,我回去给你copy个例子过来,上面说的书好像后面还有“技术”2字
在里面介绍图像编程那一章就有代码
qybao
2006-02-23
打赏
举报
回复
我是这么想的
1. 主程序从配文件(如ini)或注册表中载入dll
2. 每个dll都有相同的接口(函数参数,返回类型一致)
3. 主程序根据具体逻辑需要,调用不同的dll(接口都是一样的,只是载入的dll不同,主程序可以不用重新编译,只需要发布dll的时候,重新修改一下配置文件或注册表就可以)
constantine
2006-02-23
打赏
举报
回复
添加插件的模板不是你自己规定的吗,你要这么写就这么写,以后插件都要按照他的样子来做,
实际上就是知道有多少个dll,然后调用就行了,因为每个dll的接口都是一样的
你可以看看C++builder 高级编程 里面有例子
cczlp
2006-02-23
打赏
举报
回复
到老妖网站www.ccrun.com下载个Spy4win, 里面有说明和例子.
cczlp
2006-02-22
打赏
举报
回复
函数接口是固定的, 调用就行
奥爸
2006-02-22
打赏
举报
回复
用工厂模式, 插件的接口都定义好
1: 每生成一个插件的dll,把dll的名字都象主程序注册一下,放配置文件或者注册表等等之中.
2: 主程序 根据注册的dll的名称调用不同的dll,调用该dll的函数跟你返回插件的实例
MEFULEU
2006-02-22
打赏
举报
回复
我看过Aweay提供的MySpy插件膜板,可是没有怎么说明主程序怎么加载插件的;
这样子,就算我添加了一个调用新的窗口的过程,他里边也不知道去那调用阿?
难道我查找他的窗口句柄?然后动态生成按钮?
constantine
2006-02-22
打赏
举报
回复
就如不惑说的,
你看看ccrun那个工具里面的文件吧,里面有说这么帮他的工具写插件的,就是一样的接口
然后自己判断有多少个dll,所有dll的调用都一个样
sanyou98
2006-02-22
打赏
举报
回复
up
奥爸
2006-02-22
打赏
举报
回复
把 活的东西都定义成接口, 主程序只是一个框架.
菜单什么的,把菜单句柄传递给插件,让插件去实现,其余的都类似了.只能把活的东西都拿走,让插件去实现
MEFULEU
2006-02-22
打赏
举报
回复
to:cczlp(不惑)
函数接口怎么会固定的?
那么我第一次想在主程序实现多添加一个菜单。
第二次我想在主程序调用出来的某个页面添加一些参数设定页面;
第三次我想在主程序某个地方多添加一个工具按钮;
那么是不是说,一开始主程序就必须考虑到这些东西;
这个好像有些.......有些不知道如何实现阿???
netsys2
2006-02-22
打赏
举报
回复
没插过,帮顶
10个你可能会
感兴趣
的jQuery
插件
本文回顾了2011年8月流行的jQuery
插件
,包括进度条动画、图片放大、滚动器、提醒气泡、气泡效果、链接预览、虚拟笔记本、组合网格、微调按钮和Ajax图片上传等。
编写 Maven
插件
,以及 Maven
插件
默认绑定 phase 的原理
本文详细介绍了如何编写一个Maven
插件
,包括设置默认phase、添加参数和配置,以及在项目中查看绑定的phase方法。通过实例展示了如何安装、使用并配置自定义
插件
,适合对Maven
插件
感兴趣
的开发者。
chrome安装
插件
方法,例如 安装ModHeader
插件
本文介绍了如何在Chrome浏览器中下载并成功安装ModHeader
插件
,提供了一个详细的步骤教程,适用于对
插件
管理
感兴趣
的读者。
Nacos2.2使用PostgreSQL数据源
插件
存储数据手把手教程
本文详细介绍了如何在Nacos 2.2环境中部署PostgreSQL
插件
,包括数据库安装、配置调整、
插件
引入及测试,展示了如何将配置存储于PostgreSQL,适合对Nacos扩展
感兴趣
的开发者。
SU
插件
情报局 | SketchyFFD 形体变形工具详解(附
插件
获取)
本文介绍了SketchyFFD
插件
,它是SketchUp中的一款形体变形工具,类似于3DS MAX的FFD功能。通过调整控制点,用户可以对模型进行自由变形。文章提供了
插件
的安装包下载链接,并鼓励对形体变形
感兴趣
的读者进一步探索SU
插件
情报局。
C++ Builder
13,874
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章