2009-09-14 4 views

답변

3

예. 먼저, COM 객체를 생성해야합니다. 아래는 아주 간단한 예입니다.

[Guid("123565C4-C5FA-4512-A560-1D47F9FDFA20")] 
public interface IDoSomething 
{ 
    [DispId(1)] 
    string Name { get; } 

    [DispId(2)] 
    int DoSomething(); 
} 

[ComVisible(true)] 
[Guid("12AC8095-BD27-4de8-A30B-991940666927")] 
[ClassInterface(ClassInterfaceType.None)] 
public sealed class DoSomething: IDoSomething 
{ 
    public DoSomething() 
    { 
    } 

    public string Name 
    { 
     get { return ""; } 
    } 

    public int DoSomething() 
    { 
     return 4; //random number 
    } 
} 

그런 다음 어셈블리를 재주문해야합니다. RegAsm을 도구는 필요한 레지스트리 COM 항목을 추가합니다 :

regasm.exe /tlb component.dll 

/TLB 형식 라이브러리가 MFC 응용 프로그램에서 가져올 수 생성하는 것이 필요하다.

어셈블리가 등록되면 다른 COM 개체와 마찬가지로 MFC 응용 프로그램에서 DoSomething을 호출 할 수 있습니다.

자세한 내용은 link을 확인하십시오.

0

이것은 .NET Interop 기술과 그다지 상호 작용하지 않기 때문에 정상적인 영역 밖에 있습니다.

모든 COM 인식 프로그램에서 액세스 할 수 있도록 C# 컨트롤/클래스 주위에 COM 호출 가능 래퍼라는 것을 만들 수 있습니다. 프란시스 B의 대답은 필자와 똑같기 때문에 필자는 대답을 복제하지 않을 것이다.

큰 문제는 시각적 인 C# 컨트롤이 MFC 창 내에서 원활하게 작동하는지 여부입니다. 그건 내가 대답 할 수있는 것이 아니지만 최선의 조언은 앞으로 울퉁불퉁 한 길을 준비하는 것입니다. 자세한 내용은 http://bytes.com/topic/net/answers/430618-c-control-mfc-window-frame을 참조하십시오.

관련 문제