2013-12-08 5 views
0

내 MFC 응용 프로그램에서 사용자 유형으로 텍스트를 제안하여 사용자에게 도움을 제공하려고합니다.CEdit에 제안 된 텍스트를 사용자 형식으로 추가

사용자가 입력하는 텍스트가 입력 된 상태로 남겨지며 마지막에 제안 된 텍스트가 선택되어 사용자가 원하는 내용이 아닌 경우 삭제 만 수행하거나 입력을 계속할 수 있고 제안 된 테스트가 가까워집니다. 그리고 그들이 원하는 것에 더 가깝습니다. 합니다 (의 CEdit 컨트롤에 대한 변경 핸들러)

내 코드는 다음과 같다 : -

[Code to retrieve the current text] 

[Code to get proposed text from my database back end] 

(The user's text and the trailing extra proposed text are now in m_Eqpt) 

m_EqptCtrl.SetWindowTextW(m_Eqpt); 
m_EqptCtrl.SetSel(nTextLength, m_Eqpt.GetLength()); 

(nTextLength is the length of the text the user entered) 

이 입력됩니다 사용자로 잘 작동하지만, 사용자가 백 공백이나 hilights 텍스트를 삭제하는 경우, 내 코드는 제안 된 텍스트를 반복하여 추가합니다.이 시점에서 혼자 남겨 두어야합니다.

사용자가 제안 된 텍스트를 삭제했는지 어떻게 확인할 수 있는지 알 수 없습니다. 누구든지 비슷한 문제를 해결 했습니까?

답변

2

셸이 자동 완성 기능을 통해 문제를 해결할 수 있습니까?

  1. 다음은보다 유사한 접근 방식을 사용해야하는 쉘 코드를 다른 코드 샘플 CodeProject에서 여기

  2. 에 대한 MSDN description.

+0

AUTOCOMPLETE! 지나치게 피곤한 두뇌는 내가 그랬던 것처럼 생각하지 않았습니다 ... 그만에 100 만 건의 검색 히트가있을 것입니다. –

0

편집 필드에서 WM_KEYDOWN을 트래핑하고 편집 필드에 포커스가 있는지 확인하여 삭제 키를 감지 할 수 있어야합니다. 사용자가 제안 된 텍스트를 삭제했음을 나타내는 플래그를 설정하면 도움이됩니다.

+0

바퀴를 다시 열지 마십시오. Windows는 이미 [자동 완성 인프라] (http://msdn.microsoft.com/ko-kr/library/windows/desktop/bb776884.aspx)를 구현했습니다. 그리고 ATL은 [미리 만들어진 열거 자]를 제공합니다 (http://msdn.microsoft.com/en-us/library/dxtabf8t.aspx). – IInspectable