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
[71441] TWebBrowser OnNewWindow
사탄 [kdhs] 3140 읽음    2014-06-19 16:05
구현 방식의 대한 문의가 있습니다.

메인폼 : MainFM
서브폼 : SubFM

메인 폼에 올려진 TWebBrowser에서 자바스크립트 Open 이나 새창 링크에 경우
서브 폼으로 ppDisp 포인터 정보를 전달해주고 있습니다.

질문 : 메인폼(MainFM )에서 TWebBrowser 에 OnNewWindow 발생시 새창열기를 할 경우에
새창(SubFM)에서 OnNewWindow 이벤트를 메인폼에서 열고 싶습니다.

아니면 메인폼에서 새창열기 후 새창에서 열어진 페이지에 링크를 메인폼으로 여는 방법을 알고 싶습니다.

// 아래 함수를 이용하여 서브폼을 생성하여 ppDisp를 전달해 줍니다.
void __fastcall TMainFM::NewWindow(TObject *ASender, IDispatch *&ppDisp) {
	TSubFM *web = new TSubFM(Application);
	Application->CreateForm(__classid(TSubFM), &web);
	web->Visible = true;
	web->WebBrowser1->RegisterAsBrowser = true;
	*&ppDisp = web->WebBrowser1->Application;
}


이제 다시 서브폼에서는 메인 폼에 TWebBrowser 로 다시 ppDisp 를 넘겨줘야 되는데
아무리 자료 및 가이드를 찾아봐도 제가 모르는건지 어렵네요

메인으로 핸들값으로 넘겨주어도 안되고 , 전역변수 처리 해도 안되고 그러네요

똑같이 폼생성시에는 전달을 해주는 법은 알겠는데 만약 서브폼에 띄어진 페이지에서 설정값이 target="_blank"  일시
메인으로 돌려주고 싶은데 어려움이 있습니다.

혹시 유사한 방법이나 참고사항이 있으면 부탁을 드려봅니다. ^^

서브 폼에서 함수는 아래와 같습니다.

// 아래 함수를 이용하여 서브폼에서 이벤트를 처리해주고 있습니다.
// 메인폼을 생성 하지 않고 전달해주는 방법이 궁금합니다..
void __fastcall TSubFM::WebBrowser1NewWindow2(TObject *ASender, IDispatch *&ppDisp, WordBool &Cancel) {
	Cancel = false;
	TMainFM *web = new TMainFM(Application);
	web->WebBrowser1->RegisterAsBrowser = true;
	web->Show();
	ppDisp = web->WebBrowser1->Application;
	// MainFM->WebBrowser1->Navigate2("javascript:return rsvMove()");
}


+ -

관련 글 리스트
71441 TWebBrowser OnNewWindow 사탄 3140 2014/06/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.