现下发现我的程序一个begue
         CHARFORMAT charformat;
long nStartChar,nEndChar;
Myedit.GetSel( nStartChar, nEndChar ) ;
if(nStartChar==nEndChar)
AfxMessageBox("你没有选择任何东西!");
else
{
Myedit.GetSelectionCharFormat(charformat);
charformat.dwEffects=CFE_STRIKEOUT;
Myedit.SetSelectionCharFormat(charformat);
}
按道理我改的是当前选定的字,但继续在这行里打字,strikeout的属性继续保持
我不知改怎么去掉它
另外charformat里的dwMask和dwEffect从msdn看好像没什么区别,它们的区别是什么

解决方案 »

  1.   

    一个笨方法,在OnKeyDown()中设置字体为默认(或你想要的字体),但这种方法很不好。我正在考虑用别的方法。
      

  2.   

    to eastrock:
    os 应该是支持的。我的问题只出现在当前行,且是当选定字到末尾,才发现这样的情况
    如果你有在crichecitctrl里这样成功的例子,能发一个给小弟吗?
    to romberg:
      有创意
    to 大家
      这种情况是为什么发生的?
      

  3.   

    to eastrock:
      谢谢你的代码,但和我自己的代码一样,有上述问题.
    我有一些新的发现:
      当我打完几个字,我选中这行,把它underline一下,用鼠标拖一下当前位子,发现后面还有大约一个字的空间.我按了空格,跳过这一个字的空间,再继续写,那再写的东西,任就保持原来的属性.
      我想这是问题的结症:我不跳过这个空间,我继续写的东西任就不在默认的字体范围里.而因为如此,才有上面的现象.
      现在的问题是怎么解决之?
        CEdit里好像没有这种情况.怪)