如何 programatically 將文字附加到編輯控制項

文章翻譯 文章翻譯
文章編號: 109550 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

Windows 架構應用程式通常會使用編輯控制項來顯示文字。這些應用程式有時需要將文字附加至編輯控制項來取代現有文字的結尾。有兩個不同的方式,要在 Windows 中執行這項操作:
  • 使用 EM_SETSEL 和 EM_REPLACESEL 訊息。
  • 使用 EM_SETSEL 訊息與剪貼簿函式,來將文字附加至編輯控制項的緩衝區。

其他相關資訊

注意: 由於 EM_SETSEL 訊息的訊息參數是 32 位元版本與 16 位元版本之間不同,下列程式碼使用 Win32 巨集來決定在建置階段如果這是 16 位元或 32 位元應用程式。

EM_SETSEL 訊息來將文字選取的範圍放在 Windows 編輯控制項中。如果範圍的起始和結束字元位置會設定成相同的位置,進行沒有選取,並插入號可以放在該位置。將插入號置於 Windows 編輯控制項中文字的結尾,並將焦點設定為編輯控制項,執行下列動作:
   HWND hEdit = GetDlgItem (hDlg, ID_EDIT);
   int ndx = GetWindowTextLength (hEdit);
   SetFocus (hEdit);
   #ifdef WIN32
      SendMessage (hEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
   #else
      SendMessage (hEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
   #endif
一旦插入號會放在編輯控制項的結尾處,您可以使用 [EM_REPLACESEL 來將文字附加到編輯控制項。應用程式傳送 EM_REPLACESEL 訊息以 lpszReplace (lParam) 參數所指定的文字取代編輯控制項中目前的選取範圍。 因為沒有目前的選取範圍取代文字會在目前插入號位置插入。本範例將選取範圍設定為編輯控制項的結尾,並將文字插入緩衝區中:
   #ifdef WIN32
      SendMessage (hEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
   #else
      SendMessage (hEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
   #endif
      SendMessage (hEdit, EM_REPLACESEL, 0, (LPARAM) ((LPSTR) szBuffer));
				
編輯控制項中插入文字的另一個方法是使用 Windows 剪貼簿。如果應用程式已開啟剪貼簿或尋找方便開啟剪貼簿,並將文字複製到剪貼簿,然後它可以傳送 WM_PASTE 訊息到編輯控制項,將文字附加。當然任何已在剪貼簿中的資料將會遺失。

傳送 WM_PASTE 訊息之前, 插入號 (Caret) 必須放在使用 EM_SETSEL 訊息編輯控制項文字的結尾。下面是 「 虛擬 」 中,示範了如何實作這個方法的程式碼:
   OpenClipBoard () ;
   EmptyClipBoard() ;
   SetClipBoardData() ;

   #ifdef WIN32
      SendMessage (hEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
   #else
      SendMessage (hEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
   #endif
      SendMessage (hEdit, WM_PASTE,   0, 0L);
				
這個虛擬 」 程式碼將文字附加至編輯控制項的尾端。請注意,在 [剪貼簿資料必須以 CF_TEXT 格式。

屬性

文章編號: 109550 - 上次校閱: 2005年7月11日 - 版次: 1.3
這篇文章中的資訊適用於:
  • Microsoft Platform Software Development Kit-January 2000 Edition
  • Microsoft Windows Software Development Kit 3.1
關鍵字:?
kbmt kbctrl kbeditctrl kbhowto KB109550 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:109550
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com