C++ mfc richedit2格式

C++ mfc richedit2格式,c++,mfc,formatting,richedit-control,C++,Mfc,Formatting,Richedit Control,我正在尝试使用富编辑控件在屏幕上输出一些文本: 周一按1。 你的一天是星期一 周二按2 我真的找不到任何简单的例子来说明如何做到这一点。我所能做的就是设置窗口文本(setWindowText),但其他一切都让我不知所措。 有简短的例子吗?使用写字板,它也是一个RichEdit控件。它将以与控件自然兼容的方式生成RTF。使用写字板,它也是一个RichEdit控件。它将以一种与控件自然兼容的方式生成RTF。尽管有这些评论,我还是要回答您提出的关于如何在富编辑控件中格式化数据的问题。几年前,我不得不这

我正在尝试使用富编辑控件在屏幕上输出一些文本:

周一按1。
你的一天是星期一 周二按2

我真的找不到任何简单的例子来说明如何做到这一点。我所能做的就是设置窗口文本(setWindowText),但其他一切都让我不知所措。
有简短的例子吗?

使用写字板,它也是一个RichEdit控件。它将以与控件自然兼容的方式生成RTF。

使用写字板,它也是一个RichEdit控件。它将以一种与控件自然兼容的方式生成RTF。

尽管有这些评论,我还是要回答您提出的关于如何在富编辑控件中格式化数据的问题。几年前,我不得不这样做,并且想出了一些我可以像IOstream一样对待的东西(如果我今天这样做,我可能会做得有点不同,但这就是生活)

首先,编写代码,使其像IOstream一样工作,但写入丰富的编辑控件:

// rich_stream.h:
#ifndef RICH_STREAM_H
#define RICH_STREAM_H

class rich_stream { 
    CRichEditCtrl &ctrl;
public:
    rich_stream(CRichEditCtrl &ctrl_) : ctrl(ctrl_) { }

    void add_text(char const *txt) {
        ctrl.SetSel(-1,-1);
        ctrl.ReplaceSel(txt);
    }

    void add_int(int val) {
        CString temp;
        temp.Format("%d", val);
        add_text(temp);
    }

    void set_char_format(CHARFORMAT &fmt) {
        ctrl.SetSelectionCharFormat(fmt);
    }    
};

inline rich_stream &operator<<(rich_stream &s, char const *t) {
    s.add_text(t);
    return s;
}

inline rich_stream &operator<<(rich_stream &s, CHARFORMAT &fmt) {
    s.set_char_format(fmt);
    return s;
}

inline CString nl() {
    return CString("\n\n");
}

inline rich_stream &operator<<(rich_stream &s, CString (*f)()) {
    s.add_text(f());
    return s;
}

inline rich_stream &operator<<(rich_stream &s, int val) {
    s.add_int(val);
    return s;
}
#endif
//rich\u stream.h:
#ifndef富水溪流
#定义富流
类富_流{
CRichEditCtrl&ctrl;
公众:
富流(CRICHEDITCRL&ctrl):ctrl(ctrl){
无效添加文本(字符常量*txt){
控制设定值(-1,-1);
ctrl.ReplaceSel(txt);
}
void add_int(int val){
CString温度;
临时格式(“%d”,val);
添加文本(临时);
}
无效集字符格式(字符格式和fmt){
ctrl.SetSelectionCharFormat(fmt);
}    
};

inline rich_stream&operator尽管有这些评论,我还是要回答您提出的问题,关于如何在rich Edit控件中格式化数据。几年前,我不得不这样做,并且想出了一些我可以像IOstream一样对待的东西(如果我今天这样做,我可能会做得有点不同,但这就是生活)

首先,编写代码,使其像IOstream一样工作,但写入丰富的编辑控件:

// rich_stream.h:
#ifndef RICH_STREAM_H
#define RICH_STREAM_H

class rich_stream { 
    CRichEditCtrl &ctrl;
public:
    rich_stream(CRichEditCtrl &ctrl_) : ctrl(ctrl_) { }

    void add_text(char const *txt) {
        ctrl.SetSel(-1,-1);
        ctrl.ReplaceSel(txt);
    }

    void add_int(int val) {
        CString temp;
        temp.Format("%d", val);
        add_text(temp);
    }

    void set_char_format(CHARFORMAT &fmt) {
        ctrl.SetSelectionCharFormat(fmt);
    }    
};

inline rich_stream &operator<<(rich_stream &s, char const *t) {
    s.add_text(t);
    return s;
}

inline rich_stream &operator<<(rich_stream &s, CHARFORMAT &fmt) {
    s.set_char_format(fmt);
    return s;
}

inline CString nl() {
    return CString("\n\n");
}

inline rich_stream &operator<<(rich_stream &s, CString (*f)()) {
    s.add_text(f());
    return s;
}

inline rich_stream &operator<<(rich_stream &s, int val) {
    s.add_int(val);
    return s;
}
#endif
//rich\u stream.h:
#ifndef富水溪流
#定义富流
类富_流{
CRichEditCtrl&ctrl;
公众:
富流(CRICHEDITCRL&ctrl):ctrl(ctrl){
无效添加文本(字符常量*txt){
控制设定值(-1,-1);
ctrl.ReplaceSel(txt);
}
void add_int(int val){
CString温度;
临时格式(“%d”,val);
添加文本(临时);
}
无效集字符格式(字符格式和fmt){
ctrl.SetSelectionCharFormat(fmt);
}    
};

inline rich_stream&Operator您是否尝试过在RTF中设置窗口文本?我尝试过通过word将预期输出转换为RTF。输出过多,以至于我无法使用它。理想情况下,我希望使用html格式在对话框上显示数据。可能吗?RichEdit不做HTML格式。使用诸如
IWebBrowser
(Trident/IE)之类的HTML控件进行此操作。@Jason:是的。摆脱richedit控件。将HTML放入一个文件中。在对话框中插入“Microsoft Web浏览器”控件(并将变量附加到该控件)。调用
您的浏览器控件。导航(“file://your_html_file.html");您是否尝试过在RTF中设置窗口文本?我尝试过通过word将预期输出转换为RTF。输出过多,以至于我无法使用它。理想情况下,我希望使用html格式在对话框上显示数据。可能吗?RichEdit不做HTML格式。使用诸如
IWebBrowser
(Trident/IE)之类的HTML控件进行此操作。@Jason:是的。摆脱richedit控件。将HTML放入一个文件中。在对话框中插入“Microsoft Web浏览器”控件(并将变量附加到该控件)。调用
您的浏览器控件。导航(“file://your_html_file.html");