2013-12-08 56 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

Shell是否自動完成一種解決問題的方法?

  1. 這裏的MSDN description的shell代碼

  2. 這裏的另一個代碼示例,從CodeProject,應使用比你做了類似的方法。

+0

AUTOCOMPLETE!我過度疲憊的大腦並不認爲這就是我正在做的事......我敢打賭有一百萬次的搜索結果。 –

0

您應該能夠通過捕獲WM_KEYDOWN並檢查編輯字段是否具有焦點來檢測編輯字段上的刪除鍵。設置一個標誌來指示用戶已刪除建議的文本應該會有所幫助。

+0

不要重新發明輪子。 Windows已經實現了[自動完成基礎結構](http://msdn.microsoft.com/zh-cn/library/windows/desktop/bb776884.aspx)。 ATL提供[預構建的枚舉器](http://msdn.microsoft.com/en-us/library/dxtabf8t.aspx)。 – IInspectable

相關問題