在edit控件的属性里有一个ES_NOHIDESEL,必须设此属性

解决方案 »

  1.   

    kalling(kalling) 
    我不是这个意思哦,我是想当edit获得焦点的时候使所有文本被选中,以方便用户输入。
    但我用setsel(0,-1)以后,文本却没有被选中的状态显示,不知道怎么办。
      

  2.   

    不用任何设置,也不用SetSel
    当按tab键使edit控件获得焦点时,文本就已经被选中而且反白显示了,
    但用鼠标使edit控件获得焦点时,用了SetSel也还不行
      

  3.   

    用鼠标双击edit控件,自然就选中了,而且反白显示,
      

  4.   

    sel以后是否应paint一下?
    要不发送EM_SETSEL消息
      

  5.   

    拜托先选中。 ((CEdit *) GetDlgItem( IDC_EDIT1) )->SetFocus();
    ((CEdit *) GetDlgItem( IDC_EDIT1) )->SetSel( 0 , -1 );
      

  6.   

    qiaojiannan(JNQ) 
    我是在响应了EN_SETFOCUS 消息后调用的m_editctrl.SetSel(0,-1);
    这有问题吗,我再试试,先谢了
      

  7.   

    我知道哪里出问题了
    当你用鼠标左击时,先执行OnSetFocus,然后选中,没有错,但这之后由于你是左击,所以又变成了选择插入点的操作,这又使得selection消失,(因为在一个edit中左击会使selection消失),换成右击就对了。
    不过我有一个办法:
    在OnSetFocus()里面,SetTimer(1,100,NULL),启动一个timer,100毫秒之后(在处理完左击后)再把edit进行选择,响应WM_TIMER消息,在OnTimer()里,m_edit.SetSel(0,-1);KillTimer(1);
    我已经试过了,完全可行,给分吧!
      

  8.   

    kalling(kalling)
    =) 确实是这样,哎,我真是缺乏分析问题的能力啊。
    对了,能留下 email或qq吗, 
      

  9.   

    从CEdit派生一个CMyEdit类
    添加一个int JustFocused成员变量
    CMyEdit::CMyEdit()
    {
    JustFocused=0;
    }
    void CMyEdit::OnSetFocus(CWnd* pOldWnd) 
    {
    CEdit::OnSetFocus(pOldWnd);

    // TODO: Add your message handler code here
    JustFocused=1;
    }
    void CMyEdit::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    CEdit::OnLButtonUp(nFlags, point);
    if(JustFocused)
    {
    this->SetSel(0,-1);
    JustFocused=0;
    }
    }然后在你的Dlg中添加一个成员变量CMyEdit m_edit1;
    在initialDlg中加入
    m_edit1.SubClassDlgItem(IDC_EDIT1,this);好了,这个edit就具有了“自动”全选功能,不需要timer,毕竟timer资源有限
      

  10.   

    不好意思,没看到
    gameboy999(什么才是对的?) 的做法比我的好
    To:coolxiao,你在vc版找我就可以了,我每天都上的