如何與目前的選擇互動
用戶可以使用滑鼠或鍵盤,在豐富的編輯控制項中選取文字。 目前選取範圍是選取字元的範圍,如果沒有選取任何字元,則為插入點的位置。 應用程式可以取得目前選取的相關資訊、加以設定、判斷何時變更,以及顯示或隱藏選取物件的醒目提示。
您需要知道的事項
技術
先決條件
- 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 來尋找選取範圍的開始和結束字元。
相關主題