C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[59800] Re:Re:Re:Re:Re:Re:Re:MFC 확장 dll 사용.
이난호 [noirhero] 1925 읽음    2010-01-18 11:31
게시판 성격에 맞지 않는 글임을 저도 "장성호" 님의 글을 보고서야 알았습니다.
미리 숙지하지 못하고 질문 드린 점 죄송 합니다.

"둘리.CSIEDA" 님의 첫 답변을 보고서 제 문제의 대해서 다시한번 재 질문 드렸고요.
그 후에 'VC++ 에서 dialog 박스를 말하는 것인가요?' 라고 하였을때 제가 '그렇습니다.'
그후에 "둘리.CSIEDA" 님의 '고민하다 보면 답이 있을 것 입니다.' 라는 답변의
'열심히 하고 있습니다.' 라고 말씀 드렸습니다.
그 후에 어떻게 해결이 되어서 기쁜 마음으로 코드를 올린 것 입니다.

저의 질문이 명확하지 않아서 두분에게 혼란을 드렸고,
게시판 성격에도 맞지 않는 점, 죄송 하게 생각 드립니다.

장성호 님이 쓰신 글 :
: 여기는 C++Builder Q&A게시판 입니다.
:
: 처음에 님의 질문을 봤을때
: 위에 "둘리.CSIEDA"님과 같이
: 저도 MFC확장 dll을 BCB에서 어떻게 사용할것인가에 대한 질문으로 알아 들었습니다.
:
: 그런데 아래 내용을 보니
: MFC dll을 VC++에서  쓰는 방법에 대한 질문이네요
:
: 즉 이곳 게시판과 성격이 맞지 않는 질문이라는 것입니다.
:
: "둘리.CSIEDA"님께서 성의껏 답변해 드렸지만.. 헛수고 한것이 되네요  쩝쩝..
:
: 그럼..
:
:
: 이난호 님이 쓰신 글 :
: : 문제를 해결해서 후에 저와 같은 문제가 생기는 분들을 위해 여기다 써 놓습니다.
: :
: : CWinApp 기반으로 만들어진 명시적 MFC 확장 dll을 CDialog 기반의 대화상자의
: : 로드하여 사용할 수 있는 방법 입니다.
: :
: : // 해당 대화 상자의  OnInitDilaog 함수 내 입니다.
: : HMODULE hModule = LoadLibrary(m_dllName);
: : 
: : // resource 핸들을 dll 용으로 바꾸어 줍니다.
: : HINSTANCE hInstance = AfxGetResourceHandle();
: : AfxSetResourceHandle(hModule);
: : 
: : // 확장 dll 에서는 해당 View 와 Frame 의 Runtime 클래스를 반환하는 함수를 준비 합니다.
: : DiGetToolRuntimeClassFunction fnRuntime = (DiGetToolRuntimeClassFunction)
: : 	GetProcAddress(hModule, "DiGetToolFrameRuntime");
: : if(!fnRuntime)
: :         return FALSE;
: : CRuntimeClass *frameRt = fnRuntime();
: : m_frame = (CFrameWnd*)frameRt->CreateObject();
: : 
: : fnRuntime = (DiGetToolRuntimeClassFunction)
: : 	GetProcAddress(hModule, "DiGetToolViewRuntime");
: : if(!fnRuntime)
: : 	return FALSE;
: : CRuntimeClass *viewRt = fnRuntime();
: : 
: : CCreateContext context;
: : context.m_pCurrentDoc = NULL;
: : context.m_pCurrentFrame = NULL;
: : context.m_pNewViewClass = viewRt;
: : 
: : if(!m_frame->Create(0, 0, WS_CHILD|WS_VISIBLE, CRect(0, 0, 100, 100), this,
: : 	0, 0, &context))
: : 	return FALSE;
: : 
: : m_frame->RecalcLayout();
: : m_frame->ShowWindow(SW_SHOW);
: : m_frame->InitialUpdateFrame(NULL, TRUE);
: : 

: :
: : 이렇게 하면 dialog 위에 확장 dll 이 로드되게 됩니다.
: :
: : 여기에는 두가지 문제가 있는데요.
: : 첫번째는 document 가 없는 상태가 됩니다.
: : 확장 dll 이나 사용처에서 document 를 접근하는 코드가 있다면 문제가 생깁니다.
: : 두번째는 확장 dll 이 SDI 기반으로 제작 되어져야 합니다.
: : MDI 에서는 저 방법이 되지 않습니다.
: :
: :
: : 이난호 님이 쓰신 글 :
: : : 네, VC 에서 만든 CDialog 자체를 말하는 것 입니다.
: : : 정확 하게는 제가 만든 CDialog 창 안에 해당 dll이 불려 지는 겁니다.
: : : 지금 여러가지로 시도 해보고 삽질 해 보는데...어렵네요;;;
: : :
: : : 둘리.CSIEDA 님이 쓰신 글 :
: : : : Dialog 에 띄운다는게 정확이 어떤것이죠?
: : : : Delphi Form 안에 넣으신다는건지, 아니면 ,Common Dialog 안에 넣는다는것인지...
: : : : 그도 아니면 VC 에서 만든 dialog 자체를 띄운다는것인지요..
: : : :
: : : : 고민하다보면 답이 있지 않을까요???
: : : :
: : : :
: : : : 이난호 님이 쓰신 글 :
: : : : : 답변 감사합니다.
: : : : :
: : : : : 확장 dll은 말씀 하신대로 명시적 dll (explicit) 입니다.
: : : : : CMultiDocTemplate 형 포인터를 반환하는 함수를 만들어서 dll화 했습니다.
: : : : : 해당 dialog 에서 LoadLibrary 하고 CMultiDocTemplate 포인터를 받아서
: : : : : 생성(CreateDocument() 한 뒤에, CreateFrame() 함수 이용) 해 보니깐 잘 생성 되더군요.
: : : : : 문제는 dialog 에 띄우고 싶은데 자꾸 메인 프레임에 자식으로 들어가 버립니다.
: : : : : 이거, 방법이 없을까요?
: : : : :
: : : : : 둘리.CSIEDA 님이 쓰신 글 :
: : : : : : 가능 할것 같습니다.
: : : : : :
: : : : : : 1. 저는 이런적이 있습니다.
: : : : : : MFC 확장 DLL (저의 경우 ActiveX) 을 만들어 C++ Builder 에 import 하여 사용한 적이 있습니다. 이거야 뭐 기본이겠고요.
: : : : : :
: : : : : : 2. DLL 접근 interface 를 만들어 호출하여 처리하면 가능합니다. Static Lib 로 연결은 불가능할듯 합니다.
: : : : : :    Implib 인가.. 그것이 될때 있고 않될때가 있어서요.
: : : : : :
: : : : : :
: : : : : : 이난호 님이 쓰신 글 :
: : : : : : : 안녕하세요.
: : : : : : :
: : : : : : : 작업중에 문제가 생겨서 시간을 들여 찾아 보았지만,
: : : : : : : 답을 얻을수 없어서 질문 드립니다.
: : : : : : :
: : : : : : : 제가 하려는 작업은 MFC 확장 dll로 작업한 프레임 기반(CWinApp) dll을,
: : : : : : : 현재 작업중인 어플리케이션 안에 한 다이얼로그 박스 안에 로드 하려는 겁니다.
: : : : : : :
: : : : : : : 이 작업이 실제로 가능 할까요?
: : : : : : : 가능 하다면 어떻게 하여야 하나요?
: : : : : : :
: : : : : : : 날씨도 추운데 다들 감기 조심하세요.

+ -

관련 글 리스트
59703 MFC 확장 dll 사용. 이난호 1941 2010/01/11
59715     Re:MFC 확장 dll 사용. 둘리.CSIEDA 1743 2010/01/11
59717         Re:Re:MFC 확장 dll 사용. 이난호 2109 2010/01/12
59718             Re:Re:Re:MFC 확장 dll 사용. 둘리.CSIEDA 1394 2010/01/12
59720                 Re:Re:Re:Re:MFC 확장 dll 사용. 이난호 1598 2010/01/12
59783                     Re:Re:Re:Re:Re:MFC 확장 dll 사용. 이난호 1740 2010/01/15
59784                         Re:Re:Re:Re:Re:Re:MFC 확장 dll 사용. 장성호 1810 2010/01/15
59800                             Re:Re:Re:Re:Re:Re:Re:MFC 확장 dll 사용. 이난호 1925 2010/01/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.