CRichEditCtrl的简单使用

一、创建

可以在工具箱中找到添加,也可以使用Create函数创建

MyRichEditCtrl::public CRichEditCtrl自定义类继承CRichEditCtrl

MyRichEditCtrl m_RichEditCtrl;

m_RichEditCtrl.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE,    CRect(5,5,900, 745), this, IDC_RICHEDIT);

 注意点:

实现多行输入:用ES_MULTILINE,或者在控件属性中的样式|4。

初始化控件调用环境:在工程的app.cpp中的InitInstance()调用AfxInitRichEdit5();

二、字体尾行输入及颜色变化

int MyRichEditCtrl::AppendTextAndScroll(string strTemp, COLORREF color)
{
    CHARFORMAT cf;
    GetSelectionCharFormat(cf); //当前选定内容中的字符格式设置属性
    cf.cbSize = sizeof(CHARFORMAT);
    cf.dwMask |= CFM_COLOR;//crTextColor 和 dwEffects 的CFE_AUTOCOLOR值有效。
    cf.dwEffects &= ~CFE_AUTOCOLOR;//弃掉这个属性字体颜色才会有变化
    cf.crTextColor = color; //RGB(255,0,0)格式
    int ilen = GetWindowTextLength();//获取字体长度
    SetSel(ilen, -1);//设置选定区域
    SetSelectionCharFormat(cf);把选定区域的字体颜色改变

    if (strTemp.length() > 96) //字符太长,难看进行换行处理
    {
        string  str;
        while (strTemp.length() > 93)
        {
            str += strTemp.substr(0, 93) + "\r\n";
            strTemp = strTemp.substr(93);
        }
        str += strTemp;
        strTemp = str;
    }

    ReplaceSel(CString(strTemp.c_str()));//把选定区域字符串替换
    PostMessage(WM_VSCROLL, SB_BOTTOM, 0);//发消息把垂直滚动条拉到底部
    return 0;
}

三、鼠标滚轮滑动,控件光标能上下移动

BEGIN_MESSAGE_MAP(MyRichEditCtrl, CRichEditCtrl)
    ON_WM_MOUSEWHEEL()//在此加上鼠标滚轮事件
END_MESSAGE_MAP()

声明鼠标滚轮操作函数

afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);

实现鼠标滚轮操作函数:

BOOL MyRichEditCtrl::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    BOOL bUp = TRUE;//滚轮滚动方向上或下
    int nDelta = zDelta;//滚轮滚动数值
    if (zDelta < 0)//向下负数,一般120为一键值
    {
        bUp = FALSE;
        nDelta = -zDelta;
    }

    //当前滚轮转动时,获取屏幕滚动的行数 

    UINT nWheelScrollLines = 0;
    ::SystemParametersInfo(SPI_GETWHEELSCROLLLINES,0,&nWheelScrollLines,0);

    //行数*键值/标准键值得到真正的行数

   int nLines = (nDelta * nWheelScrollLines) / WHEEL_DELTA;
    while (nLines--) 
    {

        //一行行的发送消息进行滚动
        SendMessage(WM_VSCROLL, bUp ? SB_LINEUP : SB_LINEDOWN, 0);
    }
    return CRichEditCtrl::OnMouseWheel(nFlags, zDelta, pt);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值