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
[16026] Re:Re:Re:[BCB50] TCppWebBrowser로 하여 URL이 아닌 문자열을 출력하도록 하는 방법 좀 알려주세요...
까마귀 [ccamagui] 1118 읽음    2002-03-06 12:48
만해님의 알켜주신 방법으로는 완전한 브라우징이 되지않아
인터넷을 뒤져 나름데로 구성해 보았읍니다. -- 만해님에게
다시 감사를 드립니다.

TCooWebBrowser를 초기화하는데 의외로 많은 시간이 소요됩니다.
따라서, 필요한 경우(도움말을 호출할 때만)에 초기화하여 실행
하도록 해야 될 것 같읍니다.


#include "SHDocVw_OCX.h" //-- 헤더(H)에 요놈이 포함되어야 합니다.
#pragma link "SHDocVw_OCX" //-- 요놈은 소스(CPP)에 넣어야 합니다.

우선 클라스를 선언합니다. 물론 헤더(H)에 넣어야겠지요...^_^
class TMyBrowser : public TForm{
    __published:    // IDE-managed Components
    TCppWebBrowser *Body;
    TButton *DanOK;
    void __fastcall DanOKClick(TObject *Sender);
    private:    // User declarations
    public:        // User declarations

    TStringList *HelpHTML; //-- HTML 스트링을 저장할 장소입니다.
    __fastcall TMyBrowser(TComponent* Owner);
    void __fastcall Execute(void); //-- 실행하도록 하는 함수.
    void __fastcall Clear(void); //-- 브라우져의 내용을 지우는 함수.
    void __fastcall AddLine(String aData); //-- 브라우져에 줄 하나를 추가하는 함수.
    void __fastcall AddFile(String aFile); //-- 외부의 화일을 읽어드리는 함수.
    };

그리고, 소스(CPP)를 다음과 같이 구성합니다.
__fastcall TMyBrowser::TMyBrowser(TComponent* Owner):TForm(Owner){
    HelpHTML=new TStringList();
    Body->Navigate(WideString("about:blank")); //브라우져를 폼이 만들어질 때 초기화 해
                    야 합니다. 그렇지 않으면 원하는 데로 브라우징이
                    되지 않읍니다.
    }
//-------------------------------------------------------------------------------------------
void __fastcall TMyBrowser::Clear(void){
    //브라우져를 지울 때 기본적인 html 문자열을 집어 넣읍니다.
    HelpHTML->Clear();
    HelpHTML->Add(""); HelpHTML->Add(""); //-- 브라우져의 오른쪽 마우스를 비활성 시킵니다. } //------------------------------------------------------------------------------------------- void __fastcall TMyBrowser::AddLine(String aData){HelpHTML->Add(aData);} //-- HTML로 된 한 줄의 문자열을 추가합니다. //------------------------------------------------------------------------------------------- void __fastcall TMyBrowser::AddFile(String aFile){ //-- 원하는 화일로 부터 HTML 문자열들을 읽 어 추가합니다. TStringList *dFile=new TStringList(); dFile->LoadFromFile(aFile); HelpHTML->AddStrings(dFile); delete dFile; } //------------------------------------------------------------------------------------------- void __fastcall TMyBrowser::Execute(void){ //-- 실제 브라우징을 실행합니다. Show(); TMemoryStream *dMemS = new TMemoryStream(); HelpHTML->SaveToStream(dMemS); dMemS->Seek(0,0); IPersistStreamInit *dPerS; TStreamAdapter *dAdaS = new TStreamAdapter(dMemS,soReference); if(SUCCEEDED(Body->Document->QueryInterface(IID_IPersistStreamInit, (void **)&dPerS))) dPerS->Load(*dAdaS); delete dMemS; } //------------------------------------------------------------------------------------------- void __fastcall TMyBrowser::DanOKClick(TObject *Sender) {Close();} //-- 버튼을 눌러종료합니다. //------------------------------------------------------------------------------------------- 위의 내용을 정리하여 클라스를 생성하고, 주 소스에 다음을 추가합니다. class TMain : public TForm{ __published: // IDE-managed Components <...> void __fastcall Help1Click(TObject *Sender); void __fastcall Help2Click(TObject *Sender); private: // User declarations <...> public: // User declarations <...> TMyBrowser *MyBrowser; //-- 요놈을 추가합니다. 요놈을 추가했다고, 초기화 하지는 않으니까 문제 없읍니다. <...> }; void __fastcall TMain::Help1Click(TObject *Sender) { if(!MyBrowser) MyBrowser=new TMyBrowser(this); // 초기화 되었는지 확인하고 되어있지 않으면, 초기화함. String dPath=ExtractFilePath(APPeName); MyBrowser->Clear(); MyBrowser->Caption="Help 1"; MyBrowser->AddFile(dPath+"HelpQStr.cmg"); MyBrowser->AddLine(""");
    MyBrowser->Execute();
    }

void __fastcall TMain::Help2Click(TObject *Sender) {
    if(!MyBrowser) MyBrowser=new TMyBrowser(this);
    String dPath=ExtractFilePath(APPeName);
    MyBrowser->Clear();
    MyBrowser->Caption="Help 2";
    MyBrowser->AddLine("연습용");
    MyBrowser->AddFile(dPath+"HelpQStr.cmg");
    MyBrowser->AddLine("</body></html>");
    MyBrowser->Execute();
    }
.끝.
붙임말 : 도움이 되시기를 바랍니다.


+ -

관련 글 리스트
41695         Re:Re:[BCB50] TCppWebBrowser로 하여 URL이 아닌 문자열을 출력하도록 하는 방법 좀 알려주세요... 소리바람.OJ 1249 2005/08/29
15990         Re:Re:[BCB50] TCppWebBrowser로 하여 URL이 아닌 문자열을 출력하도록 하는 방법 좀 알려주세요... 까마귀 1003 2002/03/05
16026             Re:Re:Re:[BCB50] TCppWebBrowser로 하여 URL이 아닌 문자열을 출력하도록 하는 방법 좀 알려주세요... 까마귀 1118 2002/03/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.