컴퓨터 공부/COM&ActiveX

[6월 15일 1교시] tlb를 통한 COM 객체 생성

려리군 2009. 6. 15. 09:57

※ 새로운 기능이 추가되었다면 dll, tlb를 같이 제공한다.

BOOL AFXAPI AfxOleInit( );

참고주소 : http://msdn.microsoft.com/en-us/library/e91aseaz(VS.71).aspx

TLB 파일 사용시 COM 라이브러리를 초기화 하는 함수. (MFC)

응용프로그램에 대해 OLE 지원을 초기화한다.

리턴 : 성공시 TRUE, 실패시 FALSE 이유는 OLE 시스템 DLL의 잘못된 버젼이 설치되었기 때문.


TLB를 사용하기

#include <afxdisp.h>

#import "AddBack.tlb" no_namespace


tlb파일 import 속성

no_namespace : namespace는 컴파일러에 의해 생성되지 않는다.

named_guid :  LIBID_MyLib, CLSID_MyCoClass, IID_MyInterface, and DIID_MyDispInterface 형태의 고전 스타일에서 GUID를 정의하고 초기화한다고 컴파일러에게 알린다.


※ 컴파일을 하면 실행파일이 생성된 폴더에 tlh, tli파일이 생성된다.

스마트 클래스 포인터를 선언
예시)
IAddPtr m_plAdd;
IAddEndPtr m_plAddEnd;

스마트 클래스 사용예시
m_plAddEnd = IAddEndPtr(__uuidof(AddBack));
// 스마트 포인터로 wrapping된 클래스를 생성한다.
m_nAddEnd = m_plAddEnd->AddEnd;
※ 스마트 포인터 객체에 대해 rvalue에 대해 실행하면 get함수가 호출된다.
m_plAddEnd->AddEnd = m_nAddEnd;
※ 스마트 포인터 객체에 대해 rvalue에 대해 실행하면 put함수가 호출된다.