Re: CRichEditCtrl автоматический перенос
От: Carc Россия http://www.amlpages.com/home.php
Дата: 04.11.09 14:26
Оценка: 3 (1)
" Аноним 47 " <0@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:3590304@news.rsdn.ru...
> Привет!
>
> Столкнулся с такой проблемой:
>
> 1) Создаю CRichEditCtrl с параметрами -> WS_HSCROLL | WS_VSCROLL | WS_BORDER | WS_TABSTOP | WS_CHILD | ES_MULTILINE | ES_READONLY
> 2) делаю SetWindowText со длинной строкой, от 4000 чаров.
> 3) CRichEditCtrl разбивает эту строку непонятным образом, делает переносы (где ему вздумается) и вместо одной строки рисует 2 и более.
>
> Нужно:
> 1) писать длинные строки в CRichEditCtrl полностью;
> или в крайнем случае:
> 2) конролируемый перенос, скажем максимальная длина строки — 2000 и всё, что за ней переносится на следующие строки автоматом (без писанины кода).
>
> Подскажите, пожалуйста, как это сделать быстро и просто?

Можно отключить мягкий перенос строк

void CBaseRichEditView::ShowHorzBar(const bool bShow)
{
#ifndef EM_SHOWSCROLLBAR
enum {EM_SHOWSCROLLBAR=WM_USER+96};
#endif

CRichEditCtrl& rich=GetRichEditCtrl();
ASSERT(IsWindow(rich.GetSafeHwnd()));
rich.SendMessage(EM_SHOWSCROLLBAR,SB_HORZ,true == bShow);

CRect r(0,0,0,0);
GetWindowRect(&r);
SetWindowPos(NULL,0,0,r.Width()-1,r.Height()-1,SWP_NOMOVE|SWP_NOREDRAW|SWP_FRAMECHANGED);
SetWindowPos(NULL,0,0,r.Width(),r.Height(),SWP_NOMOVE);
}
bool CBaseRichEditView::SetWrapMode(const bool bWrap)
{
CRichEditCtrl& rich=GetRichEditCtrl();
ASSERT(IsWindow(rich.GetSafeHwnd()));

//#ifndef EM_SHOWSCROLLBAR
// enum {EM_SHOWSCROLLBAR=WM_USER+96};
//#endif

if (!bWrap) {
rich.SetTargetDevice(NULL,1);
// rich.SendMessage(EM_SHOWSCROLLBAR,SB_HORZ,TRUE);
ShowHorzBar(true);
}
else {
//rich.SendMessage(EM_SHOWSCROLLBAR,SB_HORZ,FALSE);
ShowHorzBar(false);
rich.SetTargetDevice(NULL,0);
}

m_bWrapMode=bWrap;

CRect r(0,0,0,0);
GetWindowRect(&r);
SetWindowPos(NULL,0,0,r.Width()-1,r.Height()-1,SWP_NOMOVE|SWP_NOREDRAW|SWP_FRAMECHANGED);
SetWindowPos(NULL,0,0,r.Width(),r.Height(),SWP_NOMOVE);

return true;
}

соответственно юзаем так SetWrapMode(false);
Posted via RSDN NNTP Server 2.1 beta
Aml Pages Home
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.