Элемент управления «Поле ввода» имеет ограничения, допускающие вставку текста. - PullRequest
0 голосов
/ 19 октября 2018

Мой ноутбук представляет собой 64-разрядную версию HP Zbook17 под управлением Windows 2017 Professional.Я разрабатываю приложения для Win32 с использованием VS 2015 Express C ++.Я заметил, что поле редактирования, открытое следующим кодом

      hEdit[k] = CreateWindow(
          WC_EDIT
        , L""
        , WS_CHILD | WS_OVERLAPPED | WS_VISIBLE | WS_BORDER | ES_MULTILINE | 
                                                        ES_WANTRETURN    
         , posEdit[4*k+0], posEdit[4*k+1], posEdit[4*k+2], posEdit[4*k+3]
        , hDlg
        , (HMENU)NULL  
        , hInst
        , NULL
        );

, имеет некоторые ограничения в обработке ввода, вставленного из приложения текстового редактора или из Word.Это:

(1) Если текст содержит символ '\ n' или слишком длинный (т. Е.> 800 байт), окно редактирования будет кратко мигать вставленным текстом, а затем возвращается к пустому.
(2) Если в противном случае вставляемый текст содержит символ апостроф (0x92), в окне редактирования будет отображаться весь текст до этой точки.

Как мне исправить или обойти эти ограничения?

ASIDE:

У меня есть подпрограмма, которая отмывает текстовую строку, чтобы избавиться от этих проблемных функций (например, заменить экземпляры)0x92 с 0x27), но не нашли способа включить его в мои приложения.Сообщение WM_CHAR никогда не выдается, и VS 2015 Express, по-видимому, не может скомпилировать какой-либо предлагаемый онлайн-метод для извлечения текста из буфера обмена.

Если я отмываю текст извне и вставляю только один абзац за раз, все работает нормально.

1 Ответ

0 голосов
/ 19 октября 2018

Не уверен, является ли это окончательным ответом на мой собственный вопрос, но я заметил, что добавление WS_VSCROLL устранило все ограничения, с которыми я столкнулся.
Пока я скрещиваю пальцы.

...