반응형
COM BSTR로 호출하여 받기
CString인 문자열을 BSTR 타입으로 넘기고 이를 BSTR타입으로 받는 방법이다.
<선언부>
CComPtr<IAcceptModule> m_pAcceptDlg;
<호출하기>
CComBSTR bstrPntID = strPatientID.AllocSysString();
HRESULT hResult = m_pAcceptDlg->ShowCallMsg(bstrPntID);
<참고> 프로젝트파일.tlb
IAcceptModule : IDispatch
{
//
// Raw methods provided by interface
//
virtual HRESULT __stdcall ShowAccept (
IUnknown * pUnkn,
VARIANT_BOOL * pbResult,
long lHwnd ) = 0;
virtual HRESULT __stdcall ShowCallMsg (
BSTR bstrPntID ) = 0;
};
< 받기 >
// USES_CONVERSION 매크로는 유니코드와 멀티바이트간 전환을
// 쉽게 해주는 매드로들을 사용할 수 있게 해준다.
USES_CONVERSION;
CString strPntID = OLE2CT(bstrPntID);
::MessageBox(NULL, _T(strPntID), _T(""), 0);
< 주의사항 >
m_pAcceptDlg로 호출할때 같은 메모리상에 있지 않으면 여러개의 인터페이스가 생성되게 된다.
선언한 m_pAcceptDlg로 사용하며 별도의 선언시 다른 윈도우가 또 생성되므로 주의 한다. (AddRef .. 등으로 자동적으로 +1 , -1 하여 유지됨)