Help!!! Досовский текст в RichEdit.
Первый способ через Windows API:
TCharFormat RichTextFormat;
RichTextFormat.cbSize = sizeof(TCharFormat);
RichTextFormat.dwMask = -402653181;
RichTextFormat.yOffset = 0;
RichTextFormat.crTextColor = ;// цвет
RichTextFormat.yHeight = ; // размер
RichTextFormat.bCharSet = 255;
RichTextFormat.dwEffects = 0;
strcpy(RichTextFormat.szFaceName, "");
//то-есть переменная содержащая имя фонта ОБЯЗАТЕЛЬНО должна содержать
//NULL. (в windows только один oem font: Terminal, но он не True Type
//поэтому он коряво масштабируется )
if (RichTextFormat.szFaceName[0] == '\0')
{
RichTextFormat.bPitchAndFamily = FF_MODERN;
}
else
RichTextFormat.bPitchAndFamily = DEFAULT_PITCH;
SendMessage(RichEdit->Handle, EM_SETCHARFORMAT,
SCF_ALL && SCF_SELECTION, LPARAM(&RichTextFormat));
SendMessage(RichEdit->Handle, EM_SETCHARFORMAT,
0, LPARAM(&RichTextFormat));
Что мне теперь сделать чтобы изменения вступили в силу???
RedrawWindow (...), UpdateWindow (...), RichEdit->Repaint(), не помогают,
но если вставить этот кусок кода в событие OnCreate, то всё срабатывает превосходно, только не пересоздавать же форму каждый раз :((((((((
Ещё можно сделать так:
RichEdit->DefAttributes->Name = "";
RichEdit->DefAttributes->Charset = 255;
RichEdit->DefAttributes->Pitch = fpFixed;
но последняя строка не срабатывает и символы в RichEdit получаются разной длины, пробелы оказываются ужасно короткими и весь текст офигенно съезжает влево.
Помогите кто-нибудь плиз!!!!!!!!!!!!
Я с этим тоже намучался. В конце концов применил такое решение: исходный текст преобразовываю к виду RTF, размечая его при этом, как нужно, и уже RTF загружаю в RichEdit. Программируется несложно, работает быстро.
ну и поработать с CreateParams для твоего Edita
(не проверял)