Форум: "Основная";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
ВнизВопрос про плагины (компонент TJvPlugin) Найти похожие ветки
← →
NeyroSpace © (2006-11-27 15:14) [0]Имеем демо-код небольшого плагина в виде DLL.
{---SamplePluginOne.dpr---}
library SamplePluginOne;
uses
ShareMem,
SamplePluginOneU in "SamplePluginOneU.pas" {SampleUILPlugin: TJvPlugin};
exports
RegisterPlugin;
begin
end.
{---SamplePluginOneU.pas---}
unit SamplePluginOneU;
interface
uses
Windows,
Messages,
SysUtils,
Classes,
Dialogs,
Forms,
JvPlugin;
type
TSampleUILPlugin = class(TJvPlugin)
procedure uilPlugin1Commands0Execute(Sender: TObject);
procedure uilPlugin1Commands1Execute(Sender: TObject);
procedure uilPlugin1Commands2Execute(Sender: TObject);
procedure uilPlugin1PluginMessage(Sender: TObject; APluginMessage: Integer; AMessageText: string);
procedure uilPlugin1Configure(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function RegisterPlugin: TSampleUILPlugin; stdcall;
implementation
{$R *.DFM}
// IMPORTANT NOTE: If you change the name of the Plugin container,
// you must set the type below to the same type. (Delphi changes
// the declaration, but not the procedure itself. Both the return
// type and the type created must be the same as the declared type above.
function RegisterPlugin: TSampleUILPlugin;
begin
Result := TSampleUILPlugin.Create(nil);
end;
procedure TSampleUILPlugin.uilPlugin1Commands0Execute(Sender: TObject);
begin
ShowMessage("Command One clicked");
end;
procedure TSampleUILPlugin.uilPlugin1Commands1Execute(Sender: TObject);
begin
ShowMessage("Command Two clicked");
end;
procedure TSampleUILPlugin.uilPlugin1Commands2Execute(Sender: TObject);
begin
ShowMessage("Command Three clicked");
end;
procedure TSampleUILPlugin.uilPlugin1PluginMessage(Sender: TObject;
APluginMessage: Integer; AMessageText: string);
begin
ShowMessage(Format("Plugin Message number %d received. MessageText: %s", [APluginMessage, AMessageText]));
end;
procedure TSampleUILPlugin.uilPlugin1Configure(Sender: TObject);
begin
ShowMessage("You could put a configuration dialog here, if your plugin requires one.");
end;
end.
//-------
Собственно говоря DLL-плагин экспортирует одну ф-цию function RegisterPlugin: TSampleUILPlugin; stdcall;
т.е. при вызове этой ф-ции главная программа получает указатель на класс плагина. Я так понимаю написать плагин с таким классом на VC++ нельзя? Ведь в VC++ классы имеют совершенно дугую внутреннюю структуру? Или я ошибаюсь?
← →
Сергей М. © (2006-11-27 16:14) [1]
> Или я ошибаюсь?
Нет, не ошибаешься.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c