我想在CEdit中首先设为只读,并内置一个文本:搜一搜。当点击CEdit时,在OnSetfocusEdit1()函数里,将“搜一搜”选中,并将编辑框置为可写。 m_ctrEdit1.SetSel(0,-1);
m_ctrEdit1.SetReadOnly(FALSE);但是全文选中没有效果,怎么办?

解决方案 »

  1.   

    This Code Worksclass CMyEdit:public CWindowImpl<CMyEdit,CEdit>
    {
    DECLARE_WND_SUPERCLASS(NULL,CEdit::GetWndClassName()) BEGIN_MSG_MAP(CMyEdit)
    MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
    END_MSG_MAP() LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
    SetSelAll();
    SetReadOnly(FALSE);
    bHandled=FALSE;
    return 1;
    }
    };查看MSDN,如果你截获了SETFOCUS消息,你就要处理光标的显示.
    所以请把光标的显示交给系统来做.
      

  2.   

    在CEdit自己的消息里面无法设置成功,但是在点击其他空间如按钮时,如何设置。
    void CButtonTestDlg::OnButton2() 
    {
    // TODO: Add your control notification handler code here
    m_ctrEdit1.SetSel(0, -1);
    m_ctrEdit1.SetReadOnly(FALSE);
    m_ctrEdit1.SetFocus();

    }