RichEdit设置完选择字体信息后,再次输入时,刚设置的字体样式残留

WL_river 2010-03-03 11:27:43

RichEdit中设置完选择的字体颜色、粗体等信息后,重新输入时,新输入的字体还是刚刚设置的字体样式(还有颜色、粗体等),没有恢复成默认的字体样式
...全文
164 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
WL_river 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 gdstcwl 的回复:]

引用 10 楼 wl_river 的回复:
引用 7 楼 gdstcwl 的回复:
先取得原来的输入格式,设置完了以后再把原来的字体格式设置回去
谢谢你的回答,这种方法我试过的,不行。


我用过了,可以的~

C/C++ code
SetSelectionCharFormat(cf);
SetWordCharFormat(cf);
[/Quote]
vs2005 ,xp3下,不知什么原因,你的方法在我这边没有成功。谢谢各位回帖!
gdstcwl 2010-03-10
  • 打赏
  • 举报
回复
引用 10 楼 wl_river 的回复:
引用 7 楼 gdstcwl 的回复:
先取得原来的输入格式,设置完了以后再把原来的字体格式设置回去
谢谢你的回答,这种方法我试过的,不行。


我用过了,可以的~

SetSelectionCharFormat(cf);
SetWordCharFormat(cf);
Allen_zhang 2010-03-09
  • 打赏
  • 举报
回复
你需要重新设置回原来默认的
WL_river 2010-03-09
  • 打赏
  • 举报
回复
引用 3 楼 s446721902 的回复:
SelectObject返回的就是上次的画笔吧
CPen *pOldPen = pDC->SelectObject (&m_newpen);

谢谢,但不是DC里面的字体设置,CRichEditCtrl::SetSelectionCharFormat 后字体样式滞留的问题。
WL_river 2010-03-09
  • 打赏
  • 举报
回复
目前我的解决字体样式滞留的方法是:
CRichEditCtrl::OnChar中:

CString strInput, strInputOri;

GetWindowText(strInput);
// reset text to clear up residual selecting font appearance
SetWindowText(strInput);
// keep cursor at the ending of texts
if (strInput.IsEmpty())
{
SetSel(0, 0);
}
else
{
SetSel(strInput.GetLength(), strInput.GetLength());
}

希望有更好的解决方法!
WL_river 2010-03-09
  • 打赏
  • 举报
回复
引用 6 楼 finder_zhang 的回复:
要有代码才好说,要先选择好你要设字体的内容,然后再设字体的.
具体是先 SetSel ,再 SetSelectionCharFormat
如果你之后再次输入的地方又不在你之前 SetSel 的范围内,则字体还是之前默认的字体了.

谢谢,按照你的说法,再次输入时是不是先要把setsel的范围修改?
WL_river 2010-03-09
  • 打赏
  • 举报
回复
引用 7 楼 gdstcwl 的回复:
先取得原来的输入格式,设置完了以后再把原来的字体格式设置回去

谢谢你的回答,这种方法我试过的,不行。
finder_zhang 2010-03-09
  • 打赏
  • 举报
回复
7楼说的是,我也是取原来的字体,改一下要改的地方,再设回去的.
finder_zhang 2010-03-09
  • 打赏
  • 举报
回复
如果要全部改字体,可以试下面代码,我自己的软件里也是用这个的.
m_CRECharInput 是一个 CRichEditCtrl 的实例

CHARFORMAT cf;
m_CRECharInput.SetSel(0,-1);
m_CRECharInput.GetSelectionCharFormat(cf);
CFont font;
strcpy(cf.szFaceName,"宋体");
font.CreatePointFont(80,"宋体");
LOGFONT lf;
font.GetLogFont(&lf);
cf.dwMask = 0xf800003f;
cf.bCharSet = lf.lfCharSet;
cf.crTextColor = RGB(0,0,0);
cf.bPitchAndFamily = lf.lfPitchAndFamily;
m_CRECharInput.SetSelectionCharFormat(cf);
gdstcwl 2010-03-09
  • 打赏
  • 举报
回复
先取得原来的输入格式,设置完了以后再把原来的字体格式设置回去
finder_zhang 2010-03-09
  • 打赏
  • 举报
回复
要有代码才好说,要先选择好你要设字体的内容,然后再设字体的.
具体是先 SetSel ,再 SetSelectionCharFormat
如果你之后再次输入的地方又不在你之前 SetSel 的范围内,则字体还是之前默认的字体了.
s446721902 2010-03-03
  • 打赏
  • 举报
回复
SelectObject返回的就是上次的画笔吧
CPen *pOldPen = pDC->SelectObject (&m_newpen);
s446721902 2010-03-03
  • 打赏
  • 举报
回复
你字体用完之后恢复下原来的字体就可以了
SiGoYi 2010-03-03
  • 打赏
  • 举报
回复
帮顶!!!!!!!!!!!!!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧