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
[17198] cppwebbrowser에서의 소스 코드 내용 바꾸기
큐피리도 이니 [cuperido] 1522 읽음    2002-04-04 10:32
안녕하세요.

cppwebbrowser에서 받아온 소스를 변경하여 출력하려고 합니다.
아래는 작성한 소스 코드 입니다.

void __fastcall TMain::_wbBrowserDocumentComplete(TObject *Sender, LPDISPATCH pDisp, TVariant *URL)
{

Variant           vaDocument = _wbBrowser->Document;
AnsiString        stSource;

if(!vaDocument.IsEmpty()) {
   stSource = vaDocument.OlePropertyGet("body").OlePropertyGet("innerhtml");

   stSource = Task->StrReplace(stSource, "nowrap", "");   // 사용자 정의 함수
   stSource = Task->WidthModification(stSource, 600);     // 사용자 정의 함수

   if(stSource.Trim() != "")
     vaDocument.OlePropertyGet("body").OlePropertySet("innerhtml", stSource);
}

VarClear(vaDocument);

.
.
.

}

문제는 Yahoo같은 곳은 아주 잘 변합니다. 하지만, Frame이 나타나 있는 곳은 변경이 되지 않고 하얀 백지만 출력됩니다. 스텝을 잡아서 보니 프레임이 몇개로 쪼개져 있던간에 프레임이 있는 페이지는 위의 이벤트는 2번 잡힙니다. (보통 Yahoo 같은 프레임이 없는 페이지는 1반만 잡힙니다)

첫번째 이벤트에서 watch로 보면, stSource는 소스코드가 담겨 있습니다. (Body만 담겨 있습니다) 그리고 두번째 이벤트시에는 stSource 가 Null 상태입니다. 그래서 위의 stSource를 Setting 하는 부분이 실행이 안됨에도 불구하고 백지로 어느순간에 바뀌어 버립니다. 아마도 첫번째 이벤트에서 Body를 재 설정할때 무언가 문제가 생겨 화면에서 무시되는것 같습니다.

stSource = vaDocument.OlePropertyGet("documentElement").OlePropertyGet("outerhtml");

이런 식으로 html전체를 받을 수 있는 방법으로 해보았는데, Body와는 달리 Get은 되는데, Set은 "Exception Occurred" 에러 메세지만 출력하네요. documentElement 전체를 바꿀 수 있는 방법은 없나요..?

부탁드립니다~

+ -

관련 글 리스트
17198 cppwebbrowser에서의 소스 코드 내용 바꾸기 큐피리도 이니 1522 2002/04/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.