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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[533] COM 제어시 자동객체 파괴를 위한 스마트포인트를 사용하자.
김태선 [jsdkts] 6165 읽음    2005-12-06 20:28
스마트포인트를 사용하면 객체가 블럭을 벗어날때 자동 파괴되므로
훨씬 간편하게 프로그램할 수 있고
객체 파괴에 신경이 덜 가므로 편리합니다.

보통 일반적으로는 boost 라이브러리에 있는 스마트포인트인 scoped_ptr 를 사용하면 되는데
이걸 쓰자고 boost 라이브러리를 인스톨하는 것이 번거로운 분은 해당 부분만 때어내 사용하면 됩니다.
이거 때어낸 것은 라이브러리 자료실에 곧 올리겠습니다.

그런데 COM  객체에 대한 스마트포인트는 몇가지를 사용합니다.
제가 다 아는 것은 아니고 실무하다가 사용하는 것을 아래 예제에 일부 표시 했습니다.
아래는 웹브라우즈에서 원하는 부분의 소스를 얻어오고, 해당하는 엘러멘트(요소)를 가져오는 것에 대한 예제입니다.


// WebBrowser를 엑세스 하기 위해
#include <mshtml.h>

// COM 용 스마트포인트를 쓰려면 아랫줄이 있어야 합니다. atlbase.h 에 정의되어 있으므로.
#include <atl/atlbase.h>



    HRESULT         hr;
    IDispatch      *pDocument = WebBr->Document;
    IHTMLDocument2     *pDoc;
    hr = pDocument->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc);
    if (hr == S_OK)
    {
        CComPtr< IHTMLElement > pBody;      // Release를 호출해줄 필요가 없다.
        pDoc->get_body( &pBody );

        WideString  HTML;
        WideString  HTML2;
        WideString  Text;
        pBody->get_innerHTML(&HTML);
        pBody->get_innerText(&Text);
        pBody->get_outerHTML(&HTML2);

        MemoWebSrc->Lines->Clear();
        MemoWebSrc->Lines->Add(HTML2);  // 소스 표시
        MemoWebSrc->Lines->Add(HTML);

        CComQIPtr< IHTMLBodyElement > peBODY( pBody );  // 자동으로 쿼리 인터페이스.
        CComBSTR  bstrBackground;                        // SysFreeString을 호출할 필요가 없다.
        peBODY->get_background( &bstrBackground );  // 배경그림명을 얻어 온다.

        Caption = (String)bstrBackground;
    }


너무 짧은 내용이라 도움이 될랑가 모르겠습니다.
이만 ~~~

+ -

관련 글 리스트
533 COM 제어시 자동객체 파괴를 위한 스마트포인트를 사용하자. 김태선 6165 2005/12/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.