2013-02-15 82 views
2

我已經掃描了MSDN中的所有頁面,但仍未找到以下內容。約束編輯控件內容

  1. 最小字符編輯控件的長度。
  2. 指定編輯控件中輸入值的範圍。
  3. 僅在編輯控件中允許使用字母。
  4. 設置按鈕控件的工具提示。

請告訴我如何在Win32中執行此操作。

回答

5
  1. 這很難做得很好。一個天真的方法將處理WM_KEYDOWN消息來攔截退格鍵和刪除鍵(VK_BACKVK_DELETE)。但是,您還需要處理用戶選擇一些現有文本,然後刪除它(通過退格或刪除),剪切或替換(通過鍵入一個鍵或粘貼其他文本)。我不認爲這是值得的,即使你能做到這一點,當你打破所有這些正常行爲時,很可能會產生混淆。 (這也可能是非常令人討厭的,假設你在控件中有一些文本「欄」,但是你想把它改成「baz」,如果控件執行的最小長度爲3,那麼試圖回退最後一個字符如果你的控件需要一個最小長度,你最好在執行期間強制執行它,如果你的控件需要一個最小長度,那麼你最好在執行期間執行它。一個單獨的驗證步驟(例如用戶單擊確定按鈕或將焦點移至另一個控件時)並顯示相應的錯誤消息。

  2. 我不確定您的意思是隻允許將某些字符輸入到編輯控件中,還是要將其限制爲一個數值範圍。對於前者,請參閱3.

    如果要將值限制在某個數值範圍內,我再次建議在單獨的驗證步驟中進行此操作。否則,您可能會再次阻止用戶以正常方式插入和刪除字符。如果可以,請避免使用Edit控件並使用Trackbar(滑塊)控件。

  3. 您將不得不繼承編輯控件,處理WM_CHAR消息,並拒絕不需要的字符。您還需要處理WM_PASTE消息並執行類似的驗證。

  4. 這與編輯控件沒有任何關係,可能應該是一個單獨的問題。你有什麼嘗試?你讀過http://msdn.microsoft.com/en-us/library/bb760250.aspx