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 что ли — но точно на память не помню). И соответственно выводить результирующий файл можем тоже в разной кодировке.
Но соответственно, стоит помнить что такое последовательное складывание РТФа в контрол запросто может приводить к неслабому оверхеду по использованию памяти. Конкретное решение я бы выбирал от параметров задачи — большие ли файлы, нужно ли поддерживать разные кодировки и.т.д.