Q&A

  • DLL에 들어있는 form을 child로 띄우는 방법좀
안녕 하십니까 !

델파이 초보자로써 이런 곳을 보니 매우 기쁩니다.

당분간은 ROM족 신세를 면치 못하겠지만 언젠가는 정보도 제공해 줄수 있는 날이 오길 ....





MAIN FORM에서 DLL로 SELF(TWindControl)를 넘기고 DLL에서 TForm1.CREATE 에 아규먼트로 주었는데 잘 안되네요!



누가좀 도와 주세요!!!!!

3  COMMENTS
  • Profile
    안치봉 1999.03.10 04:15
    소스는 잘~ 받았습니다.



    소스를 보니 약간은 잘못(?)된 부분이 있습니다(아래는 제가 수정한 겁니다).



    procedure TForm1.b1Click(Sender: TObject);

    var

    mi : TMenuItem;

    HInst : THandle;

    fPtr : TFarProc;

    _do : DODO;

    begin

    HInst := LoadLibrary('DLLTEST.dll');



    if HInst <> 0 then

    begin

    @_do := GetProcAddress(HInst, '_do');

    if @_do <> nil then _do(self, application);

    FreeLibrary(HInst);

    end;

    end;



    그리고 DLL 부분에도 잘못된 부분이 있는것 같습니다.

    (아래는 제가 나름대로 테스트할때 쓴 DLL 부분입니다. 이건 잘 되거든요)



    procedure _do(x:TWinControl; y:TApplication); stdcall;

    var

    f: TForm;

    begin

    f := TForm.Create(y);

    f.ShowModal;

    f.free;

    end;



    도움이 되셨는지 모르겠군요^^;

    DLL 에 대해 공부하시려면 델파이의 도움말중 색인에서 DLL 에대해 보시면 많은 도움이 될겁니다~

  • Profile
    신인재 1999.03.10 04:08
    원영준 wrote:

    > 안녕 하십니까 !

    > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다.

    > 당분간은 ROM족 신세를 면치 못하겠지만 언젠가는 정보도 제공해 줄수 있는 날이 오길 ....

    >

    >

    > MAIN FORM에서 DLL로 SELF(TWindControl)를 넘기고 DLL에서 TForm1.CREATE 에 아규먼트로 주었는데 잘 안되네요!

    >

    > 누가좀 도와 주세요!!!!!



    아래에 MDI Child폼을 넣은 DLL의 예제를 올림니다.

    도움이 되시길....

    Main에서 procedure ShowMDIChildForm(MainApp : TApplication);

    를 호출하면 되겠음다



    library MDIForms;



    uses

    SysUtils,

    Classes,

    Forms,



    Windows,

    //MDI Child폼의 실제 unit



    ChildU in 'ChildU.pas' {ChildForm};



    var

    DLLApp : TApplication;



    procedure MyDLLProc(Reason: Integer);

    begin

    if Reason = DLL_PROCESS_DETACH then

    { DLL이 메모리에서 내려갈때}

    { 애플리케이션 포인터를 원위치 시킨다. }

    if Assigned(DllApp) then

    Application := DllApp;

    end;



    procedure ShowMDIChildForm(MainApp : TApplication);

    var

    Child : TChildForm;



    begin



    if not Assigned(DllApp) then

    begin



    DllApp := Application;

    Application := MainApp;

    end;

    Child := TChildForm.Create(Application.MainForm);

    Child.Show;

    end;



    exports ShowMDIChildForm;

    begin

    { DllApp 변수를 초기화 한다. }

    DllApp := nil;

    DLLProc := @MyDLLProc;

    end.



    파워러브 델파이 98년 8월호에서 퍼왔음다....^^!!!

  • Profile
    안치봉 1999.03.10 02:11
    원영준 wrote:

    > 안녕 하십니까 !

    > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다.

    > 당분간은 ROM족 신세를 면치 못하겠지만 언젠가는 정보도 제공해 줄수 있는 날이 오길 ....

    >

    >

    > MAIN FORM에서 DLL로 SELF(TWindControl)를 넘기고 DLL에서 TForm1.CREATE 에 아규먼트로 주었는데 잘 안되네요!

    >

    > 누가좀 도와 주세요!!!!!



    안녕하세요!!.



    음....죄송하지만 테스트 해보신 전체(DLL 부분과 DLL 을 호출하는 부분) 소스를 이곳에 올리시거나 혹은 저에게 메일로 보내주셔야 분석이 일단은 가능하겠습니다.



    생각하신 방법(DLL에 들어있는 form을 child로 띄우는 방법)은 불가능하지 않은걸로 알고 있습니다. 아마도 구현하는 부분이 잘못된것 같군요.



    감사합니다.

    • 구민오
    • 1999.03.16 11:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.16 23:30
      구민오 wrote: > 아래와 같은 메세지가 뜨면서 저를 하루 종일 괴롭히고 또 괴롭혀서 > 지금 잠자지도 ...
    • 구민오
    • 1999.03.15 08:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.15 21:01
      구민오 wrote: > 안녕하세요.... > 오랜만에 질문을 올리는 군요... > 다름이 아니라 익스플로러를 강제...
    • 이장렬
    • 1999.03.14 05:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.03.15 20:43
      이장렬 wrote: > 신인재씨 여러가지로 가르쳐 주셔서 감사합니다. > 제가 여러번 소스를 검사해도 도저히...
    • 1999.03.13 21:59
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 발해를 꿈꾸며
      1999.03.13 02:54
      이무수 wrote: > 델파이로 디베이스와 파라독스를 연결하여 디비를 관리하고 > 있그니다. 약 2년정도 경...
    • 이장렬
    • 1999.03.12 21:24
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이장렬
      1999.03.12 21:25
      이장렬 wrote: > Table의 이벤트 afterpost에 DbiSaveChanges(table4.Handle);을 입력했는데 > iden...
    • 신인재
      1999.03.13 20:28
      이장렬 wrote: > 이장렬 wrote: > > Table의 이벤트 afterpost에 DbiSaveChanges(table4.Handle);을 입...
    • 이장렬
      1999.03.13 21:32
      신인재 wrote: > 이장렬 wrote: > > 이장렬 wrote: > > > Table의 이벤트 afterpost에 DbiSaveChanges(...
    • 신인재
      1999.03.13 22:45
      음....BDE와 Timer사이에는 전혀 관계가 없습니다. 앞뒤 프로그램 로직상의 문제 인거 같습니다. 에러...
    • 이장렬
    • 1999.03.12 17:49
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.03.12 20:09
      이장렬 wrote: > 안녕하세요? > 저는 이 홈페이지를 처음으로 들어왔습니다. > 프로그램을 짜다가 약간...
    • 이장렬
      1999.03.12 21:30
      신인재 wrote: > 이장렬 wrote: > > 안녕하세요? > > 저는 이 홈페이지를 처음으로 들어왔습니다. > > ...
    • 안치봉
      1999.03.12 19:13
      이장렬 wrote: > 안녕하세요? > 저는 이 홈페이지를 처음으로 들어왔습니다. > 프로그램을 짜다가 약간...
    • 1999.03.12 06:50
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.12 19:23
      한 wrote: > var H: HWND; > begin > H := FindWindow('Notepad', nil); > If H = 0 then > ...
    • 1999.03.12 20:08
      안치봉 wrote: > > 안녕하세요! 소스는 잘 보았습니다. > > 한가지 중요한 점이 있습니다. 무엇이냐 ...
    • 안치봉
      1999.03.12 21:33
      한 wrote: > 안치봉 wrote: > > > > 안녕하세요! 소스는 잘 보았습니다. > > > > 한가지 중요한 점...
    • 손창근
    • 1999.03.12 05:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.12 06:09
      손창근 wrote: > 안녕하세요... 오공이 입니다. > > 다름이 아니라 제가 요새 회사에서 뉴질랜드에서 ...
    • 손창근
      1999.03.12 07:11
      안치봉 wrote: 안녕하세요. 오공이 입니다... 저의
    • 1999.03.12 05:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.12 06:01
      한 wrote: > GetClassName함수를 사용하여서 클래스 명을 찾을 수 있었지만, > > SendMessage로 보내는...
    • LYON
    • 1999.03.12 04:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.12 06:36
      LYON wrote: > 안녕하세요? > 몇가지 질문이 있어서 이렇게 질문 올립니다. > > 먼저 저는 Access DB...
    • 1999.03.12 03:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.12 03:43
      한 wrote: > 제목 되로 아래한글과 MSWORD의 클래스 이름을 알아내는 방법을 알고 싶습니다. > > 감기 ...
    • 안치봉
      1999.03.12 03:47
      이대선 wrote: > 후킹 콤퍼넌트 진짜 잘 만드셨고 요긴하게 잘 쓰고 있습니다. > > 현재 ...
    • 원영준
    • 1999.03.09 22:20
    • 3 COMMENTS
    • /
    • 4 LIKES
    • 안치봉
      1999.03.10 04:15
      소스는 잘~ 받았습니다. 소스를 보니 약간은 잘못(?)된 부분이 있습니다(아래는 제가 수정한 겁니다). ...
    • 신인재
      1999.03.10 04:08
      원영준 wrote: > 안녕 하십니까 ! > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다. > 당분간은 ROM...
    • 안치봉
      1999.03.10 02:11
      원영준 wrote: > 안녕 하십니까 ! > 델파이 초보자로써 이런 곳을 보니 매우 기쁩니다. > 당분간은 ROM...
    • 안치봉
      1999.03.09 06:01
      박근영 wrote: > 안녕하세요.... > 얼마전 나이렉스 인터내셔날을 처음 알게 되었습니다.... > 사이트...
    • 박근영
      1999.03.09 17:39
      답변 감사합니다... 건강하세요.....
    • 이창석
    • 1999.03.08 00:11
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.10 03:12
      이창석 wrote: > 반갑습니다. > 아침에 봄비가 조금 내리더니, 지금은 그쳤네요. > 몇일째 풀리지 않는...
    • 이창석
      1999.03.12 00:33
      안치봉 wrote: > 이창석 wrote: > > 반갑습니다. > > 아침에 봄비가 조금 내리더니, 지금은 그쳤네요. ...
    • 신인재
      1999.03.12 04:33
      > procedure TForm1.Button1Click(Sender: TObject); > var > i,y:integer; > begin > if opendialo...
    • 김성률
    • 1999.03.06 05:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.08 00:34
      김성률 wrote: > 먼저 대단히 죄송합니다. 이해를 도우기 위한 측면만 생각하다 보니 제가 봐도 말도 않되...
    • 기련이
    • 1999.03.05 01:12
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.03.05 23:06
      기련이 wrote: > 저도 프로그램을 테스트 해 보았는데 문제가 생겼어요. > body의 내용이 정상적으로 나...
    • 기련이
      1999.03.06 02:33
      도와주셔서 정말 감사합니다. 제가 메일을 보낸 것은 OUTLOOK EXPRESS이고, 메일서버는 MS EXCHANGE서...
    • 안치봉
      1999.03.06 04:46
      기련이 wrote: > 도와주셔서 정말 감사합니다. > > 제가 메일을 보낸 것은 OUTLOOK EXPRESS이고, > ...
    • 기련이
      1999.03.10 02:30
      덕분에 문제를 해결하였습니다. Var InStr, OutStr: TStringStream; Begin InStr := TStringStr...