2009-09-16 6 views
0

VS2003 (.Net 1.1) 사용 C# 창을 COM 클라이언트로 생성하는 MFC MDI 응용 프로그램이 있습니다.C# COM 클라이언트에서 사용자 입력 잡기

우리는 응용 프로그램 내에서 모든 사용자 입력을 포착해야하며 현재 CWinApp :: PreTranslateMessage()를 사용하여 MFC 창으로 향하는 명령을 잡으려고합니다. 그러나 이것은 분명히 C# 창으로 향하는 메시지를 잡아 내지 못합니다.

C# 클라이언트에서 모든 사용자 입력을 포착하는 가장 좋은 방법은 무엇입니까?

+0

호스트하기 위해 사용하는 인터페이스는 무엇입니까? 이 작업을 수행 할 수있는 표준 OLE 인터페이스 중 하나를 지원할 수 있습니다 ... –

답변

0

C# 창을 제어합니까? 그렇다면 C# 양식에는 메시지를 무시하고 필터링 할 수있는 WndProc 메서드가 있습니다.

표준 WinForms 앱의 경우 Application.AddMessageFilter에 처리기를 추가하여 C# 내부에 메시지 훅을 만들 수 있습니다. (내 게시물 here 참조하십시오.) 폼이 MFC 응용 프로그램 내부에 주어진 주어진이 작동 할 확실하지 않습니다.

+0

우리는 C# 클라이언트를 제어합니다. 여러 컨트롤이 있으므로 각 컨트롤에 대해 WndProc 메서드를 작성해야합니까? 아니면 모든 메시지가 어딘가에 "글로벌"메시지를 통과합니까? 또한 AddMessageFilter 라우트를 시도했지만 때로는 메소드가 호출되었지만 종종 그렇지 않았습니다. 왜 이런거야? –

+0

아, WndProc로 모든 메시지를 잡는 것이 가능하다는 것을 알았습니다 : http://www.codeproject.com/KB/dotnet/devicevolumemonitor.aspx –

+0

많은 시도 끝에 나는 이것을 작동시키지 못했습니다. 사용자를 로그인 대화 상자로 리디렉션 할 수 있도록 메시지를 캡처하고 싶었지만 MFC 코드에서이 작업을 끝내고 로그 아웃 할 때 C# 창을 비활성화했습니다. –

관련 문제