2017-11-01 23 views
1

현재 프로젝트의 인터페이스를 개발하면서 WPF에 TextBoxes 등에 사용할 수있는 맞춤법 검사 기능이 내장되어 있다는 사실을 알게되었습니다. 왜 이렇게 놀랐는지 모르지만 그랬습니다. 필자는 Winforms에 익숙하기 때문에 맞춤법 검사기 기능을 포함하지 않았을 것입니다. WPF 맞춤법 검사는 어떻게 내부적으로 작동합니까?

enter image description here

나는이 완전히 인식, 그리고 더 중요한 것은, 기절 조금 난 그런 기능이 런타임에로드되는 몰랐는데있다. 단어 목록을 로딩하는 것은 내장 사전이 분명히 꽤 좋다는 것을 감안할 때 일종의 시작 시간 제한을 초래할 것이라고 생각할 것입니다. 나는 그것의 능력을 시험해 보려고 노력했고, 표준 사전에있을 것이라고 생각조차하지 않는 단어를 제공했다.

근본적으로, 저는 그러한 기능이 런타임에 어떻게 초기화되는지 궁금합니다. WPF는 단어로드를 어떻게 처리합니까? 컴퓨터가 시작될 때 Windows 환경에 로딩을 지연합니까? 응용 프로그램이 시작될 때마다 사전을로드합니까? 디스크에 접근 할 수있는 수준의 사전이 있다고해서 사전에 살펴볼 수 있습니까?

+1

Windows 8에 도입 된 새로운 시스템 전체 맞춤법 검사 기능을 사용하고있을 가능성이 높습니다. https://blogs.msdn.microsoft.com/murrays/2012/08/31/richedit-spell-checking-autocorrection-and-prediction/ – Dai

답변

5

WPF는 COM interop을 사용하여 Windows에 내장 된 맞춤법 지원을 활용합니다. 당신이 가지고있는 버전에 달려 있습니다. Windows 8 이상에서는 문서화 된 API를 사용합니다. 맞춤법 검사기는 ISpellCheckerFactory 및 c : \ windows \ system32 \ MsSpellCheckingFacility.dll로 구현 된 친구가 수행합니다. 그리고 WinRT 클래스를 사용하여 문장을 단어로 나눠서 호출합니다. Windows.Data.Text.WordSegmenter이 작업을 완료합니다.

위의 구성 요소 중 어느 것도 Win7 이하에서 사용할 수 없으며 c : \ windows \ system32 \ NaturalLanguage6.dll로 구현 된 COM 서비스로 돌아갑니다. ILexicon은 기본 인터페이스입니다. 그 중 하나는 Microsoft에 의해 문서화되지 않았지만 reference source에 표시됩니다.