2013-08-20 69 views
0

標準的Windows/MFC組合框(下拉模式)具有我想關閉的自動完成功能,但不知道如何。爲ComboBox關閉自動完成功能

示例1:使用列表值「Abc」和「Def」創建一個組合框。輸入「A」作爲編輯值並使用下拉按鈕。 「A」將更改爲「Abc」。

示例2:相同的起始值。打開下拉菜單,輸入「A」作爲編輯值並按Tab鍵。 「A」將更改爲「Abc」。

這些示例甚至可以在Visual Studio IDE對話框編輯器測試模式下工作。沒有編譯的exe需要。

從「A」變爲「Abc」可能是一項功能,但客戶不希望這樣做。有什麼辦法可以預防它嗎?

+0

解決它或多或少我寫我自己幾乎像一個組合框... – user178379

回答

0

您可以通過調用SHAutoComplete來微調任何編輯控件的自動完成行爲。要獲取ComboBox的Edit控件部分的句柄,請發送一個CBEM_GETEDITCONTROL消息給ComboBox控件。

要刪除不需要的功能,SHAutoComplete的標誌不得包含SHACF_USETAB

+0

謝謝,聽起來不錯,但似乎並沒有工作。我只是用SHACF_AUTOAPPEND_FORCE_OFF | SHACF_AUTOSUGGEST_FORCE_OFF來測試它的對話框,組合框和組合框編輯控件。所有返回S_OK,但問題仍然存在。 – user178379

+0

對於這兩個標誌文檔需要以下內容:*「此標誌必須與SHACF_FILESYS ** *或SHACF_URL ** *標誌中的一個或多個組合使用。」* – IInspectable

+0

糟糕,您當然是對的。試用SHACF_AUTOAPPEND_FORCE_OFF | SHACF_AUTOSUGGEST_FORCE_OFF | SHACF_FILESYSTEM | SHACF_URLALL。再次都返回S_OK,但問題依然存在。 – user178379