Как программное добавление элемента управления редактирования текста

Переводы статьи Переводы статьи
Код статьи: 109550 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

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, должен быть помещен курсор в конец текст элемента управления редактирования, используя сообщение 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 - Последний отзыв: 1 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Windows Software Development Kit 3.1
Ключевые слова: 
kbctrl kbeditctrl kbhowto kbmt KB109550 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:109550

Отправить отзыв

 

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