Re[3]: CRichEdit и разрыв страницы?
От: Carc Россия https://vk.com/gosha_mazov
Дата: 24.06.13 10:32
Оценка:
K>Спасибо, Егор. Вы уже не раз меня выручаете в различных вопросах. Мне необходимо было в RichEdit'е склеить несколько RTF файлов (каждый файл необходимо вывести с новой страницы) и результат необходимо сохранить в RTF.
K>Я в принципе уже немного по другому решил этот вопрос с помощью калбека.
K>
K>static DWORD CALLBACK 
K>PageBreakCallBack(DWORD dwCookie, LPBYTE lpBuffer, LONG lSize, LONG *plWrite)
K>{
K>  LONG c;
K>  char szString[] = "{\\rtf\\page \\par}\0";
  
K>  c = lSize;
K>  c = strlen(szString);
K>  if (*plWrite > c) 
K>  {
K>    strncpy((char*)lpBuffer, szString, c+1);
K>    *plWrite = c;
K>    return 0;
K>  } 
K>  else 
K>    return c;
K>}
K>


K>Ваш совет возьму на заметку для дальнешей модификации своего контрола

Приятный код. В принципе можно и так, и наверное эффективнее прямо в колбеке вставлять разрыв.
Но... Вообще-то RTF-формат подразумевает разные кодировки (ANSI, UTF8, UCS2). И соответственно, не уверен, что подобная вставка будет работать.

А вот если ручками класть RTF в контрол, то в перспективе все контроллируемо — от разпознавания формата входного RTF (там префикс в начале файла специфичный, не \rtf, а что-то вроде \rtfu что ли — но точно на память не помню). И соответственно выводить результирующий файл можем тоже в разной кодировке.

Но соответственно, стоит помнить что такое последовательное складывание РТФа в контрол запросто может приводить к неслабому оверхеду по использованию памяти. Конкретное решение я бы выбирал от параметров задачи — большие ли файлы, нужно ли поддерживать разные кодировки и.т.д.
Aml Pages Home
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.