Мой ноутбук представляет собой 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, по-видимому, не может скомпилировать какой-либо предлагаемый онлайн-метод для извлечения текста из буфера обмена.
Если я отмываю текст извне и вставляю только один абзац за раз, все работает нормально.