2016-07-11 11 views
0

Windows 7 64 비트에서 Visual Studio 2015에서 MFC를 사용하고 있습니다.LPDISPATCH 포인터/인터페이스를 얻고이를 activeX 컨트롤에 전달하는 방법

내 응용 프로그램에는 activeX 컨트롤이 있는데, 나는 activeX 컨트롤과 내 어플리케이션 사이에서 통신해야합니다.

하지만 activeX는 내 응용 프로그램에 LPDISPATCH 포인터/인터페이스를 전달해야합니다.

내 응용 프로그램 메서드 (OnExtRequest)의 LPDISPATCH 포인터/인터페이스를 얻으려면 어떻게해야합니까?

는 액티브 X가 제공하는 방법입니다 :

int CMyDlg::OnExtRequest(CString sObj, int uMeth, CString sData, int uHandle, CString sPeer) 
{ 
    //TODO:...... 
} 

이 Plz은 나를 도와 (액티브 X에이 기능의 LPDISPATCH 포인터/인터페이스를 통과)이 내 응용 프로그램의 콜백 함수입니다

void SetOnExtRequest(LPDISPATCH propVal) 
{ 
    SetProperty(0x4, VT_DISPATCH, propVal); 
} 

, 감사합니다 !

+0

흠, 할 일이 많습니다. CMyDlg 클래스는 IDispatch를 구현해야합니다. 그리고 그 함수를 다시 작성해야합니다. ActiveX 컨트롤이 CString을 전달할 방법이 없습니다. 문자열의 자동화 유형은 BSTR입니다. –

+0

감사합니다,이 문제가 있지만 IDispatch 구현 우수합니다, 나 예제 코드 또는 iDispatch class.thx 표시 할 수 있습니다. – Yao

답변

1

귀하의 OnExtRequest() 콜백 방법은 ActiveX 객체의 일부가 아닌 직접 SetOnExtRequest()에 당신이 수 없습니다 패스를 그렇게. IDispatch을 구현하는 클래스를 작성하고 Invoke() 구현을 사용하여 OnExtRequest() 메소드를 호출해야합니다. 그런 다음 해당 클래스의 인스턴스를 만들어 SetOnExtRequest()에 전달합니다.

+0

예제 소스 코드가 있습니까? 내 응용 프로그램에서 최대 16 개의 ActiveX 컨트롤을 만들 것이므로 별도로 처리해야합니다. – Yao

관련 문제