Добавить форматирование в поле Richtext

У меня есть богатый элемент управления для редактирования, и я хочу добавить в него форматированный текст, но он не работает:

const char* str="{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard\
This is some {\b bold} text.\par\
}";
LoadLibrary("riched32.dll");

HWND hEdit= CreateWindowEx(WS_EX_CLIENTEDGE, RICHEDIT_CLASS, str,
WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL
| ES_READONLY, 0, 0, 100, 100,
hwnd, (HMENU) IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);

Я знаю, что могу добавить форматирование, используя PARAFORMAT а также CHARFORMAT и отправка сообщения в элемент управления следующим образом:

PARAFORMAT pf;
CHARFORMAT cf;

memset( &cf, 0, sizeof cf );
cf.cbSize = sizeof cf;
cf.dwMask = CFM_BOLD;
cf.dwEffects = CFE_BOLD;
SendMessage( hEdit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf);
SendMessage( hEdit, EM_REPLACESEL, FALSE, (LPARAM) "bold ");

Но как я могу заставить работать первый или, если нет пути, есть ли более простой метод, чем второй? Заранее спасибо.

1

Решение

Богатые элементы управления редактированием не будут принимать RTF так, как вы пытаетесь в первом блоке кода. Чтобы получить RTF в контроль, вы должны использовать ES_STREAMIN сообщение.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]