Pascal92RT Ответов: 1

Включить HSCROLL-это richeditview в разделителе


Привет всем - у меня есть два сплиттера в ChildFrame: один горизонтальный и один вертикальный на первой половине горизонтальной панели.
if (!m_wndHSplitter.CreateStatic(this, 2, 1) ||
    !m_wndVSplitter.CreateStatic(&m_wndHSplitter, 1, 2) ||
    !m_wndVSplitter.CreateView(0, 0, RUNTIME_CLASS(CMysqlQueryEditView), CSize(0, 0), pContext) ||
    !m_wndVSplitter.CreateView(0, 1, RUNTIME_CLASS(CMysqlQueryTreeView), CSize(0, 0), pContext) ||
    !m_wndHSplitter.CreateView(1, 0, RUNTIME_CLASS(CMysqlQueryListView), CSize(0, 0), pContext))
  return FALSE;

Я использую RichEditView в левой панели вертикального разделителя и не могу заставить горизонтальную прокрутку работать должным образом. Я получаю только VSCROLL. Элемент управления переходит на новую строку при достижении конца видимого окна.

Что я уже пробовал:

1/ я удостоверяюсь, что cs.style установлен на
WS_HSCROLL | ES_AUTOHSCROLL | WS_VSCROLL | ES_AUTOVSCROLL | ES_MULTILINE;
в окне предварительного создания вида;
2/ я попытался снова установить стиль перед OnCreate представления;
3/ я попытался установить стиль в OnInitialUpdate с помощью ModifyStyle;
4/ и попытался также использовать контроль
GetRichEditCtrl().SetOptions(ECOOP_SET, ECO_NOHIDESEL | ECO_SAVESEL | ECO_AUTOVSCROLL | ECO_AUTOHSCROLL | ECO_AUTOWORDSELECTION | ECO_WANTRETURN);

5/ попытался заменить CMyRichEditView на CEditView в создании панели splitter, и все работает нормально, H &V прокручивается.

Есть идеи? Спасибо

1 Ответов

Рейтинг:
0

Richard MacCutchan

Он будет прокручиваться только в том случае, если пользователь вводит один набор символов, который шире окна. В противном случае он автоматически разрывает линии на границах слов, чтобы соответствовать ширине.


Pascal92RT

Спасибо, Ричард. Я не уверен, что понимаю, что вы имеете в виду или каково решение. Если я набираю один набор символов или разных слов, элемент управления прерывается в конце окна и переходит на новую строку

Richard MacCutchan

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

Pascal92RT

Нет, если я продолжу вводить один и тот же символ, он разорвет строку и начнет новую, без прокрутки

Richard MacCutchan

Это сработало правильно для меня.

Pascal92RT

Более того, я сделал тройную (или более :)) проверку документации, в которой говорится, что пользователь должен нажать клавишу Enter при использовании MULTILINE & AUTOHSCROLL, чтобы получить новую строку:

ES_MULTILINE
Если вы зададите стиль ES_AUTOHSCROLL, многострочный элемент управления edit автоматически прокручивается горизонтально, когда каретка проходит мимо правого края элемента управления. Чтобы начать новую строку, пользователь должен нажать клавишу ENTER. Если вы не зададите ES_AUTOHSCROLL, то при необходимости элемент управления автоматически переносит слова в начало следующей строки. Новая строка также запускается, если пользователь нажимает клавишу ENTER. Размер окна определяет положение Wordwrap. При изменении размера окна изменяется положение обертки слов, и текст воспроизводится повторно.