2009-06-10 4 views
4

Microsoft Outlook 2003 창에 WPF 응용 프로그램이 내장되어 있습니다. 모든 TextBox 컨트롤이 백 스페이스 키를 허용하지 않는 경우를 제외하고는 정상적으로 작동합니다. 나는 약간 연구를했는데, 문제는 내 창문이 Outlook 창 자식 일 때만 존재한다. 다른 창문이 아니라면 (파이어 폭스에 주입했다. 그리고 잘 동작하고 대화창에 wpf UserControl을 넣으면 문제가 생긴다. 그것은 또한 작동한다). 이것은 사람들이 (텍스트 상자는/화살표 키/등 삭제 수용)을보고하는 반대의 문제가 될 것 같다,이 스레드는 (비록 내 문제가 해결되지 않았다) 어느 정도 유익했다 : I : 여기WPF TextBox가 Delete 키를 허용하지 않습니다.

WPF TextBox not accepting Input when in ElementHost in Window Forms 내 설정이다 WPF UserControl을 만든 다음 ElementHost에 넣습니다. 나는 그 호스트를 NativeWindow에 넣어지는 다른 Forms UserControl에 놓이게되는 Windows Forms UserControl에 두었습니다. (UserControl의 랩핑을 제거하려고 시도했지만 효과가 없습니다.) 그런 다음이 기본 창은 Outlook 창의 하위 항목이되어 Outlook에 있어야합니다.

아무도 아이디어가 있습니까? 어쩌면 Windows 메시지를 다르게 처리해야합니까? 몇 가지 조사를 수행하고 백 스페이스 키를 눌렀을 때 Outlook에서 WM_COMMAND 메시지가 표시된다는 것을 알았지 만 내가 다른 것을 치지 않을 때가 아니라는 것을 알았습니다. 백 스페이스 키를 메뉴 액셀러레이터 또는 이와 비슷한 것으로 해석하는 것일까 요?

감사합니다.

답변

1

이 문제를 해결할 방법을 찾았습니다. Outlook의 WndProc를 확장하고 WM_COMMAND를 들었습니다. 그것이 올 때마다 WPF UserControl 시스템에 현재 키보드 포커스 컨트롤에 백 스페이스 키를 보내라고 전합니다.

다른 키 누르기에서 WM_COMMAND를 실행하는 것처럼 보이지 않아서 백 스페이스가 작동하지 않습니다.

+0

관심이 있으신가요? WParam의 값을 비교 하시겠습니까? 아니면 이벤트가 전혀 발생하지 않는 경우에만 보십니까? 이 솔루션이 여전히 올바르게 작동합니까? :-) – traskjd

+0

WM_COMMAND에 백 스페이스를 보내면 정상적으로 작동합니다. 그러나 Ctrl-Z도 백 스페이스를 실행하지만 실행 취소에서 문자를 삭제하기 때문에주의하기가 어렵습니다. 내 생각 : 나는 그것이 효과가있어, 나는 실제로 그 문제에 대해 걱정할 다른 것들을 가지고 있고 이미 해결되지 않았습니다 :) – Max

관련 문제