2009-12-03 2 views
1

플러그인으로 작업하는 응용 프로그램을 빌드 중입니다. 우수한 JVCL 플러그인 프레임 워크를 사용하고 있습니다. 먼저 패키지 플러그인을 사용하기 시작했습니다. 그것은 매력처럼 작동했지만 큰 단점을 가지고 있습니다 : 런타임에 bpl (23Mo)을 줄 필요가 있습니다. 그래서 나는 DLL 플러그인으로 전환한다.DLL 내 콜백 메소드 구현 방법 (Delphi/TJVPluginManager + TJvPlugin)

hostapplication에서 메서드 (3 개의 매개 변수가있는 프로 시저)를 호출해야하지만 어떻게해야할지 모르겠다. Obones는 Jedi newgroup에서 콜백 함수를 사용하도록 설명했지만이를 달성하는 방법에 대한 단서가 없습니다.

나를 친절하게 설명해 주실 수 있습니까? 예를 들어 보시겠습니까? JVCL 1SimplePlugin 데모를 가져 와서 업데이트 할 수 있습니다.

스테판 쥬 비츠

답변

3

이 기본 개념은 아주 간단 BR

사전에

감사합니다. 콜백 메소드는 특정 시간에 코드를 호출하여 해당 동작을 사용자 정의 할 수 있도록 일부 코드에 전달하는 메소드에 대한 포인터입니다. Delphi에 대한 경험이 있다면 "이벤트 처리기"라는 다른 이름으로 콜백 메소드에 익숙합니다. 플러그인이 같은

시도 뭔가 :

type 
    TMyEvent = procedure(param1, param2, param3: integer) of object; 

procedure AddCallback(callback: TMyEvent); 

이 절차는 전달 된 TMyEvent 방법 포인터를 타고 어딘가를 저장하는 것입니다. FCallback이라는 변수에서 가정 해 봅시다. 시간이 귀하의 응용 프로그램을 호출 할 그것을 위해 올 때, 코드는 다음과 같습니다

if assigned(FCallback) then 
    FCallback(param1, param2, param3); 

당신이 플러그인을 설정하는 경우는,이처럼 응용 프로그램에서 호출 것 :

MyPlugin.AddCallback(self.callbackProc); 

가끔 @ (self.callbackProc) 앞에 @를 써야 할 필요가 있기 때문에 컴파일러는 메쏘드 포인터가 아니라 메소드 호출임을 알 수 있습니다. 그러나 이것이 항상 필요한 것은 아닙니다.

+0

감사합니다.하지만 JvPlugin 프레임 워크를 사용하여 구현하는 방법에 대한 단서가 없습니다. 나는 정확하게 이것을 선언하는 방법을 찾으려고 노력 중이다. - JVPlugin (선언 섹션에서 AddCallback 프로 시저를 선언하는 방법). - 내 HostApplication (예를 들어 AddCallback 프로 시저를 호출하는 방법) –

+0

OBones가 jvplugin 프레임 워크에서 이것을 구현할 예정입니까? –

+0

JVCL 뉴스 그룹을 확인하십시오. "TJvPlugin에서 호스트로 메시지를 보내는 가장 좋은 방법은 무엇입니까?" 2009 년 2 월 3 일자 –

관련 문제