如何以编程方式追加到一个编辑控件的文本

文章翻译 文章翻译
文章编号: 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 将文本追加到编辑控件。应用程序发送到替换 lpszReplace (lParam) 参数所指定文本在编辑控件中的当前所选内容 EM_REPLACESEL 邮件。 因为当前没有选定内容在当前插入符号位置插入替换文本。本示例将所选内容设置为编辑控件的末尾,并将文本插入到缓冲区中:
   #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 消息之前必须将插入符号放置在使用 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 软件开发工具包 3.1
关键字:?
kbmt kbctrl kbeditctrl kbhowto KB109550 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 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