PDA

Просмотр полной версии : CSocket и RichEdit в MFC


LordNet
30.10.2006, 02:24
Как мне по сокету (CSocket) передать и принять все стили текста (шрифт,цвет и т.д.) c текстом из CRichEditCtrl?
Желательно показать примерчик.
Заранее спасибо!

sn0w
30.10.2006, 16:38
тк CSocket это не что иное как ооп-интерпретация стандартных виндовых сокетов, то тут в принципе все также как и в апи, просто нужно отправить буфер с основными характеристиками. например можно сделать структуру-описатель текста которая будет засылаться перед несущей строкой или после нее (сам решишь).

typedef struct _FONTDESCR{
// "магический" идентификатор
BYTE n_font_magic = 0x00;
// далее характеристики
char s_font_name[128];
int n_font_size;
int n_color;
int n_mode; // bold, italic, etc
//... + какие угодно параметры
}FONTDESCR;

магика нужна при приеме пакета, те если первый байт пакета будет равен 0 (строки наоборот завершаются нулем) то мы будем однозначно знать что это пакет не строка, а управляющий стиль.

char s_buff[4096];
int rc;
...
rc = recv( s, s_buff, sizeof(s_buff), 0 );
if(rc!=SOCKET_ERROR ){
if(s_buff[0]==0){
FONTDESCR *pDescr = (FONTDESCR*)&s_buff[0];
ProcessRichTextFormat(pDescr); // установка формата на строку
}else{
AddTextToRichEdit(s_buff); // просто добавление текста
}
}