如何與目前的選取範圍互動
用戶可以使用滑鼠或鍵盤,在豐富的編輯控制項中選取文字。 目前的 選取 範圍是選取的字元範圍,如果沒有選取任何字元,則為插入點的位置。 應用程式可以取得目前選取範圍的相關信息、加以設定、判斷何時變更,以及顯示或隱藏選取專案醒目提示。
您需要知道的事項
技術
必要條件
- C/C++
- Windows 使用者介面程序設計
指示
與目前選取範圍互動
若要判斷豐富編輯控件中的目前選取範圍,請使用 EM_EXGETSEL 訊息。 若要設定目前的選取範圍,請使用 EM_EXSETSEL 訊息。 CHARRANGE 結構會同時搭配訊息使用,並指定字元範圍。 若要擷取目前選取範圍內容的相關信息,您可以使用 EM_SELECTIONTYPE 訊息。
應用程式可以藉由處理 EN_SELCHANGE 通知程式代碼來偵測目前選取範圍變更的時機。 通知程式代碼會指定包含 新選取範圍相關信息的SELCHANGE 結構。 只有在您使用 EM_SETEVENTMASK 訊息啟用此通知程式代碼時,豐富的編輯控件才會傳送此通知程式代碼。
根據預設,豐富的編輯控件會在取得並失去焦點時顯示並隱藏選取專案醒目提示。 您可以使用EM_HIDESELECTION訊息隨時顯示或隱藏選取專案醒目提示。 例如,應用程式可能會提供 [搜尋] 對話框,以在豐富的編輯控件中尋找文字。 應用程式可能會選取相符的文字,而不關閉對話框,在此情況下,它必須使用 EM_HIDESELECTION 訊息來反白顯示選取專案。
如同編輯控制項,您可以指定 ES_NOHIDESEL 視窗樣式,以防止豐富的編輯控件在失去焦點時隱藏選取範圍醒目提示。
除了使用EM_EXGETSEL和EM_EXSETSEL訊息,您可以使用EM_GETSEL和EM_SETSEL編輯控件訊息來擷取和設定目前的選取範圍。 EM_GETSEL訊息會將兩個16位字元索引封裝成其32位傳回值,因此僅適用於完全落在前64K內的選取範圍。 不過,除非您使用EM_LIMITTEXT或EM_EXLIMITTEXT訊息來擴充此限制,否則豐富的編輯控件永遠不會包含超過 32K 個字元的文字。 對於超過前 64 KB 文字的選取範圍, EM_GETSEL 訊息會傳回 –1。 在這種情況下,您仍然可以使用 wParam 和 lParam 中傳回的值來尋找選取範圍的開始和結束字元。
相關主題