CSocket и RichEdit в MFC

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by LordNet, 30 Oct 2006.

  1. LordNet

    LordNet Elder - Старейшина

    Joined:
    7 Feb 2006
    Messages:
    10
    Likes Received:
    9
    Reputations:
    2
    Как мне по сокету (CSocket) передать и принять все стили текста (шрифт,цвет и т.д.) c текстом из CRichEditCtrl?
    Желательно показать примерчик.
    Заранее спасибо!
     
  2. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,297
    Reputations:
    327
    тк 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); // просто добавление текста
    }
    }
     
    1 person likes this.