Собственно, сабж. Под ставкой подразумевается вставляемый в него текст.
По умолчанию командой AddString текст вставляется в конец списка (каждый раз на новой строке). Подскажите пожалуйста, каким образом заставить многострочный EditBox прокручиваться? Заранее благодарю.
Re: Как заставить EditBox прокручиваться вслед за вставкой?
Здравствуйте, bugpiper, Вы писали:
B>По умолчанию командой AddString текст вставляется в конец списка (каждый раз на новой строке). Подскажите пожалуйста, каким образом заставить многострочный EditBox прокручиваться? Заранее благодарю.
Смотрите в сторону EM_SCROLL/EM_SCROLLCARET.
[ posted via RSDN@Home 1.2.0 alpha r746, accompanied by silence ]
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Смотрите в сторону EM_SCROLL/EM_SCROLLCARET.
Сорри, хочу уточнить, ибо не так поняли.
При вставке текста, количество строк которого превышает высоту (в строках) EditBox-а, по умолчанию бегунок остаётся на месте. Вот, я мучаюсь, пытаясь найти решение, чтоб бегунок автоматически перескакивал в конец полосы прокрутки.
Помогите найти решение. Спасибо.
Re[3]: Как заставить EditBox прокручиваться вслед за вставко
Здравствуйте, bugpiper, Вы писали: B>Сорри, хочу уточнить, ибо не так поняли. B>При вставке текста, количество строк которого превышает высоту (в строках) EditBox-а, по умолчанию бегунок остаётся на месте. Вот, я мучаюсь, пытаясь найти решение, чтоб бегунок автоматически перескакивал в конец полосы прокрутки. B>Помогите найти решение. Спасибо.
1. создаете класс-наследник от CEdit, например CMyEdit.
2. используете его вместо того CEdit который вы использовали. Если вы получали CEdit через GetDlgItem, придется от этого отказаться и либо создать его самому через Create либо через DDX (класс-визард) создать переменную
3. в своем CMyEdit переопределяете виртуальную функцию (add virtual function):
LRESULT CMyEdit::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base classif (message == WM_PASTE)
{
LineScroll( GetLineCount() );
}
return CEdit::DefWindowProc(message, wParam, lParam);
}
типа работает
Re: Как заставить EditBox прокручиваться вслед за вставкой?
От:
Аноним
Дата:
17.09.07 10:37
Оценка:
Исправлено форматирование текста. — SchweinDeBurg
Здравствуйте, bugpiper, Вы писали:
B>Собственно, сабж. Под ставкой подразумевается вставляемый в него текст. B>По умолчанию командой AddString текст вставляется в конец списка (каждый раз на новой строке). B>Подскажите пожалуйста, каким образом заставить многострочный EditBox прокручиваться? Заранее благодарю.
Вот моя функция:
//**************************************
//** Добавить сообщение в протокол. **
//**************************************
//* Параметр: *
//* MessageString-текстовое сообщение. *
//**************************************
//* Возврат: нет значений. *
//**************************************void CServArchiveDlg::AddMessageToLog(LPCSTR MessageString)
{
int LineCount; // количество строк в поле для результатов работы
//*****if(lstrlen(MessageString)==0) // пустое сообщениеreturn;
//endif
UpdateData(); // прочитать введенные значенияif(!m_ReportBox.IsEmpty()) // протокол не пустой
m_ReportBox += "\r\n";
//endif
m_ReportBox += MessageString; // добавить сообщение в протокол
UpdateData(FALSE); // вывести значения в поля диалога
CEdit* ReportEdit=(CEdit*)GetDlgItem(IDC_EDIT_REPORT);
LineCount=ReportEdit->GetLineCount();
ReportEdit->LineScroll(LineCount);
//*****
}
В h-файле надо:
CString m_ReportBox; // поле для результатов работы
"bugpiper" <69126@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:2657462@news.rsdn.ru... > Здравствуйте, SchweinDeBurg, Вы писали: > > SDB>Смотрите в сторону EM_SCROLL/EM_SCROLLCARET. > > Сорри, хочу уточнить, ибо не так поняли. > При вставке текста, количество строк которого превышает высоту (в строках) EditBox-а, по умолчанию бегунок остаётся на месте. Вот, я мучаюсь, пытаясь найти решение, чтоб бегунок автоматически перескакивал в конец полосы прокрутки. > Помогите найти решение. Спасибо.
SendMessage(hwndEdit, EM_SETSEL,-1,0); это и каретка уйдет в конец кода
. + заморочки на старых RichEdit вроде версии 2.0 — это может привести к выделению ВСЕГО текста (в новых все в порядке)