原创 RichEdit 2.0 的字串闪烁

2008-7-23 16:26 6415 12 12 分类: 软件与OS
上位机软件需要做一个字串闪烁的提示功能,

于是我就想到了要用richedit的SetSel和ReplaceSel,
思路很简单,就是选中要闪烁的字符串,然后交替显示和消隐,

插入闪烁字串时记录插入位置与结束位置,我插在尾端,就用GetTextLength()取得,
试了半天,发现不行,debug跟踪发现是SetSel在捣鬼,
SetSel(min,max)在richedit 2.0中指个是字符个数,我的串中有中文,中文算是一个字符,
用GetTextLength取得是字节数(中文算两个),而SetSel要的是字符数(中文算一个),

google了一下,发下richedit 1.0这样做可以,但2.0 也没有提出解决办法,
没有快速办法,只好自己看看msdn,查了下用GetTextLengthEx(GTL_NUMCHARS)取插入位置,即可满足要求,

做闪烁不一定要做成动态删除插入,也可以做成动态选择与否,
选择显示的函数为:HideSelection

附实现函数:
    CHARRANGE pt;
    if(!flg) // flg 为0 时选中
    {   //当前richedit中的字符总数(汉字算一个)
        pt.cpMax = GetTextLengthEx(GTL_NUMCHARS);
        pt.cpMin = lastInsPos;// 插入时记下插入前的位置
        HideSelection(TRUE,FALSE);
    }
    else    // 不选中
    {
        pt.cpMax = GetTextLengthEx(GTL_NUMCHARS);
        pt.cpMin = lastInsPos;
        SetSel(pt.cpMin,pt.cpMax);
        HideSelection(FALSE,FALSE);
    }



文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条