2009-12-23 2 views
0

이것은 오늘 두 번째 질문입니다. 용서해주십시오.MFC 대화 상자의 이벤트 처리

스캐너 장치와 통신하기 위해 래퍼 라이브러리를 작성하고 있습니다. 소스 코드는 C++ MFC에 있습니다. C#에서 호출 될 일반 DLL로 변환 중입니다. 그래서 C#에서 DllImport를 사용하여 래퍼 라이브러리를 호출합니다.

이제 MFC 코드가 제공되며 라이브러리는 ActiveX 개체입니다. 적어도 그렇게 생각합니다.

class CDpocx : public CWnd 
{ 
} 

내 래퍼 라이브러리에서 나는 CDpocx 인스턴스를 가지며 C# P/Invoke를 통해 호출합니다. 그러나 문제는 입니다. CDpocx도 잡아야하는 몇 가지 이벤트가 발생합니다. 전통적인 애플 리케이션에서, 나는 단지 그것으로 함수를 첨부 할 것이다. 하지만 어떻게 비 MFC 클래스에 이벤트를 첨부 할 것입니다.

나는 같은 것을 보았다 :

BEGIN_EVENTSINK_MAP(CVC60Dlg, CDialog) 
    //{{AFX_EVENTSINK_MAP(CVC60Dlg) 
    ON_EVENT(CVC60Dlg, IDC_DPOCXCTRL1, 1 , OnReadyDpocxctrl1, VTS_NONE) 
    //}}AFX_EVENTSINK_MAP 
END_EVENTSINK_MAP() 

OnReadyDpocxctrl11 (준비) 이벤트를 처리하는 기능입니다.

비 MFC 클래스에서 simmilar 함수를 어떻게 얻을 수 있습니까?

감사합니다, Maksud

답변

0

이 당신이 원하는 경우 잘 모르겠어요,하지만 당신은 C#을에서 ActiveX 구성 요소를 호출 할 경우, 당신은 COM 형식의 형식 정의를 변환 할 Windows Forms ActiveX Control Importer (Aximp.exe)를 사용한다 라이브러리를 사용하여 ActiveX 컨트롤을 Windows Forms 컨트롤에 추가 할 수 있습니다.

+0

감사합니다. 이것을 시도 할 것이다. 실제로 문제는 C++과 VisualBasic 모두에 대한 드라이버와 샘플 코드가 있다는 것입니다. 비주얼 베이직 버전 (VB6은 VB.NET으로 변환되고 VC# .NET으로 다시 변환 됨)은 예상대로 작동하지 않는 반면 C++ 버전 (VC6는 VC++. NET 2008로 변환 됨)은 완벽하게 작동합니다. 그래서 나는 C#에서 다시 호출 될 C++ 래퍼를 만들려고 유혹을 받았다. 나는 당신의 해결책을 시도 할 것입니다. – max

관련 문제