我在一模态对话框里添加了RichEdit控件,并将该控制与变量str关联在对话框的框架函数中对str赋值了一个字符串以实现在控件里显示该字符串运行后就出现RichEdit控件里的字符串的内容被全选了,随便用鼠标点击一下,全选消失并出现闪烁的光标我现在就想实现运行后字符串的内容没有被全选,并且没有光标我通过control变量在对话框框架函数里对RichEdit控件进行设置,但运行出现“Assertion Failed”提示,估计是因为这时RichEdit控制还没有生成的原因吧因为是模态对话框,程序会卡在Domodel()那不动,怎么对控制的属性时行设置呢?难到非要用非模态对话框不成?

解决方案 »

  1.   

    你的对话框中只有一个RichEdit控件吗?
      

  2.   

    最后一句话有点笔误,我是想问怎么对RichEdit控件进行设置?因为取消全选和隐藏光标这两项在资源管理中的控件属性里找不到
      

  3.   

    OnInitDialog里return false试试
      

  4.   

    没有这样两个属性给你设置,因为你的对话框中只有这一个控件,所以焦点就在你的CRichEditCtrl上,取消全选很简单调用CRichEditCtrl::SetSel(-1, -1);就可以,但是要隐藏Caret比较麻烦
      

  5.   


    我是想用SetSel(-1, -1),但运行时提示“Assertion Failed”,我在对话框框架函数里调用的SetSel函数
      

  6.   

    在你的子对话框的OnInitDialog中调用
      

  7.   


    我按照你说的方式调用后果然不出现“Assertion Failed”提示了,但是我发现运行后文本仍然是全选状态我用GetSel发现是因为在OnInitDialog运行结束时文本还没有被全选这下悲剧了,文本全选看来是在Domodel这个函数里弄的,这可怎么改?
      

  8.   

    OnInitDialog里
    m_reTest.SetWindowText(_T("test"));
    m_reTest.SetFocus();
    m_reTest.SetSel(0, 0);
    return false;
      

  9.   

    关于隐藏光标
    你看看这个
    http://topic.csdn.net/t/20030423/14/1698092.html
      

  10.   


    历害!总结一下:
    估计是因为焦点不在控件上,导致文本被全选,因此SetFocus()配合return false使焦点在控件上就完美解决
    根据试验,SetSel可不要