반응형

IResult프로퍼티 삭제후 IResult 라는 인터페이스 추가시.


idl - 2군데 추가

헤더 - 2군데 추가


1. idl 수정

- 기존의 인터페이스 부분을 복사해서  붙여넣고 interface 이름을 IResult로 변경

- uuid 값 변경.

 [
  object,
  uuid(596E5FFD-EFE0-4394-BA1F-FB24E97DB069),
 oleautomation(); // 추가
  helpstring("ICCalCu Interface"),
  pointer_default(unique)
 ]
 interface IResult : IUnknown
 {
 };

idl 파일 밑 부분에coclass Calcu 부분에 추가한다.

 coclass CCalCu
 {
  [default] interface ICCalCu;

  interface IResult; // 추가
 };


2. 실제 소스 코드 수정

CCalcu 소스파일( CalCu.h )

class 선언부분에 추가로 상속시킨다.

class ATL_NO_VTABLE CCCalCu :
 public CComObjectRootEx<CComSingleThreadModel>,
 public CComCoClass<CCCalCu, &CLSID_CCalCu>,
 public ICCalCu,

public IResult

2. BeginMap 에 추가.


BEGIN_COM_MAP(CCCalCu)
 COM_INTERFACE_ENTRY(ICCalCu)

 COM_INTERFACE_ENTRY(IResult)
END_COM_MAP()


3. 이제 기존의 IResult 프로퍼티는 삭제

  [propget, helpstring("property Result")] HRESULT Result([out, retval] long *pVal); // 이놈을 삭제


4. 소스파일의 프로퍼티 구현부를 삭제한다.


5. IResult 인터페이스에 프로퍼티를 추가한다.






============= 클라이언트에서 바뀐 부분. =================

맴버변수 pIResult를 추가하고.( IResultPtr pIResult; )

OnInitDialog() 초기화 부분에서....... 


 pICalCu = ICCalCuPtr(__uuidof(CCalCu));

 pIResult = pICalCu;


이렇게 또는


 HRESULT hr;
 hr = pICalCu.CreateInstance(__uuidof(CCalCu));

 if( FAILED(hr) )
 {
  MessageBox("인스턴스 생성샐패");
  ExitProcess(0);
 }

 pIResult = pICalCu;


이렇게 해서 쓰면 됨.

반응형

+ Recent posts