代码之家  ›  专栏  ›  技术社区  ›  Johnny Mnemonic

向Richtext框添加格式

  •  1
  • Johnny Mnemonic  · 技术社区  · 11 年前

    我有一个丰富的编辑控件,我想在其中添加格式化文本,但它不起作用:

    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 回复  |  直到 11 年前
        1
  •  1
  •   DavidK    11 年前

    富编辑控件不会像您在第一个代码块中尝试的那样接受RTF。要将RTF输入控件,您需要使用 ES_STREAMIN 消息